summaryrefslogtreecommitdiff
path: root/src/backend/parser
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/parser')
-rw-r--r--src/backend/parser/gram.y186
1 files changed, 185 insertions, 1 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 4c4536b9be3..a61f3dc7ba4 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
- AlterForeignTableStmt
+ AlterExtensionAddStmt AlterForeignTableStmt
AlterCompositeTypeStmt AlterUserStmt AlterUserMappingStmt AlterUserSetStmt
AlterRoleStmt AlterRoleSetStmt
AlterDefaultPrivilegesStmt DefACLAction
@@ -664,6 +664,7 @@ stmt :
| AlterDefaultPrivilegesStmt
| AlterDomainStmt
| AlterEnumStmt
+ | AlterExtensionAddStmt
| AlterFdwStmt
| AlterForeignServerStmt
| AlterForeignTableStmt
@@ -3250,6 +3251,189 @@ create_extension_opt_item:
/*****************************************************************************
*
+ * ALTER EXTENSION name ADD object-identifier
+ *
+ *****************************************************************************/
+
+AlterExtensionAddStmt:
+ ALTER EXTENSION name ADD_P AGGREGATE func_name aggr_args
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ n->objtype = OBJECT_AGGREGATE;
+ n->objname = $6;
+ n->objargs = $7;
+ $$ = (Node *)n;
+ }
+ | ALTER EXTENSION name ADD_P CAST '(' Typename AS Typename ')'
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ 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
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ n->objtype = OBJECT_CONVERSION;
+ n->objname = $6;
+ $$ = (Node *)n;
+ }
+ | ALTER EXTENSION name ADD_P DOMAIN_P any_name
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ n->objtype = OBJECT_DOMAIN;
+ n->objname = $6;
+ $$ = (Node *)n;
+ }
+ | ALTER EXTENSION name ADD_P FUNCTION function_with_argtypes
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ n->objtype = OBJECT_FUNCTION;
+ n->objname = $6->funcname;
+ n->objargs = $6->funcargs;
+ $$ = (Node *)n;
+ }
+ | ALTER EXTENSION name ADD_P opt_procedural LANGUAGE name
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ n->objtype = OBJECT_LANGUAGE;
+ n->objname = list_make1(makeString($7));
+ $$ = (Node *)n;
+ }
+ | ALTER EXTENSION name ADD_P OPERATOR any_operator oper_argtypes
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ n->objtype = OBJECT_OPERATOR;
+ n->objname = $6;
+ n->objargs = $7;
+ $$ = (Node *)n;
+ }
+ | ALTER EXTENSION name ADD_P OPERATOR CLASS any_name USING access_method
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ 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
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ n->objtype = OBJECT_OPFAMILY;
+ n->objname = $7;
+ n->objargs = list_make1(makeString($9));
+ $$ = (Node *)n;
+ }
+ | ALTER EXTENSION name ADD_P SCHEMA name
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ n->objtype = OBJECT_SCHEMA;
+ n->objname = list_make1(makeString($6));
+ $$ = (Node *)n;
+ }
+ | ALTER EXTENSION name ADD_P TABLE any_name
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ n->objtype = OBJECT_TABLE;
+ n->objname = $6;
+ $$ = (Node *)n;
+ }
+ | ALTER EXTENSION name ADD_P TEXT_P SEARCH PARSER any_name
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ n->objtype = OBJECT_TSPARSER;
+ n->objname = $8;
+ $$ = (Node *)n;
+ }
+ | ALTER EXTENSION name ADD_P TEXT_P SEARCH DICTIONARY any_name
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ n->objtype = OBJECT_TSDICTIONARY;
+ n->objname = $8;
+ $$ = (Node *)n;
+ }
+ | ALTER EXTENSION name ADD_P TEXT_P SEARCH TEMPLATE any_name
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ n->objtype = OBJECT_TSTEMPLATE;
+ n->objname = $8;
+ $$ = (Node *)n;
+ }
+ | ALTER EXTENSION name ADD_P TEXT_P SEARCH CONFIGURATION any_name
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ n->objtype = OBJECT_TSCONFIGURATION;
+ n->objname = $8;
+ $$ = (Node *)n;
+ }
+ | ALTER EXTENSION name ADD_P SEQUENCE any_name
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ n->objtype = OBJECT_SEQUENCE;
+ n->objname = $6;
+ $$ = (Node *)n;
+ }
+ | ALTER EXTENSION name ADD_P VIEW any_name
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ n->objtype = OBJECT_VIEW;
+ n->objname = $6;
+ $$ = (Node *)n;
+ }
+ | ALTER EXTENSION name ADD_P FOREIGN TABLE any_name
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ n->objtype = OBJECT_FOREIGN_TABLE;
+ n->objname = $7;
+ $$ = (Node *)n;
+ }
+ | ALTER EXTENSION name ADD_P FOREIGN DATA_P WRAPPER name
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ n->objtype = OBJECT_FDW;
+ n->objname = list_make1(makeString($8));
+ $$ = (Node *)n;
+ }
+ | ALTER EXTENSION name ADD_P SERVER name
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ n->objtype = OBJECT_FOREIGN_SERVER;
+ n->objname = list_make1(makeString($6));
+ $$ = (Node *)n;
+ }
+ | ALTER EXTENSION name ADD_P TYPE_P any_name
+ {
+ AlterExtensionAddStmt *n = makeNode(AlterExtensionAddStmt);
+ n->extname = $3;
+ n->objtype = OBJECT_TYPE;
+ n->objname = $6;
+ $$ = (Node *)n;
+ }
+ ;
+
+/*****************************************************************************
+ *
* QUERY:
* CREATE FOREIGN DATA WRAPPER name [ VALIDATOR name ]
*