diff options
Diffstat (limited to 'src/include/nodes/parsenodes.h')
-rw-r--r-- | src/include/nodes/parsenodes.h | 96 |
1 files changed, 40 insertions, 56 deletions
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h index 9270b5339f..7b50246ab1 100644 --- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.h @@ -668,6 +668,36 @@ typedef struct SetOperationStmt * field in Query. *****************************************************************************/ +/* + * When a command can act on several kinds of objects with only one + * parse structure required, use these constants to designate the + * object type. + */ + +typedef enum ObjectType { + OBJECT_AGGREGATE, + OBJECT_CAST, + OBJECT_COLUMN, + OBJECT_CONSTRAINT, + OBJECT_CONVERSION, + OBJECT_DATABASE, + OBJECT_DOMAIN, + OBJECT_FUNCTION, + OBJECT_GROUP, + OBJECT_INDEX, + OBJECT_LANGUAGE, + OBJECT_OPCLASS, + OBJECT_OPERATOR, + OBJECT_RULE, + OBJECT_SCHEMA, + OBJECT_SEQUENCE, + OBJECT_TABLE, + OBJECT_TRIGGER, + OBJECT_TYPE, + OBJECT_USER, + OBJECT_VIEW +} ObjectType; + /* ---------------------- * Create Schema Statement * @@ -1076,17 +1106,10 @@ typedef struct AlterSeqStmt * Create {Aggregate|Operator|Type} Statement * ---------------------- */ -typedef enum DefineStmtKind -{ - DEFINE_STMT_AGGREGATE, - DEFINE_STMT_OPERATOR, - DEFINE_STMT_TYPE -} DefineStmtKind; - typedef struct DefineStmt { NodeTag type; - DefineStmtKind kind; /* see above */ + ObjectType kind; /* aggregate, operator, type */ List *defnames; /* qualified name (list of Value strings) */ List *definition; /* a list of DefElem */ } DefineStmt; @@ -1139,20 +1162,11 @@ typedef struct CreateOpClassItem * ---------------------- */ -#define DROP_TABLE 1 -#define DROP_SEQUENCE 2 -#define DROP_VIEW 3 -#define DROP_INDEX 4 -#define DROP_TYPE 5 -#define DROP_DOMAIN 6 -#define DROP_CONVERSION 7 -#define DROP_SCHEMA 8 - typedef struct DropStmt { NodeTag type; List *objects; /* list of sublists of names (as Values) */ - int removeType; /* see #defines above */ + ObjectType removeType; /* object type */ DropBehavior behavior; /* RESTRICT or CASCADE behavior */ } DropStmt; @@ -1164,15 +1178,12 @@ typedef struct DropStmt * ---------------------- */ -#define DROP_RULE 100 -#define DROP_TRIGGER 101 - typedef struct DropPropertyStmt { NodeTag type; RangeVar *relation; /* owning relation */ char *property; /* name of rule, trigger, etc */ - int removeType; /* see #defines above */ + ObjectType removeType; /* OBJECT_RULE or OBJECT_TRIGGER */ DropBehavior behavior; /* RESTRICT or CASCADE behavior */ } DropPropertyStmt; @@ -1190,25 +1201,10 @@ typedef struct TruncateStmt * Comment On Statement * ---------------------- */ -#define COMMENT_ON_AGGREGATE 100 -#define COMMENT_ON_COLUMN 101 -#define COMMENT_ON_CONSTRAINT 102 -#define COMMENT_ON_DATABASE 103 -#define COMMENT_ON_FUNCTION 104 -#define COMMENT_ON_INDEX 105 -#define COMMENT_ON_OPERATOR 106 -#define COMMENT_ON_RULE 107 -#define COMMENT_ON_SCHEMA 108 -#define COMMENT_ON_SEQUENCE 109 -#define COMMENT_ON_TABLE 110 -#define COMMENT_ON_TRIGGER 111 -#define COMMENT_ON_TYPE 112 -#define COMMENT_ON_VIEW 113 - typedef struct CommentStmt { NodeTag type; - int objtype; /* Object's type, see codes above */ + ObjectType objtype; /* Object's type */ List *objname; /* Qualified name of the object */ List *objargs; /* Arguments if needed (eg, for functions) */ char *comment; /* Comment to insert, or NULL to remove */ @@ -1352,21 +1348,16 @@ typedef struct RemoveOpClassStmt /* ---------------------- * Alter Object Rename Statement * ---------------------- - * Currently supports renaming tables, table columns, and triggers. - * If renaming a table, oldname is ignored. */ -#define RENAME_TABLE 110 -#define RENAME_COLUMN 111 -#define RENAME_TRIGGER 112 -#define RENAME_RULE 113 - typedef struct RenameStmt { NodeTag type; - RangeVar *relation; /* owning relation */ - char *oldname; /* name of rule, trigger, etc */ + RangeVar *relation; /* in case it's a table */ + List *object; /* in case it's some other object */ + List *objarg; /* argument types, if applicable */ + char *subname; /* name of contained object (column, rule, trigger, etc) */ char *newname; /* the new name */ - int renameType; /* RENAME_TABLE, RENAME_COLUMN, etc */ + ObjectType renameType; /* OBJECT_TABLE, OBJECT_COLUMN, etc */ } RenameStmt; /* ---------------------- @@ -1614,17 +1605,10 @@ typedef struct ConstraintsSetStmt * REINDEX Statement * ---------------------- */ -typedef enum ReindexStmtKind -{ - REINDEX_INDEX, - REINDEX_TABLE, - REINDEX_DATABASE -} ReindexStmtKind; - typedef struct ReindexStmt { NodeTag type; - ReindexStmtKind kind; /* see above */ + ObjectType kind; /* OBJECT_INDEX, OBJECT_TABLE, OBJECT_DATABASE */ RangeVar *relation; /* Table or index to reindex */ const char *name; /* name of database to reindex */ bool force; |