Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit561aead

Browse files
author
Thomas G. Lockhart
committed
Allow parsing expressions with ") -" (scan.l, scan.c only).
Make "TABLE" optional in "LOCK TABLE" command and "... INTO TABLE..." clause.Explicitly parse CREATE SEQUENCE options to allow a negative integer as an argument; this is an artifact of unary minus handling in scan.l.Add "PASSWORD" as an allowed column identifier.These fixes will require a "make clean install" but not a dump/reload.
1 parentc530fbf commit561aead

File tree

6 files changed

+5035
-4848
lines changed

6 files changed

+5035
-4848
lines changed

‎src/backend/parser/gram.c

Lines changed: 4694 additions & 4566 deletions
Large diffs are not rendered by default.

‎src/backend/parser/gram.y

Lines changed: 66 additions & 24 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 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 $
1414
*
1515
* HISTORY
1616
* AUTHORDATEMAJOR EVENT
@@ -170,6 +170,7 @@ Oidparam_type(int t); /* used in parse_expr.c */
170170
%type <sortgroupby>
171171
join_using
172172
%type <boolean>opt_union
173+
%type <boolean>opt_table
173174

174175
%type <node>position_expr
175176
%type <list>extract_list, position_list
@@ -202,6 +203,7 @@ Oidparam_type(int t); /* used in parse_expr.c */
202203
%type <list>OptCreateAs, CreateAsList
203204
%type <node>CreateAsElement
204205
%type <value>NumConst
206+
%type <value>IntegerOnly
205207
%type <attr>event_object, attr
206208
%type <sortgroupby>groupby
207209
%type <sortgroupby>sortby
@@ -277,14 +279,14 @@ Oidparam_type(int t); /* used in parse_expr.c */
277279

278280
/* Keywords for Postgres support (not in SQL92 reserved words) */
279281
%tokenABORT_TRANS, AFTER, AGGREGATE, ANALYZE,
280-
BACKWARD, BEFORE, BINARY, CLUSTER, COPY,
282+
BACKWARD, BEFORE, BINARY,CACHE,CLUSTER, COPY, CYCLE,
281283
DATABASE, DELIMITERS, DO, EACH, EXPLAIN, EXTEND,
282284
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,
285287
NEW, NONE, NOTHING, NOTNULL, OIDS, OPERATOR, PROCEDURAL,
286288
RECIPE, RENAME, RESET, RETURNS, ROW, RULE,
287-
SEQUENCE, SETOF, SHOW, STATEMENT, STDIN, STDOUT, TRUSTED,
289+
SEQUENCE, SETOF, SHOW,START,STATEMENT, STDIN, STDOUT, TRUSTED,
288290
VACUUM, VERBOSE, VERSION
289291

290292
/* Keywords (obsolete; retain through next version for parser - thomas 1997-12-04) */
@@ -1094,7 +1096,7 @@ CreateAsElement: ColId
10941096
*
10951097
*****************************************************************************/
10961098

1097-
CreateSeqStmt:CREATE SEQUENCE relation_name OptSeqList
1099+
CreateSeqStmt:CREATE SEQUENCE relation_name OptSeqList
10981100
{
10991101
CreateSeqStmt *n = makeNode(CreateSeqStmt);
11001102
n->seqname = $3;
@@ -1103,24 +1105,58 @@ CreateSeqStmt:CREATE SEQUENCE relation_name OptSeqList
11031105
}
11041106
;
11051107

1106-
OptSeqList:
1107-
OptSeqList OptSeqElem
1108+
OptSeqList: OptSeqList OptSeqElem
11081109
{ $$ = lappend($1, $2); }
1109-
|{ $$ = NIL; }
1110+
|{ $$ = NIL; }
11101111
;
11111112

1112-
OptSeqElem:IDENT NumConst
1113+
OptSeqElem: CACHE IntegerOnly
11131114
{
11141115
$$ = makeNode(DefElem);
1115-
$$->defname =$1;
1116+
$$->defname ="cache";
11161117
$$->arg = (Node *)$2;
11171118
}
1118-
|IDENT
1119+
| CYCLE
11191120
{
11201121
$$ = makeNode(DefElem);
1121-
$$->defname =$1;
1122+
$$->defname ="cycle";
11221123
$$->arg = (Node *)NULL;
11231124
}
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+
}
11241160
;
11251161

11261162
/*****************************************************************************
@@ -1856,7 +1892,7 @@ event:SELECT{ $$ = CMD_SELECT; }
18561892
;
18571893

18581894
opt_instead: INSTEAD{ $$ = TRUE; }
1859-
| /*EMPTY*/{ $$ = FALSE; }
1895+
| /*EMPTY*/{ $$ = FALSE; }
18601896
;
18611897

18621898

