init
This commit is contained in:
89
db_include/catalog/objectaddress.h
Executable file
89
db_include/catalog/objectaddress.h
Executable file
@@ -0,0 +1,89 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* objectaddress.h
|
||||
* functions for working with object addresses
|
||||
*
|
||||
* Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* src/include/catalog/objectaddress.h
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef OBJECTADDRESS_H
|
||||
#define OBJECTADDRESS_H
|
||||
|
||||
#include "access/htup.h"
|
||||
#include "nodes/parsenodes.h"
|
||||
#include "storage/lockdefs.h"
|
||||
#include "utils/relcache.h"
|
||||
|
||||
/*
|
||||
* An ObjectAddress represents a database object of any type.
|
||||
*/
|
||||
typedef struct ObjectAddress
|
||||
{
|
||||
Oid classId; /* Class Id from pg_class */
|
||||
Oid objectId; /* OID of the object */
|
||||
int32 objectSubId; /* Subitem within object (eg column), or 0 */
|
||||
} ObjectAddress;
|
||||
|
||||
extern const ObjectAddress InvalidObjectAddress;
|
||||
|
||||
#define ObjectAddressSubSet(addr, class_id, object_id, object_sub_id) \
|
||||
do { \
|
||||
(addr).classId = (class_id); \
|
||||
(addr).objectId = (object_id); \
|
||||
(addr).objectSubId = (object_sub_id); \
|
||||
} while (0)
|
||||
|
||||
#define ObjectAddressSet(addr, class_id, object_id) \
|
||||
ObjectAddressSubSet(addr, class_id, object_id, 0)
|
||||
|
||||
extern ObjectAddress get_object_address(ObjectType objtype, Node *object,
|
||||
Relation *relp,
|
||||
LOCKMODE lockmode, bool missing_ok);
|
||||
|
||||
extern ObjectAddress get_object_address_rv(ObjectType objtype, RangeVar *rel,
|
||||
List *object, Relation *relp,
|
||||
LOCKMODE lockmode, bool missing_ok);
|
||||
|
||||
extern void check_object_ownership(Oid roleid,
|
||||
ObjectType objtype, ObjectAddress address,
|
||||
Node *object, Relation relation);
|
||||
|
||||
extern Oid get_object_namespace(const ObjectAddress *address);
|
||||
|
||||
extern bool is_objectclass_supported(Oid class_id);
|
||||
extern const char *get_object_class_descr(Oid class_id);
|
||||
extern Oid get_object_oid_index(Oid class_id);
|
||||
extern int get_object_catcache_oid(Oid class_id);
|
||||
extern int get_object_catcache_name(Oid class_id);
|
||||
extern AttrNumber get_object_attnum_oid(Oid class_id);
|
||||
extern AttrNumber get_object_attnum_name(Oid class_id);
|
||||
extern AttrNumber get_object_attnum_namespace(Oid class_id);
|
||||
extern AttrNumber get_object_attnum_owner(Oid class_id);
|
||||
extern AttrNumber get_object_attnum_acl(Oid class_id);
|
||||
extern ObjectType get_object_type(Oid class_id, Oid object_id);
|
||||
extern bool get_object_namensp_unique(Oid class_id);
|
||||
|
||||
extern HeapTuple get_catalog_object_by_oid(Relation catalog,
|
||||
AttrNumber oidcol, Oid objectId);
|
||||
|
||||
extern char *getObjectDescription(const ObjectAddress *object,
|
||||
bool missing_ok);
|
||||
extern char *getObjectDescriptionOids(Oid classid, Oid objid);
|
||||
|
||||
extern int read_objtype_from_string(const char *objtype);
|
||||
extern char *getObjectTypeDescription(const ObjectAddress *object,
|
||||
bool missing_ok);
|
||||
extern char *getObjectIdentity(const ObjectAddress *address,
|
||||
bool missing_ok);
|
||||
extern char *getObjectIdentityParts(const ObjectAddress *address,
|
||||
List **objname, List **objargs,
|
||||
bool missing_ok);
|
||||
extern struct ArrayType *strlist_to_textarray(List *list);
|
||||
|
||||
extern ObjectType get_relkind_objtype(char relkind);
|
||||
|
||||
#endif /* OBJECTADDRESS_H */
|
||||
Reference in New Issue
Block a user