summaryrefslogtreecommitdiff
path: root/src/backend/parser
diff options
context:
space:
mode:
authorFujii Masao <fujii@postgresql.org>2014-09-02 16:06:58 +0900
committerFujii Masao <fujii@postgresql.org>2014-09-02 16:06:58 +0900
commitbd3b7a9eef6fd8d71ad9aa5eaf1f90e904e96f0b (patch)
tree1a62e012f0ab9d4f28bbb92214db27e85415f76a /src/backend/parser
parent01b6976c13a9cf87f3c6767c9722576166c1b081 (diff)
Support ALTER SYSTEM RESET command.
This patch allows us to execute ALTER SYSTEM RESET command to remove the configuration entry from postgresql.auto.conf. Vik Fearing, reviewed by Amit Kapila and me.
Diffstat (limited to 'src/backend/parser')
-rw-r--r--src/backend/parser/gram.y47
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;
+ }
;