]> granicus.if.org Git - postgresql/blobdiff - src/include/catalog/dependency.h
Basic foreign table support.
[postgresql] / src / include / catalog / dependency.h
index f615d45011e6c5e7ae2d273b9c21789f7f844e6e..c6ab313edf8c57691a6dce4eb2ceecbab39968c9 100644 (file)
@@ -4,10 +4,10 @@
  *       Routines to support inter-object dependencies.
  *
  *
- * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/catalog/dependency.h,v 1.38 2009/01/01 17:23:56 momjian Exp $
+ * src/include/catalog/dependency.h
  *
  *-------------------------------------------------------------------------
  */
@@ -15,6 +15,7 @@
 #define DEPENDENCY_H
 
 #include "nodes/parsenodes.h"  /* for DropBehavior */
+#include "catalog/objectaddress.h"
 
 
 /*
@@ -100,17 +101,6 @@ typedef enum SharedDependencyType
        SHARED_DEPENDENCY_INVALID = 0
 } SharedDependencyType;
 
-
-/*
- * The two objects related by a dependency are identified by ObjectAddresses.
- */
-typedef struct ObjectAddress
-{
-       Oid                     classId;                /* Class Id from pg_class */
-       Oid                     objectId;               /* OID of the object */
-       int32           objectSubId;    /* Subitem within the object (column of table) */
-} ObjectAddress;
-
 /* expansible list of ObjectAddresses (private in dependency.c) */
 typedef struct ObjectAddresses ObjectAddresses;
 
@@ -128,6 +118,7 @@ typedef enum ObjectClass
        OCLASS_CONVERSION,                      /* pg_conversion */
        OCLASS_DEFAULT,                         /* pg_attrdef */
        OCLASS_LANGUAGE,                        /* pg_language */
+       OCLASS_LARGEOBJECT,                     /* pg_largeobject */
        OCLASS_OPERATOR,                        /* pg_operator */
        OCLASS_OPCLASS,                         /* pg_opclass */
        OCLASS_OPFAMILY,                        /* pg_opfamily */
@@ -146,6 +137,8 @@ typedef enum ObjectClass
        OCLASS_FDW,                                     /* pg_foreign_data_wrapper */
        OCLASS_FOREIGN_SERVER,          /* pg_foreign_server */
        OCLASS_USER_MAPPING,            /* pg_user_mapping */
+       OCLASS_FOREIGN_TABLE,           /* pg_foreign_table */
+       OCLASS_DEFACL,                          /* pg_default_acl */
        MAX_OCLASS                                      /* MUST BE LAST */
 } ObjectClass;
 
@@ -173,6 +166,7 @@ extern void recordDependencyOnSingleRelExpr(const ObjectAddress *depender,
 extern ObjectClass getObjectClass(const ObjectAddress *object);
 
 extern char *getObjectDescription(const ObjectAddress *object);
+extern char *getObjectDescriptionOids(Oid classid, Oid objid);
 
 extern ObjectAddresses *new_object_addresses(void);
 
@@ -221,20 +215,23 @@ extern void recordSharedDependencyOn(ObjectAddress *depender,
                                                 ObjectAddress *referenced,
                                                 SharedDependencyType deptype);
 
-extern void deleteSharedDependencyRecordsFor(Oid classId, Oid objectId);
+extern void deleteSharedDependencyRecordsFor(Oid classId, Oid objectId,
+                                                                int32 objectSubId);
 
 extern void recordDependencyOnOwner(Oid classId, Oid objectId, Oid owner);
 
 extern void changeDependencyOnOwner(Oid classId, Oid objectId,
                                                Oid newOwnerId);
 
-extern void updateAclDependencies(Oid classId, Oid objectId,
-                                         Oid ownerId, bool isGrant,
+extern void updateAclDependencies(Oid classId, Oid objectId, int32 objectSubId,
+                                         Oid ownerId,
                                          int noldmembers, Oid *oldmembers,
                                          int nnewmembers, Oid *newmembers);
 
 extern bool checkSharedDependencies(Oid classId, Oid objectId,
-                                                                       char **detail_msg, char **detail_log_msg);
+                                               char **detail_msg, char **detail_log_msg);
+
+extern void shdepLockAndCheckObject(Oid classId, Oid objectId);
 
 extern void copyTemplateDependencies(Oid templateDbId, Oid newDbId);