Skip to content

Commit 24d48db

Browse files
committed
1. SHOW/RESET var fixed.
2. New VACUUM syntax (ANALYZE ...).
1 parent bc67a46 commit 24d48db

File tree

2 files changed

+46
-26
lines changed

2 files changed

+46
-26
lines changed

src/backend/parser/gram.y

Lines changed: 44 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
*
1111
*
1212
* IDENTIFICATION
13-
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.31 1997/04/23 03:17:00 scrappy Exp $
13+
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.32 1997/04/23 06:04:42 vadim Exp $
1414
*
1515
* HISTORY
1616
* AUTHOR DATE MAJOR EVENT
@@ -128,14 +128,14 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr);
128128
tableElementList, OptInherit, definition,
129129
opt_with, def_args, def_name_list, func_argtypes,
130130
oper_argtypes, OptStmtList, OptStmtBlock, OptStmtMulti,
131-
opt_column_list, columnList,
131+
opt_column_list, columnList, opt_va_list, va_list,
132132
sort_clause, sortby_list, index_params, index_list,
133133
name_list, from_clause, from_list, opt_array_bounds, nest_array_bounds,
134134
expr_list, attrs, res_target_list, res_target_list2,
135135
def_list, opt_indirection, group_clause, groupby_list
136136

137137
%type <boolean> opt_inh_star, opt_binary, opt_instead, opt_with_copy,
138-
index_opt_unique, opt_verbose
138+
index_opt_unique, opt_verbose, opt_analyze
139139

140140
%type <ival> copy_dirn, archive_type, OptArchiveType, OptArchiveLocation,
141141
def_type, opt_direction, remove_type, opt_column, event
@@ -179,11 +179,12 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr);
179179
*/
180180

181181
/* Keywords */
182-
%token ABORT_TRANS, ACL, ADD, AFTER, AGGREGATE, ALL, ALTER, AND, APPEND,
183-
ARCHIVE, ARCH_STORE, AS, ASC, BACKWARD, BEFORE, BEGIN_TRANS, BETWEEN,
184-
BINARY, BY, CAST, CHANGE, CLOSE, CLUSTER, COLUMN, COMMIT, COPY, CREATE,
185-
CURRENT, CURSOR, DATABASE, DECLARE, DELETE, DELIMITERS, DESC, DISTINCT,
186-
DO, DROP, END_TRANS,
182+
%token ABORT_TRANS, ACL, ADD, AFTER, AGGREGATE, ALL, ALTER, ANALYZE,
183+
AND, APPEND, ARCHIVE, ARCH_STORE, AS, ASC,
184+
BACKWARD, BEFORE, BEGIN_TRANS, BETWEEN, BINARY, BY,
185+
CAST, CHANGE, CLOSE, CLUSTER, COLUMN, COMMIT, COPY, CREATE,
186+
CURRENT, CURSOR, DATABASE, DECLARE, DELETE, DELIMITERS, DESC,
187+
DISTINCT, DO, DROP, END_TRANS,
187188
EXTEND, FETCH, FOR, FORWARD, FROM, FUNCTION, GRANT, GROUP,
188189
HAVING, HEAVY, IN, INDEX, INHERITS, INSERT, INSTEAD, INTO, IS,
189190
ISNULL, LANGUAGE, LIGHT, LISTEN, LOAD, MERGE, MOVE, NEW,
@@ -288,11 +289,10 @@ stmt : AddAttrStmt
288289

289290
VariableSetStmt: SET var_name TO var_value
290291
{
291-
VariableSetStmt *n = makeNode(VariableSetStmt);
292-
n->name = $2;
293-
n->value = $4;
294-
295-
$$ = (Node *) n;
292+
VariableSetStmt *n = makeNode(VariableSetStmt);
293+
n->name = $2;
294+
n->value = $4;
295+
$$ = (Node *) n;
296296
}
297297
;
298298

@@ -301,21 +301,17 @@ var_value: Sconst { $$ = $1; }
301301

302302
VariableShowStmt: SHOW var_name
303303
{
304-
VariableSetStmt *n = makeNode(VariableSetStmt);
305-
n->name = $2;
306-
n->value = NULL;
307-
308-
$$ = (Node *) n;
304+
VariableShowStmt *n = makeNode(VariableShowStmt);
305+
n->name = $2;
306+
$$ = (Node *) n;
309307
}
310308
;
311309

312310
VariableResetStmt: RESET var_name
313311
{
314-
VariableSetStmt *n = makeNode(VariableSetStmt);
315-
n->name = $2;
316-
n->value = NULL;
317-
318-
$$ = (Node *) n;
312+
VariableResetStmt *n = makeNode(VariableResetStmt);
313+
n->name = $2;
314+
$$ = (Node *) n;
319315
}
320316
;
321317

@@ -1295,24 +1291,47 @@ ClusterStmt: CLUSTER index_name ON relation_name
12951291
*
12961292
*****************************************************************************/
12971293

1298-
VacuumStmt: VACUUM opt_verbose
1294+
VacuumStmt: VACUUM opt_verbose opt_analyze
12991295
{
13001296
VacuumStmt *n = makeNode(VacuumStmt);
13011297
n->verbose = $2;
1298+
n->analyze = $3;
1299+
n->vacrel = NULL;
1300+
n->va_spec = NIL;
13021301
$$ = (Node *)n;
13031302
}
1304-
| VACUUM opt_verbose relation_name
1303+
| VACUUM opt_verbose relation_name opt_analyze opt_va_list
13051304
{
13061305
VacuumStmt *n = makeNode(VacuumStmt);
13071306
n->verbose = $2;
1307+
n->analyze = $4;
13081308
n->vacrel = $3;
1309+
n->va_spec = $5;
1310+
if ( $5 != NIL && !$4 )
1311+
elog (WARN, "parser: syntax error at or near \"(\"");
13091312
$$ = (Node *)n;
13101313
}
13111314
;
13121315

13131316
opt_verbose: VERBOSE { $$ = TRUE; }
13141317
| /* EMPTY */ { $$ = FALSE; }
13151318
;
1319+
1320+
opt_analyze: ANALYZE { $$ = TRUE; }
1321+
| /* EMPTY */ { $$ = FALSE; }
1322+
;
1323+
1324+
opt_va_list: '(' va_list ')'
1325+
{ $$ = $2; }
1326+
| /* EMPTY */
1327+
{ $$ = NIL; }
1328+
;
1329+
1330+
va_list: name
1331+
{ $$=lcons($1,NIL); }
1332+
| va_list ',' name
1333+
{ $$=lappend($1,$3); }
1334+
;
13161335

13171336
/*****************************************************************************
13181337
*

src/backend/parser/keywords.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.9 1997/04/23 03:17:04 scrappy Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.10 1997/04/23 06:04:46 vadim Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -38,6 +38,7 @@ static ScanKeyword ScanKeywords[] = {
3838
{ "aggregate", AGGREGATE },
3939
{ "all", ALL },
4040
{ "alter", ALTER },
41+
{ "analyze", ANALYZE },
4142
{ "and", AND },
4243
{ "append", APPEND },
4344
{ "archIve", ARCHIVE }, /* XXX crooked: I < _ */

0 commit comments

Comments
 (0)