diff options
Diffstat (limited to 'src/backend/tcop/utility.c')
-rw-r--r-- | src/backend/tcop/utility.c | 357 |
1 files changed, 131 insertions, 226 deletions
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index 10a4438995f..9d1562af7dc 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -212,6 +212,7 @@ check_xact_readonly(Node *parsetree) case T_AlterTSDictionaryStmt: case T_AlterTSConfigurationStmt: case T_CreateExtensionStmt: + case T_AlterExtensionAddStmt: case T_CreateFdwStmt: case T_AlterFdwStmt: case T_DropFdwStmt: @@ -600,6 +601,10 @@ standard_ProcessUtility(Node *parsetree, CreateExtension((CreateExtensionStmt *) parsetree); break; + case T_AlterExtensionAddStmt: + ExecAlterExtensionAddStmt((AlterExtensionAddStmt *) parsetree); + break; + case T_CreateFdwStmt: CreateForeignDataWrapper((CreateFdwStmt *) parsetree); break; @@ -1422,6 +1427,123 @@ QueryReturnsTuples(Query *parsetree) /* + * AlterObjectTypeCommandTag + * helper function for CreateCommandTag + * + * This covers most cases where ALTER is used with an ObjectType enum. + */ +static const char * +AlterObjectTypeCommandTag(ObjectType objtype) +{ + const char *tag; + + switch (objtype) + { + case OBJECT_AGGREGATE: + tag = "ALTER AGGREGATE"; + break; + case OBJECT_ATTRIBUTE: + tag = "ALTER TYPE"; + break; + case OBJECT_CAST: + tag = "ALTER CAST"; + break; + case OBJECT_COLUMN: + tag = "ALTER TABLE"; + break; + case OBJECT_CONSTRAINT: + tag = "ALTER TABLE"; + break; + case OBJECT_CONVERSION: + tag = "ALTER CONVERSION"; + break; + case OBJECT_DATABASE: + tag = "ALTER DATABASE"; + break; + case OBJECT_DOMAIN: + tag = "ALTER DOMAIN"; + break; + case OBJECT_EXTENSION: + tag = "ALTER EXTENSION"; + break; + case OBJECT_FDW: + tag = "ALTER FOREIGN DATA WRAPPER"; + break; + case OBJECT_FOREIGN_SERVER: + tag = "ALTER SERVER"; + break; + case OBJECT_FOREIGN_TABLE: + tag = "ALTER FOREIGN TABLE"; + break; + case OBJECT_FUNCTION: + tag = "ALTER FUNCTION"; + break; + case OBJECT_INDEX: + tag = "ALTER INDEX"; + break; + case OBJECT_LANGUAGE: + tag = "ALTER LANGUAGE"; + break; + case OBJECT_LARGEOBJECT: + tag = "ALTER LARGE OBJECT"; + break; + case OBJECT_OPCLASS: + tag = "ALTER OPERATOR CLASS"; + break; + case OBJECT_OPERATOR: + tag = "ALTER OPERATOR"; + break; + case OBJECT_OPFAMILY: + tag = "ALTER OPERATOR FAMILY"; + break; + case OBJECT_ROLE: + tag = "ALTER ROLE"; + break; + case OBJECT_RULE: + tag = "ALTER RULE"; + break; + case OBJECT_SCHEMA: + tag = "ALTER SCHEMA"; + break; + case OBJECT_SEQUENCE: + tag = "ALTER SEQUENCE"; + break; + case OBJECT_TABLE: + tag = "ALTER TABLE"; + break; + case OBJECT_TABLESPACE: + tag = "ALTER TABLESPACE"; + break; + case OBJECT_TRIGGER: + tag = "ALTER TRIGGER"; + break; + case OBJECT_TSCONFIGURATION: + tag = "ALTER TEXT SEARCH CONFIGURATION"; + break; + case OBJECT_TSDICTIONARY: + tag = "ALTER TEXT SEARCH DICTIONARY"; + break; + case OBJECT_TSPARSER: + tag = "ALTER TEXT SEARCH PARSER"; + break; + case OBJECT_TSTEMPLATE: + tag = "ALTER TEXT SEARCH TEMPLATE"; + break; + case OBJECT_TYPE: + tag = "ALTER TYPE"; + break; + case OBJECT_VIEW: + tag = "ALTER VIEW"; + break; + default: + tag = "???"; + break; + } + + return tag; +} + +/* * CreateCommandTag * utility to get a string representation of the command operation, * given either a raw (un-analyzed) parsetree or a planned query. @@ -1558,6 +1680,10 @@ CreateCommandTag(Node *parsetree) tag = "CREATE EXTENSION"; break; + case T_AlterExtensionAddStmt: + tag = "ALTER EXTENSION"; + break; + case T_CreateFdwStmt: tag = "CREATE FOREIGN DATA WRAPPER"; break; @@ -1665,235 +1791,19 @@ CreateCommandTag(Node *parsetree) break; case T_RenameStmt: - switch (((RenameStmt *) parsetree)->renameType) - { - case OBJECT_AGGREGATE: - tag = "ALTER AGGREGATE"; - break; - case OBJECT_CONVERSION: - tag = "ALTER CONVERSION"; - break; - case OBJECT_DATABASE: - tag = "ALTER DATABASE"; - break; - case OBJECT_FUNCTION: - tag = "ALTER FUNCTION"; - break; - case OBJECT_INDEX: - tag = "ALTER INDEX"; - break; - case OBJECT_LANGUAGE: - tag = "ALTER LANGUAGE"; - break; - case OBJECT_OPCLASS: - tag = "ALTER OPERATOR CLASS"; - break; - case OBJECT_OPFAMILY: - tag = "ALTER OPERATOR FAMILY"; - break; - case OBJECT_ROLE: - tag = "ALTER ROLE"; - break; - case OBJECT_SCHEMA: - tag = "ALTER SCHEMA"; - break; - case OBJECT_SEQUENCE: - tag = "ALTER SEQUENCE"; - break; - case OBJECT_COLUMN: - { - RenameStmt *stmt = (RenameStmt *) parsetree; - if (stmt->relationType == OBJECT_FOREIGN_TABLE) - tag = "ALTER FOREIGN TABLE"; - else - tag = "ALTER TABLE"; - } - break; - case OBJECT_TABLE: - tag = "ALTER TABLE"; - break; - case OBJECT_TABLESPACE: - tag = "ALTER TABLESPACE"; - break; - case OBJECT_TRIGGER: - tag = "ALTER TRIGGER"; - break; - case OBJECT_VIEW: - tag = "ALTER VIEW"; - break; - case OBJECT_FOREIGN_TABLE: - tag = "ALTER FOREIGN TABLE"; - break; - case OBJECT_TSPARSER: - tag = "ALTER TEXT SEARCH PARSER"; - break; - case OBJECT_TSDICTIONARY: - tag = "ALTER TEXT SEARCH DICTIONARY"; - break; - case OBJECT_TSTEMPLATE: - tag = "ALTER TEXT SEARCH TEMPLATE"; - break; - case OBJECT_TSCONFIGURATION: - tag = "ALTER TEXT SEARCH CONFIGURATION"; - break; - case OBJECT_ATTRIBUTE: - case OBJECT_TYPE: - tag = "ALTER TYPE"; - break; - default: - tag = "???"; - break; - } + tag = AlterObjectTypeCommandTag(((RenameStmt *) parsetree)->renameType); break; case T_AlterObjectSchemaStmt: - switch (((AlterObjectSchemaStmt *) parsetree)->objectType) - { - case OBJECT_AGGREGATE: - tag = "ALTER AGGREGATE"; - break; - case OBJECT_CONVERSION: - tag = "ALTER CONVERSION"; - break; - case OBJECT_DOMAIN: - tag = "ALTER DOMAIN"; - break; - case OBJECT_EXTENSION: - tag = "ALTER EXTENSION"; - break; - case OBJECT_OPERATOR: - tag = "ALTER OPERATOR"; - break; - case OBJECT_OPCLASS: - tag = "ALTER OPERATOR CLASS"; - break; - case OBJECT_OPFAMILY: - tag = "ALTER OPERATOR FAMILY"; - break; - case OBJECT_FUNCTION: - tag = "ALTER FUNCTION"; - break; - case OBJECT_SEQUENCE: - tag = "ALTER SEQUENCE"; - break; - case OBJECT_TABLE: - tag = "ALTER TABLE"; - break; - case OBJECT_TYPE: - tag = "ALTER TYPE"; - break; - case OBJECT_TSPARSER: - tag = "ALTER TEXT SEARCH PARSER"; - break; - case OBJECT_TSDICTIONARY: - tag = "ALTER TEXT SEARCH DICTIONARY"; - break; - case OBJECT_TSTEMPLATE: - tag = "ALTER TEXT SEARCH TEMPLATE"; - break; - case OBJECT_TSCONFIGURATION: - tag = "ALTER TEXT SEARCH CONFIGURATION"; - break; - case OBJECT_VIEW: - tag = "ALTER VIEW"; - break; - case OBJECT_FOREIGN_TABLE: - tag = "ALTER FOREIGN TABLE"; - break; - default: - tag = "???"; - break; - } + tag = AlterObjectTypeCommandTag(((AlterObjectSchemaStmt *) parsetree)->objectType); break; case T_AlterOwnerStmt: - switch (((AlterOwnerStmt *) parsetree)->objectType) - { - case OBJECT_AGGREGATE: - tag = "ALTER AGGREGATE"; - break; - case OBJECT_CONVERSION: - tag = "ALTER CONVERSION"; - break; - case OBJECT_DATABASE: - tag = "ALTER DATABASE"; - break; - case OBJECT_DOMAIN: - tag = "ALTER DOMAIN"; - break; - case OBJECT_FUNCTION: - tag = "ALTER FUNCTION"; - break; - case OBJECT_LANGUAGE: - tag = "ALTER LANGUAGE"; - break; - case OBJECT_LARGEOBJECT: - tag = "ALTER LARGE OBJECT"; - break; - case OBJECT_OPERATOR: - tag = "ALTER OPERATOR"; - break; - case OBJECT_OPCLASS: - tag = "ALTER OPERATOR CLASS"; - break; - case OBJECT_OPFAMILY: - tag = "ALTER OPERATOR FAMILY"; - break; - case OBJECT_SCHEMA: - tag = "ALTER SCHEMA"; - break; - case OBJECT_TABLESPACE: - tag = "ALTER TABLESPACE"; - break; - case OBJECT_TYPE: - tag = "ALTER TYPE"; - break; - case OBJECT_TSCONFIGURATION: - tag = "ALTER TEXT SEARCH CONFIGURATION"; - break; - case OBJECT_TSDICTIONARY: - tag = "ALTER TEXT SEARCH DICTIONARY"; - break; - case OBJECT_FDW: - tag = "ALTER FOREIGN DATA WRAPPER"; - break; - case OBJECT_FOREIGN_SERVER: - tag = "ALTER SERVER"; - break; - case OBJECT_FOREIGN_TABLE: - tag = "ALTER FOREIGN TABLE"; - break; - default: - tag = "???"; - break; - } + tag = AlterObjectTypeCommandTag(((AlterOwnerStmt *) parsetree)->objectType); break; case T_AlterTableStmt: - switch (((AlterTableStmt *) parsetree)->relkind) - { - case OBJECT_TABLE: - tag = "ALTER TABLE"; - break; - case OBJECT_INDEX: - tag = "ALTER INDEX"; - break; - case OBJECT_SEQUENCE: - tag = "ALTER SEQUENCE"; - break; - case OBJECT_TYPE: - tag = "ALTER TYPE"; - break; - case OBJECT_VIEW: - tag = "ALTER VIEW"; - break; - case OBJECT_FOREIGN_TABLE: - tag = "ALTER FOREIGN TABLE"; - break; - default: - tag = "???"; - break; - } + tag = AlterObjectTypeCommandTag(((AlterTableStmt *) parsetree)->relkind); break; case T_AlterDomainStmt: @@ -2391,18 +2301,13 @@ GetCommandLogLevel(Node *parsetree) break; case T_CreateTableSpaceStmt: - lev = LOGSTMT_DDL; - break; - case T_DropTableSpaceStmt: - lev = LOGSTMT_DDL; - break; - case T_AlterTableSpaceOptionsStmt: lev = LOGSTMT_DDL; break; case T_CreateExtensionStmt: + case T_AlterExtensionAddStmt: lev = LOGSTMT_DDL; break; |