1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /*-------------------------------------------------------------------------
- *
- * objectaddress.h
- * functions for working with object addresses
- *
- * Portions Copyright (c) 1996-2022, 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 PGDLLIMPORT 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 */
|