10
10
*
11
11
*
12
12
* IDENTIFICATION
13
- * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.6 1998/03/07 06:04:59 thomas Exp $
13
+ * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.7 1998/03/18 16:50:19 thomas Exp $
14
14
*
15
15
* HISTORY
16
16
* AUTHOR DATE MAJOR EVENT
@@ -170,6 +170,7 @@ Oid param_type(int t); /* used in parse_expr.c */
170
170
%type <sortgroupby>
171
171
join_using
172
172
%type <boolean> opt_union
173
+ %type <boolean> opt_table
173
174
174
175
%type <node> position_expr
175
176
%type <list> extract_list, position_list
@@ -202,6 +203,7 @@ Oid param_type(int t); /* used in parse_expr.c */
202
203
%type <list> OptCreateAs, CreateAsList
203
204
%type <node> CreateAsElement
204
205
%type <value> NumConst
206
+ %type <value> IntegerOnly
205
207
%type <attr> event_object, attr
206
208
%type <sortgroupby> groupby
207
209
%type <sortgroupby> sortby
@@ -277,14 +279,14 @@ Oid param_type(int t); /* used in parse_expr.c */
277
279
278
280
/* Keywords for Postgres support (not in SQL92 reserved words) */
279
281
%token ABORT_TRANS, AFTER, AGGREGATE, ANALYZE,
280
- BACKWARD, BEFORE, BINARY, CLUSTER, COPY,
282
+ BACKWARD, BEFORE, BINARY, CACHE, CLUSTER, COPY, CYCLE ,
281
283
DATABASE, DELIMITERS, DO, EACH, EXPLAIN, EXTEND,
282
284
FORWARD, FUNCTION, HANDLER,
283
- INDEX, INHERITS, INSTEAD, ISNULL,
284
- LANCOMPILER, LISTEN, LOAD, LOCK_P, LOCATION, MOVE,
285
+ INCREMENT, INDEX, INHERITS, INSTEAD, ISNULL,
286
+ LANCOMPILER, LISTEN, LOAD, LOCK_P, LOCATION, MAXVALUE, MINVALUE, MOVE,
285
287
NEW, NONE, NOTHING, NOTNULL, OIDS, OPERATOR, PROCEDURAL,
286
288
RECIPE, RENAME, RESET, RETURNS, ROW, RULE,
287
- SEQUENCE, SETOF, SHOW, STATEMENT, STDIN, STDOUT, TRUSTED,
289
+ SEQUENCE, SETOF, SHOW, START, STATEMENT, STDIN, STDOUT, TRUSTED,
288
290
VACUUM, VERBOSE, VERSION
289
291
290
292
/* Keywords (obsolete; retain through next version for parser - thomas 1997-12-04) */
@@ -1094,7 +1096,7 @@ CreateAsElement: ColId
1094
1096
*
1095
1097
*****************************************************************************/
1096
1098
1097
- CreateSeqStmt: CREATE SEQUENCE relation_name OptSeqList
1099
+ CreateSeqStmt: CREATE SEQUENCE relation_name OptSeqList
1098
1100
{
1099
1101
CreateSeqStmt *n = makeNode(CreateSeqStmt);
1100
1102
n->seqname = $3;
@@ -1103,24 +1105,58 @@ CreateSeqStmt: CREATE SEQUENCE relation_name OptSeqList
1103
1105
}
1104
1106
;
1105
1107
1106
- OptSeqList:
1107
- OptSeqList OptSeqElem
1108
+ OptSeqList: OptSeqList OptSeqElem
1108
1109
{ $$ = lappend($1, $2); }
1109
- | { $$ = NIL; }
1110
+ | { $$ = NIL; }
1110
1111
;
1111
1112
1112
- OptSeqElem: IDENT NumConst
1113
+ OptSeqElem: CACHE IntegerOnly
1113
1114
{
1114
1115
$$ = makeNode(DefElem);
1115
- $$->defname = $1 ;
1116
+ $$->defname = "cache" ;
1116
1117
$$->arg = (Node *)$2;
1117
1118
}
1118
- | IDENT
1119
+ | CYCLE
1119
1120
{
1120
1121
$$ = makeNode(DefElem);
1121
- $$->defname = $1 ;
1122
+ $$->defname = "cycle" ;
1122
1123
$$->arg = (Node *)NULL;
1123
1124
}
1125
+ | INCREMENT IntegerOnly
1126
+ {
1127
+ $$ = makeNode(DefElem);
1128
+ $$->defname = "increment";
1129
+ $$->arg = (Node *)$2;
1130
+ }
1131
+ | MAXVALUE IntegerOnly
1132
+ {
1133
+ $$ = makeNode(DefElem);
1134
+ $$->defname = "maxvalue";
1135
+ $$->arg = (Node *)$2;
1136
+ }
1137
+ | MINVALUE IntegerOnly
1138
+ {
1139
+ $$ = makeNode(DefElem);
1140
+ $$->defname = "minvalue";
1141
+ $$->arg = (Node *)$2;
1142
+ }
1143
+ | START IntegerOnly
1144
+ {
1145
+ $$ = makeNode(DefElem);
1146
+ $$->defname = "start";
1147
+ $$->arg = (Node *)$2;
1148
+ }
1149
+ ;
1150
+
1151
+ IntegerOnly: Iconst
1152
+ {
1153
+ $$ = makeInteger($1);
1154
+ }
1155
+ | '-' Iconst
1156
+ {
1157
+ $$ = makeInteger($2);
1158
+ $$->val.ival = - $$->val.ival;
1159
+ }
1124
1160
;
1125
1161
1126
1162
/*****************************************************************************
@@ -1856,7 +1892,7 @@ event: SELECT { $$ = CMD_SELECT; }
1856
1892
;
1857
1893
1858
1894
opt_instead: INSTEAD { $$ = TRUE; }
1859
- | /*EMPTY*/ { $$ = FALSE; }
1895
+ | /*EMPTY*/ { $$ = FALSE; }
1860
1896
;
1861
1897
1862
1898
@@ -2101,10 +2137,8 @@ opt_analyze: ANALYZE { $$ = TRUE; }
2101
2137
| /*EMPTY*/ { $$ = FALSE; }
2102
2138
;
2103
2139
2104
- opt_va_list: '(' va_list ')'
2105
- { $$ = $2; }
2106
- | /* EMPTY */
2107
- { $$ = NIL; }
2140
+ opt_va_list: '(' va_list ')' { $$ = $2; }
2141
+ | /*EMPTY*/ { $$ = NIL; }
2108
2142
;
2109
2143
2110
2144
va_list: name
@@ -2236,7 +2270,7 @@ DeleteStmt: DELETE FROM relation_name
2236
2270
* Is it worth making this a separate command, with
2237
2271
* its own node type and file. I don't think so. bjm 1998/1/22
2238
2272
*/
2239
- LockStmt: LOCK_P relation_name
2273
+ LockStmt: LOCK_P opt_table relation_name
2240
2274
{
2241
2275
DeleteStmt *n = makeNode(DeleteStmt);
2242
2276
A_Const *c = makeNode(A_Const);
@@ -2247,7 +2281,7 @@ LockStmt: LOCK_P relation_name
2247
2281
c->typename->name = xlateSqlType("bool");
2248
2282
c->typename->typmod = -1;
2249
2283
2250
- n->relname = $2 ;
2284
+ n->relname = $3 ;
2251
2285
n->whereClause = (Node *)c;
2252
2286
$$ = (Node *)n;
2253
2287
}
@@ -2378,10 +2412,12 @@ SubSelect: SELECT opt_unique res_target_list2
2378
2412
}
2379
2413
;
2380
2414
2381
- result: INTO TABLE relation_name
2382
- { $$= $3; }
2383
- | /*EMPTY*/
2384
- { $$ = NULL; }
2415
+ result: INTO opt_table relation_name { $$= $3; }
2416
+ | /*EMPTY*/ { $$ = NULL; }
2417
+ ;
2418
+
2419
+ opt_table: TABLE { $$ = TRUE; }
2420
+ | /*EMPTY*/ { $$ = FALSE; }
2385
2421
;
2386
2422
2387
2423
opt_union: ALL { $$ = TRUE; }
@@ -4603,18 +4639,24 @@ TypeId: ColId
4603
4639
ColId: IDENT { $$ = $1; }
4604
4640
| datetime { $$ = $1; }
4605
4641
| ACTION { $$ = "action"; }
4642
+ | CACHE { $$ = "cache"; }
4643
+ | CYCLE { $$ = "cycle"; }
4606
4644
| DATABASE { $$ = "database"; }
4607
4645
| DELIMITERS { $$ = "delimiters"; }
4608
4646
| DOUBLE { $$ = "double"; }
4609
4647
| EACH { $$ = "each"; }
4610
4648
| FUNCTION { $$ = "function"; }
4649
+ | INCREMENT { $$ = "increment"; }
4611
4650
| INDEX { $$ = "index"; }
4612
4651
| KEY { $$ = "key"; }
4613
4652
| LANGUAGE { $$ = "language"; }
4614
4653
| LOCATION { $$ = "location"; }
4615
4654
| MATCH { $$ = "match"; }
4655
+ | MAXVALUE { $$ = "maxvalue"; }
4656
+ | MINVALUE { $$ = "minvalue"; }
4616
4657
| OPERATOR { $$ = "operator"; }
4617
4658
| OPTION { $$ = "option"; }
4659
+ | PASSWORD { $$ = "password"; }
4618
4660
| PRIVILEGES { $$ = "privileges"; }
4619
4661
| RECIPE { $$ = "recipe"; }
4620
4662
| ROW { $$ = "row"; }
0 commit comments