@@ -2101,10 +2137,8 @@ opt_analyze: ANALYZE{ $$ = TRUE; }
21012137
| /*EMPTY*/{ $$ = FALSE; }
21022138
;
21032139

2104-
opt_va_list: '(' va_list ')'
2105-
{ $$ = $2; }
2106-
| /* EMPTY */
2107-
{ $$ = NIL; }
2140+
opt_va_list: '(' va_list ')'{ $$ = $2; }
2141+
| /*EMPTY*/{ $$ = NIL; }
21082142
;
21092143

21102144
va_list: name
@@ -2236,7 +2270,7 @@ DeleteStmt: DELETE FROM relation_name
22362270
*Is it worth making this a separate command, with
22372271
*its own node type and file. I don't think so. bjm 1998/1/22
22382272
*/
2239-
LockStmt: LOCK_P relation_name
2273+
LockStmt: LOCK_Popt_tablerelation_name
22402274
{
22412275
DeleteStmt *n = makeNode(DeleteStmt);
22422276
A_Const *c = makeNode(A_Const);
@@ -2247,7 +2281,7 @@ LockStmt: LOCK_P relation_name
22472281
c->typename->name = xlateSqlType("bool");
22482282
c->typename->typmod = -1;
22492283

2250-
n->relname = $2;
2284+
n->relname = $3;
22512285
n->whereClause = (Node *)c;
22522286
$$ = (Node *)n;
22532287
}
@@ -2378,10 +2412,12 @@ SubSelect:SELECT opt_unique res_target_list2
23782412
}
23792413
;
23802414

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; }
23852421
;
23862422

23872423
opt_union: ALL{ $$ = TRUE; }
@@ -4603,18 +4639,24 @@ TypeId: ColId
46034639
ColId: IDENT{ $$ = $1; }
46044640
| datetime{ $$ = $1; }
46054641
| ACTION{ $$ = "action"; }
4642+
| CACHE{ $$ = "cache"; }
4643+
| CYCLE{ $$ = "cycle"; }
46064644
| DATABASE{ $$ = "database"; }
46074645
| DELIMITERS{ $$ = "delimiters"; }
46084646
| DOUBLE{ $$ = "double"; }
46094647
| EACH{ $$ = "each"; }
46104648
| FUNCTION{ $$ = "function"; }
4649+
| INCREMENT{ $$ = "increment"; }
46114650
| INDEX{ $$ = "index"; }
46124651
| KEY{ $$ = "key"; }
46134652
| LANGUAGE{ $$ = "language"; }
46144653
| LOCATION{ $$ = "location"; }
46154654
| MATCH{ $$ = "match"; }
4655+
| MAXVALUE{ $$ = "maxvalue"; }
4656+
| MINVALUE{ $$ = "minvalue"; }
46164657
| OPERATOR{ $$ = "operator"; }
46174658
| OPTION{ $$ = "option"; }
4659+
| PASSWORD{ $$ = "password"; }
46184660
| PRIVILEGES{ $$ = "privileges"; }
46194661
| RECIPE{ $$ = "recipe"; }
46204662
| ROW{ $$ = "row"; }

‎src/backend/parser/keywords.c

