diff options
Diffstat (limited to 'src/backend/parser')
| -rw-r--r-- | src/backend/parser/gram.y | 113 |
1 files changed, 67 insertions, 46 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index e2d7d6a02f3..82ff9accc72 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -185,7 +185,7 @@ static RangeVar *makeRangeVarFromAnyName(List *names, int position, core_yyscan_ AlterDatabaseStmt AlterDatabaseSetStmt AlterDomainStmt AlterEnumStmt AlterFdwStmt AlterForeignServerStmt AlterGroupStmt AlterObjectSchemaStmt AlterOwnerStmt AlterSeqStmt AlterTableStmt - AlterExtensionAddStmt AlterForeignTableStmt + AlterExtensionContentsStmt AlterForeignTableStmt AlterCompositeTypeStmt AlterUserStmt AlterUserMappingStmt AlterUserSetStmt AlterRoleStmt AlterRoleSetStmt AlterDefaultPrivilegesStmt DefACLAction @@ -664,7 +664,7 @@ stmt : | AlterDefaultPrivilegesStmt | AlterDomainStmt | AlterEnumStmt - | AlterExtensionAddStmt + | AlterExtensionContentsStmt | AlterFdwStmt | AlterForeignServerStmt | AlterForeignTableStmt @@ -3251,181 +3251,202 @@ create_extension_opt_item: /***************************************************************************** * - * ALTER EXTENSION name ADD object-identifier + * ALTER EXTENSION name ADD/DROP object-identifier * *****************************************************************************/ -AlterExtensionAddStmt: - ALTER EXTENSION name ADD_P AGGREGATE func_name aggr_args +AlterExtensionContentsStmt: + ALTER EXTENSION name add_drop AGGREGATE func_name aggr_args { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_AGGREGATE; n->objname = $6; n->objargs = $7; $$ = (Node *)n; } - | ALTER EXTENSION name ADD_P CAST '(' Typename AS Typename ')' + | ALTER EXTENSION name add_drop CAST '(' Typename AS Typename ')' { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_CAST; n->objname = list_make1($7); n->objargs = list_make1($9); $$ = (Node *) n; } - | ALTER EXTENSION name ADD_P CONVERSION_P any_name + | ALTER EXTENSION name add_drop CONVERSION_P any_name { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_CONVERSION; n->objname = $6; $$ = (Node *)n; } - | ALTER EXTENSION name ADD_P DOMAIN_P any_name + | ALTER EXTENSION name add_drop DOMAIN_P any_name { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_DOMAIN; n->objname = $6; $$ = (Node *)n; } - | ALTER EXTENSION name ADD_P FUNCTION function_with_argtypes + | ALTER EXTENSION name add_drop FUNCTION function_with_argtypes { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_FUNCTION; n->objname = $6->funcname; n->objargs = $6->funcargs; $$ = (Node *)n; } - | ALTER EXTENSION name ADD_P opt_procedural LANGUAGE name + | ALTER EXTENSION name add_drop opt_procedural LANGUAGE name { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_LANGUAGE; n->objname = list_make1(makeString($7)); $$ = (Node *)n; } - | ALTER EXTENSION name ADD_P OPERATOR any_operator oper_argtypes + | ALTER EXTENSION name add_drop OPERATOR any_operator oper_argtypes { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_OPERATOR; n->objname = $6; n->objargs = $7; $$ = (Node *)n; } - | ALTER EXTENSION name ADD_P OPERATOR CLASS any_name USING access_method + | ALTER EXTENSION name add_drop OPERATOR CLASS any_name USING access_method { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_OPCLASS; n->objname = $7; n->objargs = list_make1(makeString($9)); $$ = (Node *)n; } - | ALTER EXTENSION name ADD_P OPERATOR FAMILY any_name USING access_method + | ALTER EXTENSION name add_drop OPERATOR FAMILY any_name USING access_method { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_OPFAMILY; n->objname = $7; n->objargs = list_make1(makeString($9)); $$ = (Node *)n; } - | ALTER EXTENSION name ADD_P SCHEMA name + | ALTER EXTENSION name add_drop SCHEMA name { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_SCHEMA; n->objname = list_make1(makeString($6)); $$ = (Node *)n; } - | ALTER EXTENSION name ADD_P TABLE any_name + | ALTER EXTENSION name add_drop TABLE any_name { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_TABLE; n->objname = $6; $$ = (Node *)n; } - | ALTER EXTENSION name ADD_P TEXT_P SEARCH PARSER any_name + | ALTER EXTENSION name add_drop TEXT_P SEARCH PARSER any_name { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_TSPARSER; n->objname = $8; $$ = (Node *)n; } - | ALTER EXTENSION name ADD_P TEXT_P SEARCH DICTIONARY any_name + | ALTER EXTENSION name add_drop TEXT_P SEARCH DICTIONARY any_name { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_TSDICTIONARY; n->objname = $8; $$ = (Node *)n; } - | ALTER EXTENSION name ADD_P TEXT_P SEARCH TEMPLATE any_name + | ALTER EXTENSION name add_drop TEXT_P SEARCH TEMPLATE any_name { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_TSTEMPLATE; n->objname = $8; $$ = (Node *)n; } - | ALTER EXTENSION name ADD_P TEXT_P SEARCH CONFIGURATION any_name + | ALTER EXTENSION name add_drop TEXT_P SEARCH CONFIGURATION any_name { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_TSCONFIGURATION; n->objname = $8; $$ = (Node *)n; } - | ALTER EXTENSION name ADD_P SEQUENCE any_name + | ALTER EXTENSION name add_drop SEQUENCE any_name { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_SEQUENCE; n->objname = $6; $$ = (Node *)n; } - | ALTER EXTENSION name ADD_P VIEW any_name + | ALTER EXTENSION name add_drop VIEW any_name { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_VIEW; n->objname = $6; $$ = (Node *)n; } - | ALTER EXTENSION name ADD_P FOREIGN TABLE any_name + | ALTER EXTENSION name add_drop FOREIGN TABLE any_name { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_FOREIGN_TABLE; n->objname = $7; $$ = (Node *)n; } - | ALTER EXTENSION name ADD_P FOREIGN DATA_P WRAPPER name + | ALTER EXTENSION name add_drop FOREIGN DATA_P WRAPPER name { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_FDW; n->objname = list_make1(makeString($8)); $$ = (Node *)n; } - | ALTER EXTENSION name ADD_P SERVER name + | ALTER EXTENSION name add_drop SERVER name { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_FOREIGN_SERVER; n->objname = list_make1(makeString($6)); $$ = (Node *)n; } - | ALTER EXTENSION name ADD_P TYPE_P any_name + | ALTER EXTENSION name add_drop TYPE_P any_name { - AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt); + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; + n->action = $4; n->objtype = OBJECT_TYPE; n->objname = $6; $$ = (Node *)n; |
