diff options
Diffstat (limited to 'src/backend/parser')
-rw-r--r-- | src/backend/parser/gram.y | 47 |
1 files changed, 31 insertions, 16 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 6f4d6455df6..b46dd7b008c 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -411,7 +411,8 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); %type <istmt> insert_rest -%type <vsetstmt> generic_set set_rest set_rest_more SetResetClause FunctionSetResetClause +%type <vsetstmt> generic_set set_rest set_rest_more generic_reset reset_rest + SetResetClause FunctionSetResetClause %type <node> TableElement TypedTableElement ConstraintElem TableFuncElement %type <node> columnDef columnOptions @@ -1579,39 +1580,47 @@ NonReservedWord_or_Sconst: ; VariableResetStmt: - RESET var_name + RESET reset_rest { $$ = (Node *) $2; } + ; + +reset_rest: + generic_reset { $$ = $1; } + | TIME ZONE { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; - n->name = $2; - $$ = (Node *) n; + n->name = "timezone"; + $$ = n; } - | RESET TIME ZONE + | TRANSACTION ISOLATION LEVEL { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; - n->name = "timezone"; - $$ = (Node *) n; + n->name = "transaction_isolation"; + $$ = n; } - | RESET TRANSACTION ISOLATION LEVEL + | SESSION AUTHORIZATION { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; - n->name = "transaction_isolation"; - $$ = (Node *) n; + n->name = "session_authorization"; + $$ = n; } - | RESET SESSION AUTHORIZATION + ; + +generic_reset: + var_name { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; - n->name = "session_authorization"; - $$ = (Node *) n; + n->name = $1; + $$ = n; } - | RESET ALL + | ALL { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET_ALL; - $$ = (Node *) n; + $$ = n; } ; @@ -8494,7 +8503,7 @@ DropdbStmt: DROP DATABASE database_name /***************************************************************************** * - * ALTER SYSTEM SET + * ALTER SYSTEM * * This is used to change configuration parameters persistently. *****************************************************************************/ @@ -8506,6 +8515,12 @@ AlterSystemStmt: n->setstmt = $4; $$ = (Node *)n; } + | ALTER SYSTEM_P RESET generic_reset + { + AlterSystemStmt *n = makeNode(AlterSystemStmt); + n->setstmt = $4; + $$ = (Node *)n; + } ; |