Lines changed: 7 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.35 1998/02/11 04:09:54 thomas Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.36 1998/03/18 16:50:21 thomas Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -49,6 +49,7 @@ static ScanKeyword ScanKeywords[] = {
4949
{"binary",BINARY},
5050
{"both",BOTH},
5151
{"by",BY},
52+
{"cache",CACHE},
5253
{"cascade",CASCADE},
5354
{"cast",CAST},
5455
{"char",CHAR},
@@ -71,6 +72,7 @@ static ScanKeyword ScanKeywords[] = {
7172
{"current_timestamp",CURRENT_TIMESTAMP},
7273
{"current_user",CURRENT_USER},
7374
{"cursor",CURSOR},
75+
{"cycle",CYCLE},
7476
{"database",DATABASE},
7577
{"day",DAY_P},
7678
{"decimal",DECIMAL},
@@ -105,6 +107,7 @@ static ScanKeyword ScanKeywords[] = {
105107
{"having",HAVING},
106108
{"hour",HOUR_P},
107109
{"in",IN},
110+
{"increment",INCREMENT},
108111
{"index",INDEX},
109112
{"inherits",INHERITS},
110113
{"inner",INNER_P},
@@ -127,7 +130,9 @@ static ScanKeyword ScanKeywords[] = {
127130
{"location",LOCATION},
128131
{"lock",LOCK_P},
129132
{"match",MATCH},
133+
{"maxvalue",MAXVALUE},
130134
{"minute",MINUTE_P},
135+
{"minvalue",MINVALUE},
131136
{"month",MONTH_P},
132137
{"move",MOVE},
133138
{"national",NATIONAL},
@@ -176,6 +181,7 @@ static ScanKeyword ScanKeywords[] = {
176181
{"set",SET},
177182
{"setof",SETOF},
178183
{"show",SHOW},
184+
{"start",START},
179185
{"statement",STATEMENT},
180186
{"stdin",STDIN},
181187
{"stdout",STDOUT},

‎src/backend/parser/parse.h

Lines changed: 69 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -156,69 +156,75 @@ typedef union
156156
#defineBACKWARD383
157157
#defineBEFORE384
158158
#defineBINARY385
159-
#defineCLUSTER386
160-
#defineCOPY387
161-
#defineDATABASE388
162-
#defineDELIMITERS389
163-
#defineDO390
164-
#defineEACH391
165-
#defineEXPLAIN392
166-
#defineEXTEND393
167-
#defineFORWARD394
168-
#defineFUNCTION395
169-
#defineHANDLER396
170-
#defineINDEX397
171-
#defineINHERITS398
172-
#defineINSTEAD399
173-
#defineISNULL400
174-
#defineLANCOMPILER401
175-
#defineLISTEN402
176-
#defineLOAD403
177-
#defineLOCK_P404
178-
#defineLOCATION405
179-
#defineMOVE406
180-
#defineNEW407
181-
#defineNONE408
182-
#defineNOTHING409
183-
#defineNOTNULL410
184-
#defineOIDS411
185-
#defineOPERATOR412
186-
#definePROCEDURAL413
187-
#defineRECIPE414
188-
#defineRENAME415
189-
#defineRESET416
190-
#defineRETURNS417
191-
#defineROW418
192-
#defineRULE419
193-
#defineSEQUENCE420
194-
#defineSETOF421
195-
#defineSHOW422
196-
#defineSTATEMENT423
197-
#defineSTDIN424
198-
#defineSTDOUT425
199-
#defineTRUSTED426
200-
#defineVACUUM427
201-
#defineVERBOSE428
202-
#defineVERSION429
203-
#defineARCHIVE430
204-
#defineUSER431
205-
#definePASSWORD432
206-
#defineCREATEDB433
207-
#defineNOCREATEDB434
208-
#defineCREATEUSER435
209-
#defineNOCREATEUSER436
210-
#defineVALID437
211-
#defineUNTIL438
212-
#defineIDENT439
213-
#defineSCONST440
214-
#defineOp441
215-
#defineICONST442
216-
#definePARAM443
217-
#defineFCONST444
218-
#defineOP445
219-
#defineUMINUS446
220-
#defineTYPECAST447
221-
#defineREDUCE448
159+
#defineCACHE386
160+
#defineCLUSTER387
161+
#defineCOPY388
162+
#defineCYCLE389
163+
#defineDATABASE390
164+
#defineDELIMITERS391
165+
#defineDO392
166+
#defineEACH393
167+
#defineEXPLAIN394
168+
#defineEXTEND395
169+
#defineFORWARD396
170+
#defineFUNCTION397
171+
#defineHANDLER398
172+
#defineINCREMENT399
173+
#defineINDEX400
174+
#defineINHERITS401
175+
#defineINSTEAD402
176+
#defineISNULL403
177+
#defineLANCOMPILER404
178+
#defineLISTEN405
179+
#defineLOAD406
180+
#defineLOCK_P407
181+
#defineLOCATION408
182+
#defineMAXVALUE409
183+
#defineMINVALUE410
184+
#defineMOVE411
185+
#defineNEW412
186+
#defineNONE413
187+
#defineNOTHING414
188+
#defineNOTNULL415
189+
#defineOIDS416
190+
#defineOPERATOR417
191+
#definePROCEDURAL418
192+
#defineRECIPE419
193+
#defineRENAME420
194+
#defineRESET421
195+
#defineRETURNS422
196+
#defineROW423
197+
#defineRULE424
198+
#defineSEQUENCE425
199+
#defineSETOF426
200+
#defineSHOW427
201+
#defineSTART428
202+
#defineSTATEMENT429
203+
#defineSTDIN430
204+
#defineSTDOUT431
205+
#defineTRUSTED432
206+
#defineVACUUM433
207+
#defineVERBOSE434
208+
#defineVERSION435
209+
#defineARCHIVE436
210+
#defineUSER437
211+
#definePASSWORD438
212+
#defineCREATEDB439
213+
#defineNOCREATEDB440
214+
#defineCREATEUSER441
215+
#defineNOCREATEUSER442
216+
#defineVALID443
217+
#defineUNTIL444
218+
#defineIDENT445
219+
#defineSCONST446
220+
#defineOp447
221+
#defineICONST448
222+
#definePARAM449
223+
#defineFCONST450
224+
#defineOP451
225+
#defineUMINUS452
226+
#defineTYPECAST453
227+
#defineREDUCE454
222228

223229

224230
externYYSTYPEyylval;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp