summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorRobert Haas2011-11-18 02:31:29 +0000
committerRobert Haas2011-11-18 02:32:34 +0000
commitfc6d1006bda783cc002c61a5f072905849dbde4b (patch)
tree555ab6461e7780c0f5a5f21cc80b8f7f17eb844d /src/include
parent709aca59608395eef9ceb7dcb79fd9d03a0709ef (diff)
Further consolidation of DROP statement handling.
This gets rid of an impressive amount of duplicative code, with only minimal behavior changes. DROP FOREIGN DATA WRAPPER now requires object ownership rather than superuser privileges, matching the documentation we already have. We also eliminate the historical warning about dropping a built-in function as unuseful. All operations are now performed in the same order for all object types handled by dropcmds.c. KaiGai Kohei, with minor revisions by me
Diffstat (limited to 'src/include')
-rw-r--r--src/include/commands/defrem.h8
-rw-r--r--src/include/commands/proclang.h1
-rw-r--r--src/include/commands/trigger.h2
-rw-r--r--src/include/nodes/nodes.h8
-rw-r--r--src/include/nodes/parsenodes.h103
-rw-r--r--src/include/rewrite/rewriteRemove.h3
6 files changed, 4 insertions, 121 deletions
diff --git a/src/include/commands/defrem.h b/src/include/commands/defrem.h
index a466e2edb05..70d3a8fe021 100644
--- a/src/include/commands/defrem.h
+++ b/src/include/commands/defrem.h
@@ -61,7 +61,6 @@ extern Oid GetDefaultOpClass(Oid type_id, Oid am_id);
/* commands/functioncmds.c */
extern void CreateFunction(CreateFunctionStmt *stmt, const char *queryString);
-extern void RemoveFunction(RemoveFuncStmt *stmt);
extern void RemoveFunctionById(Oid funcOid);
extern void SetFunctionReturnType(Oid funcOid, Oid newRetType);
extern void SetFunctionArgType(Oid funcOid, int argIndex, Oid newArgType);
@@ -70,7 +69,6 @@ extern void AlterFunctionOwner(List *name, List *argtypes, Oid newOwnerId);
extern void AlterFunctionOwner_oid(Oid procOid, Oid newOwnerId);
extern void AlterFunction(AlterFunctionStmt *stmt);
extern void CreateCast(CreateCastStmt *stmt);
-extern void DropCast(DropCastStmt *stmt);
extern void DropCastById(Oid castOid);
extern void AlterFunctionNamespace(List *name, List *argtypes, bool isagg,
const char *newschema);
@@ -80,7 +78,6 @@ extern Oid get_cast_oid(Oid sourcetypeid, Oid targettypeid, bool missing_ok);
/* commands/operatorcmds.c */
extern void DefineOperator(List *names, List *parameters);
-extern void RemoveOperator(RemoveFuncStmt *stmt);
extern void RemoveOperatorById(Oid operOid);
extern void AlterOperatorOwner(List *name, TypeName *typeName1,
TypeName *typename2, Oid newOwnerId);
@@ -91,7 +88,6 @@ extern Oid AlterOperatorNamespace_oid(Oid operOid, Oid newNspOid);
/* commands/aggregatecmds.c */
extern void DefineAggregate(List *name, List *args, bool oldstyle,
List *parameters);
-extern void RemoveAggregate(RemoveFuncStmt *stmt);
extern void RenameAggregate(List *name, List *args, const char *newname);
extern void AlterAggregateOwner(List *name, List *args, Oid newOwnerId);
@@ -99,8 +95,6 @@ extern void AlterAggregateOwner(List *name, List *args, Oid newOwnerId);
extern void DefineOpClass(CreateOpClassStmt *stmt);
extern void DefineOpFamily(CreateOpFamilyStmt *stmt);
extern void AlterOpFamily(AlterOpFamilyStmt *stmt);
-extern void RemoveOpClass(RemoveOpClassStmt *stmt);
-extern void RemoveOpFamily(RemoveOpFamilyStmt *stmt);
extern void RemoveOpClassById(Oid opclassOid);
extern void RemoveOpFamilyById(Oid opfamilyOid);
extern void RemoveAmOpEntryById(Oid entryOid);
@@ -156,11 +150,9 @@ extern void AlterForeignServerOwner(const char *name, Oid newOwnerId);
extern void AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId);
extern void CreateForeignDataWrapper(CreateFdwStmt *stmt);
extern void AlterForeignDataWrapper(AlterFdwStmt *stmt);
-extern void RemoveForeignDataWrapper(DropFdwStmt *stmt);
extern void RemoveForeignDataWrapperById(Oid fdwId);
extern void CreateForeignServer(CreateForeignServerStmt *stmt);
extern void AlterForeignServer(AlterForeignServerStmt *stmt);
-extern void RemoveForeignServer(DropForeignServerStmt *stmt);
extern void RemoveForeignServerById(Oid srvId);
extern void CreateUserMapping(CreateUserMappingStmt *stmt);
extern void AlterUserMapping(AlterUserMappingStmt *stmt);
diff --git a/src/include/commands/proclang.h b/src/include/commands/proclang.h
index 644c371dcc0..17d09724199 100644
--- a/src/include/commands/proclang.h
+++ b/src/include/commands/proclang.h
@@ -15,7 +15,6 @@
#include "nodes/parsenodes.h"
extern void CreateProceduralLanguage(CreatePLangStmt *stmt);
-extern void DropProceduralLanguage(DropPLangStmt *stmt);
extern void DropProceduralLanguageById(Oid langOid);
extern void RenameLanguage(const char *oldname, const char *newname);
extern void AlterLanguageOwner(const char *name, Oid newOwnerId);
diff --git a/src/include/commands/trigger.h b/src/include/commands/trigger.h
index fe21298b648..e7d28f7cdd2 100644
--- a/src/include/commands/trigger.h
+++ b/src/include/commands/trigger.h
@@ -112,8 +112,6 @@ extern Oid CreateTrigger(CreateTrigStmt *stmt, const char *queryString,
Oid constraintOid, Oid indexOid,
bool isInternal);
-extern void DropTrigger(RangeVar *relation, const char *trigname,
- DropBehavior behavior, bool missing_ok);
extern void RemoveTriggerById(Oid trigOid);
extern Oid get_trigger_oid(Oid relid, const char *name, bool missing_ok);
diff --git a/src/include/nodes/nodes.h b/src/include/nodes/nodes.h
index 824d8b5dc9a..3a240897985 100644
--- a/src/include/nodes/nodes.h
+++ b/src/include/nodes/nodes.h
@@ -291,7 +291,6 @@ typedef enum NodeTag
T_IndexStmt,
T_CreateFunctionStmt,
T_AlterFunctionStmt,
- T_RemoveFuncStmt,
T_DoStmt,
T_RenameStmt,
T_RuleStmt,
@@ -312,9 +311,7 @@ typedef enum NodeTag
T_VariableShowStmt,
T_DiscardStmt,
T_CreateTrigStmt,
- T_DropPropertyStmt,
T_CreatePLangStmt,
- T_DropPLangStmt,
T_CreateRoleStmt,
T_AlterRoleStmt,
T_DropRoleStmt,
@@ -328,12 +325,9 @@ typedef enum NodeTag
T_AlterRoleSetStmt,
T_CreateConversionStmt,
T_CreateCastStmt,
- T_DropCastStmt,
T_CreateOpClassStmt,
T_CreateOpFamilyStmt,
T_AlterOpFamilyStmt,
- T_RemoveOpClassStmt,
- T_RemoveOpFamilyStmt,
T_PrepareStmt,
T_ExecuteStmt,
T_DeallocateStmt,
@@ -352,10 +346,8 @@ typedef enum NodeTag
T_AlterTSConfigurationStmt,
T_CreateFdwStmt,
T_AlterFdwStmt,
- T_DropFdwStmt,
T_CreateForeignServerStmt,
T_AlterForeignServerStmt,
- T_DropForeignServerStmt,
T_CreateUserMappingStmt,
T_AlterUserMappingStmt,
T_DropUserMappingStmt,
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
index af6565e7e4a..6449eca52d9 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -1612,7 +1612,7 @@ typedef struct AlterExtensionContentsStmt
} AlterExtensionContentsStmt;
/* ----------------------
- * Create/Drop FOREIGN DATA WRAPPER Statements
+ * Create/Alter FOREIGN DATA WRAPPER Statements
* ----------------------
*/
@@ -1632,16 +1632,8 @@ typedef struct AlterFdwStmt
List *options; /* generic options to FDW */
} AlterFdwStmt;
-typedef struct DropFdwStmt
-{
- NodeTag type;
- char *fdwname; /* foreign-data wrapper name */
- bool missing_ok; /* don't complain if missing */
- DropBehavior behavior; /* drop behavior - cascade/restrict */
-} DropFdwStmt;
-
/* ----------------------
- * Create/Drop FOREIGN SERVER Statements
+ * Create/Alter FOREIGN SERVER Statements
* ----------------------
*/
@@ -1664,14 +1656,6 @@ typedef struct AlterForeignServerStmt
bool has_version; /* version specified */
} AlterForeignServerStmt;
-typedef struct DropForeignServerStmt
-{
- NodeTag type;
- char *servername; /* server name */
- bool missing_ok; /* ignore missing servers */
- DropBehavior behavior; /* drop behavior - cascade/restrict */
-} DropForeignServerStmt;
-
/* ----------------------
* Create FOREIGN TABLE Statements
* ----------------------
@@ -1739,7 +1723,7 @@ typedef struct CreateTrigStmt
} CreateTrigStmt;
/* ----------------------
- * Create/Drop PROCEDURAL LANGUAGE Statements
+ * Create PROCEDURAL LANGUAGE Statements
* ----------------------
*/
typedef struct CreatePLangStmt
@@ -1753,14 +1737,6 @@ typedef struct CreatePLangStmt
bool pltrusted; /* PL is trusted */
} CreatePLangStmt;
-typedef struct DropPLangStmt
-{
- NodeTag type;
- char *plname; /* PL name */
- DropBehavior behavior; /* RESTRICT or CASCADE behavior */
- bool missing_ok; /* skip error if missing? */
-} DropPLangStmt;
-
/* ----------------------
* Create/Alter/Drop Role Statements
*
@@ -1921,30 +1897,13 @@ typedef struct DropStmt
{
NodeTag type;
List *objects; /* list of sublists of names (as Values) */
+ List *arguments; /* list of sublists of arguments (as Values) */
ObjectType removeType; /* object type */
DropBehavior behavior; /* RESTRICT or CASCADE behavior */
bool missing_ok; /* skip error if object is missing? */
} DropStmt;
/* ----------------------
- * Drop Rule|Trigger Statement
- *
- * In general this may be used for dropping any property of a relation;
- * for example, someday soon we may have DROP ATTRIBUTE.
- * ----------------------
- */
-
-typedef struct DropPropertyStmt
-{
- NodeTag type;
- RangeVar *relation; /* owning relation */
- char *property; /* name of rule, trigger, etc */
- ObjectType removeType; /* OBJECT_RULE or OBJECT_TRIGGER */
- DropBehavior behavior; /* RESTRICT or CASCADE behavior */
- bool missing_ok; /* skip error if missing? */
-} DropPropertyStmt;
-
-/* ----------------------
* Truncate Table Statement
* ----------------------
*/
@@ -2118,20 +2077,6 @@ typedef struct AlterFunctionStmt
} AlterFunctionStmt;
/* ----------------------
- * Drop {Function|Aggregate|Operator} Statement
- * ----------------------
- */
-typedef struct RemoveFuncStmt
-{
- NodeTag type;
- ObjectType kind; /* function, aggregate, operator */
- List *name; /* qualified name of object to drop */
- List *args; /* types of the arguments */
- DropBehavior behavior; /* RESTRICT or CASCADE behavior */
- bool missing_ok; /* skip error if missing? */
-} RemoveFuncStmt;
-
-/* ----------------------
* DO Statement
*
* DoStmt is the raw parser output, InlineCodeBlock is the execution-time API
@@ -2152,32 +2097,6 @@ typedef struct InlineCodeBlock
} InlineCodeBlock;
/* ----------------------
- * Drop Operator Class Statement
- * ----------------------
- */
-typedef struct RemoveOpClassStmt
-{
- NodeTag type;
- List *opclassname; /* qualified name (list of Value strings) */
- char *amname; /* name of index AM opclass is for */
- DropBehavior behavior; /* RESTRICT or CASCADE behavior */
- bool missing_ok; /* skip error if missing? */
-} RemoveOpClassStmt;
-
-/* ----------------------
- * Drop Operator Family Statement
- * ----------------------
- */
-typedef struct RemoveOpFamilyStmt
-{
- NodeTag type;
- List *opfamilyname; /* qualified name (list of Value strings) */
- char *amname; /* name of index AM opfamily is for */
- DropBehavior behavior; /* RESTRICT or CASCADE behavior */
- bool missing_ok; /* skip error if missing? */
-} RemoveOpFamilyStmt;
-
-/* ----------------------
* Alter Object Rename Statement
* ----------------------
*/
@@ -2558,20 +2477,6 @@ typedef struct CreateCastStmt
} CreateCastStmt;
/* ----------------------
- * DROP CAST Statement
- * ----------------------
- */
-typedef struct DropCastStmt
-{
- NodeTag type;
- TypeName *sourcetype;
- TypeName *targettype;
- DropBehavior behavior;
- bool missing_ok; /* skip error if missing? */
-} DropCastStmt;
-
-
-/* ----------------------
* PREPARE Statement
* ----------------------
*/
diff --git a/src/include/rewrite/rewriteRemove.h b/src/include/rewrite/rewriteRemove.h
index b9a63bad7b4..14f3c1dfddb 100644
--- a/src/include/rewrite/rewriteRemove.h
+++ b/src/include/rewrite/rewriteRemove.h
@@ -16,9 +16,6 @@
#include "nodes/parsenodes.h"
-
-extern void RemoveRewriteRule(RangeVar *relation, const char *ruleName,
- DropBehavior behavior, bool missing_ok);
extern void RemoveRewriteRuleById(Oid ruleOid);
#endif /* REWRITEREMOVE_H */