diff options
author | Tom Lane | 2011-02-10 22:36:44 +0000 |
---|---|---|
committer | Tom Lane | 2011-02-10 22:37:22 +0000 |
commit | 01467d3e4f51fe304c0160c9895484ad696d1e87 (patch) | |
tree | 6ce04b83da1f5c472281b3970eab67e2b8fc0d6a /src/include | |
parent | 289d7306555b2446d145c7e098c91b6ca20bd54c (diff) |
Extend "ALTER EXTENSION ADD object" to permit "DROP object" as well.
Per discussion, this is something we should have sooner rather than later,
and it doesn't take much additional code to support it.
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/catalog/dependency.h | 3 | ||||
-rw-r--r-- | src/include/commands/extension.h | 2 | ||||
-rw-r--r-- | src/include/nodes/nodes.h | 2 | ||||
-rw-r--r-- | src/include/nodes/parsenodes.h | 5 |
4 files changed, 8 insertions, 4 deletions
diff --git a/src/include/catalog/dependency.h b/src/include/catalog/dependency.h index 4d7ff8853d1..eda41d69216 100644 --- a/src/include/catalog/dependency.h +++ b/src/include/catalog/dependency.h @@ -205,6 +205,9 @@ extern void recordDependencyOnCurrentExtension(const ObjectAddress *object); extern long deleteDependencyRecordsFor(Oid classId, Oid objectId, bool skipExtensionDeps); +extern long deleteDependencyRecordsForClass(Oid classId, Oid objectId, + Oid refclassId, char deptype); + extern long changeDependencyFor(Oid classId, Oid objectId, Oid refClassId, Oid oldRefObjectId, Oid newRefObjectId); diff --git a/src/include/commands/extension.h b/src/include/commands/extension.h index 8c07c3aaeff..7c94449a6cb 100644 --- a/src/include/commands/extension.h +++ b/src/include/commands/extension.h @@ -37,7 +37,7 @@ extern Oid InsertExtensionTuple(const char *extName, Oid extOwner, Datum extConfig, Datum extCondition, List *requiredExtensions); -extern void ExecAlterExtensionAddStmt(AlterExtensionAddStmt *stmt); +extern void ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt); extern Oid get_extension_oid(const char *extname, bool missing_ok); extern char *get_extension_name(Oid ext_oid); diff --git a/src/include/nodes/nodes.h b/src/include/nodes/nodes.h index 1ce97386315..15bf0631e44 100644 --- a/src/include/nodes/nodes.h +++ b/src/include/nodes/nodes.h @@ -356,7 +356,7 @@ typedef enum NodeTag T_SecLabelStmt, T_CreateForeignTableStmt, T_CreateExtensionStmt, - T_AlterExtensionAddStmt, + T_AlterExtensionContentsStmt, /* * TAGS FOR PARSE TREE NODES (parsenodes.h) diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h index 2116c94d0d3..b54f0cfe02f 100644 --- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.h @@ -1546,14 +1546,15 @@ typedef struct CreateExtensionStmt List *options; /* List of DefElem nodes */ } CreateExtensionStmt; -typedef struct AlterExtensionAddStmt +typedef struct AlterExtensionContentsStmt { NodeTag type; char *extname; /* Extension's name */ + int action; /* +1 = add object, -1 = drop object */ ObjectType objtype; /* Object's type */ List *objname; /* Qualified name of the object */ List *objargs; /* Arguments if needed (eg, for functions) */ -} AlterExtensionAddStmt; +} AlterExtensionContentsStmt; /* ---------------------- * Create/Drop FOREIGN DATA WRAPPER Statements |