Commit f16f35a0 authored by Thomas G. Lockhart's avatar Thomas G. Lockhart

Support SQL92-ish DECLARE and FETCH commands.

Adds a few new keywords, but all are allowed as column names etc.
parent af8e2760
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.29 1998/09/02 15:47:30 thomas Exp $ * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.30 1998/09/13 04:19:29 thomas Exp $
* *
* HISTORY * HISTORY
* AUTHOR DATE MAJOR EVENT * AUTHOR DATE MAJOR EVENT
...@@ -185,6 +185,7 @@ Oid param_type(int t); /* used in parse_expr.c */ ...@@ -185,6 +185,7 @@ Oid param_type(int t); /* used in parse_expr.c */
%type <boolean> opt_inh_star, opt_binary, opt_instead, opt_with_copy, %type <boolean> opt_inh_star, opt_binary, opt_instead, opt_with_copy,
index_opt_unique, opt_verbose, opt_analyze index_opt_unique, opt_verbose, opt_analyze
%type <boolean> cursor_clause, opt_cursor, opt_readonly, opt_of
%type <ival> copy_dirn, def_type, opt_direction, remove_type, %type <ival> copy_dirn, def_type, opt_direction, remove_type,
opt_column, event opt_column, event
...@@ -256,7 +257,7 @@ Oid param_type(int t); /* used in parse_expr.c */ ...@@ -256,7 +257,7 @@ Oid param_type(int t); /* used in parse_expr.c */
*/ */
/* Keywords (in SQL92 reserved words) */ /* Keywords (in SQL92 reserved words) */
%token ACTION, ADD, ALL, ALTER, AND, ANY AS, ASC, %token ABSOLUTE, ACTION, ADD, ALL, ALTER, AND, ANY AS, ASC,
BEGIN_TRANS, BETWEEN, BOTH, BY, BEGIN_TRANS, BETWEEN, BOTH, BY,
CASCADE, CAST, CHAR, CHARACTER, CHECK, CLOSE, COLLATE, COLUMN, COMMIT, CASCADE, CAST, CHAR, CHARACTER, CHECK, CLOSE, COLLATE, COLUMN, COMMIT,
CONSTRAINT, CREATE, CROSS, CURRENT, CURRENT_DATE, CURRENT_TIME, CONSTRAINT, CREATE, CROSS, CURRENT, CURRENT_DATE, CURRENT_TIME,
...@@ -265,14 +266,14 @@ Oid param_type(int t); /* used in parse_expr.c */ ...@@ -265,14 +266,14 @@ Oid param_type(int t); /* used in parse_expr.c */
END_TRANS, EXECUTE, EXISTS, EXTRACT, END_TRANS, EXECUTE, EXISTS, EXTRACT,
FETCH, FLOAT, FOR, FOREIGN, FROM, FULL, FETCH, FLOAT, FOR, FOREIGN, FROM, FULL,
GRANT, GROUP, HAVING, HOUR_P, GRANT, GROUP, HAVING, HOUR_P,
IN, INNER_P, INSERT, INTERVAL, INTO, IS, IN, INNER_P, INSENSITIVE, INSERT, INTERVAL, INTO, IS,
JOIN, KEY, LANGUAGE, LEADING, LEFT, LIKE, LOCAL, JOIN, KEY, LANGUAGE, LEADING, LEFT, LIKE, LOCAL,
MATCH, MINUTE_P, MONTH_P, NAMES, MATCH, MINUTE_P, MONTH_P, NAMES,
NATIONAL, NATURAL, NCHAR, NO, NOT, NOTIFY, NULL_P, NUMERIC, NATIONAL, NATURAL, NCHAR, NEXT, NO, NOT, NOTIFY, NULL_P, NUMERIC,
ON, OPTION, OR, ORDER, OUTER_P, OF, ON, ONLY, OPTION, OR, ORDER, OUTER_P,
PARTIAL, POSITION, PRECISION, PRIMARY, PRIVILEGES, PROCEDURE, PUBLIC, PARTIAL, POSITION, PRECISION, PRIMARY, PRIOR, PRIVILEGES, PROCEDURE, PUBLIC,
REFERENCES, REVOKE, RIGHT, ROLLBACK, READ, REFERENCES, RELATIVE, REVOKE, RIGHT, ROLLBACK,
SECOND_P, SELECT, SET, SUBSTRING, SCROLL, SECOND_P, SELECT, SET, SUBSTRING,
TABLE, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, TABLE, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE,
TO, TRAILING, TRANSACTION, TRIM, TO, TRAILING, TRANSACTION, TRIM,
UNION, UNIQUE, UPDATE, USER, USING, UNION, UNIQUE, UPDATE, USER, USING,
...@@ -796,6 +797,16 @@ ColConstraint: ...@@ -796,6 +797,16 @@ ColConstraint:
{ $$ = $1; } { $$ = $1; }
; ;
/* The column constraint WITH NULL gives a shift/reduce error
* because it requires yacc to look more than one token ahead to
* resolve WITH TIME ZONE and WITH NULL.
* So, leave it out of the syntax for now.
| WITH NULL_P
{
$$ = NULL;
}
* - thomas 1998-09-12
*/
ColConstraintElem: CHECK '(' constraint_expr ')' ColConstraintElem: CHECK '(' constraint_expr ')'
{ {
Constraint *n = makeNode(Constraint); Constraint *n = makeNode(Constraint);
...@@ -1512,13 +1523,26 @@ DestroyStmt: DROP TABLE relation_name_list ...@@ -1512,13 +1523,26 @@ DestroyStmt: DROP TABLE relation_name_list
/***************************************************************************** /*****************************************************************************
* *
* QUERY: * QUERY:
* fetch/move [forward | backward] [number | all ] [ in <portalname> ] * fetch/move [forward | backward] [ # | all ] [ in <portalname> ]
* fetch [ forward | backward | absolute | relative ]
* [ # | all | next | prior ] [ [ in | from ] <portalname> ]
* *
*****************************************************************************/ *****************************************************************************/
FetchStmt: FETCH opt_direction fetch_how_many opt_portal_name FetchStmt: FETCH opt_direction fetch_how_many opt_portal_name
{ {
FetchStmt *n = makeNode(FetchStmt); FetchStmt *n = makeNode(FetchStmt);
if ($2 == RELATIVE)
{
if ($3 == 0)
elog(ERROR,"FETCH/RELATIVE at current position is not supported");
$2 = FORWARD;
}
if ($3 < 0)
{
$3 = -$3;
$2 = (($2 == FORWARD)? BACKWARD: FORWARD);
}
n->direction = $2; n->direction = $2;
n->howMany = $3; n->howMany = $3;
n->portalname = $4; n->portalname = $4;
...@@ -1528,6 +1552,11 @@ FetchStmt: FETCH opt_direction fetch_how_many opt_portal_name ...@@ -1528,6 +1552,11 @@ FetchStmt: FETCH opt_direction fetch_how_many opt_portal_name
| MOVE opt_direction fetch_how_many opt_portal_name | MOVE opt_direction fetch_how_many opt_portal_name
{ {
FetchStmt *n = makeNode(FetchStmt); FetchStmt *n = makeNode(FetchStmt);
if ($3 < 0)
{
$3 = -$3;
$2 = (($2 == FORWARD)? BACKWARD: FORWARD);
}
n->direction = $2; n->direction = $2;
n->howMany = $3; n->howMany = $3;
n->portalname = $4; n->portalname = $4;
...@@ -1536,19 +1565,27 @@ FetchStmt: FETCH opt_direction fetch_how_many opt_portal_name ...@@ -1536,19 +1565,27 @@ FetchStmt: FETCH opt_direction fetch_how_many opt_portal_name
} }
; ;
opt_direction: FORWARD { $$ = FORWARD; } opt_direction: FORWARD { $$ = FORWARD; }
| BACKWARD { $$ = BACKWARD; } | BACKWARD { $$ = BACKWARD; }
| /*EMPTY*/ { $$ = FORWARD; /* default */ } | RELATIVE { $$ = RELATIVE; }
| ABSOLUTE
{
elog(NOTICE,"FETCH/ABSOLUTE not supported, using RELATIVE");
$$ = RELATIVE;
}
| /*EMPTY*/ { $$ = FORWARD; /* default */ }
; ;
fetch_how_many: Iconst fetch_how_many: Iconst { $$ = $1; }
{ $$ = $1; | '-' Iconst { $$ = - $2; }
if ($1 <= 0) elog(ERROR,"Please specify nonnegative count for fetch"); }
| ALL { $$ = 0; /* 0 means fetch all tuples*/ } | ALL { $$ = 0; /* 0 means fetch all tuples*/ }
| NEXT { $$ = 1; }
| PRIOR { $$ = -1; }
| /*EMPTY*/ { $$ = 1; /*default*/ } | /*EMPTY*/ { $$ = 1; /*default*/ }
; ;
opt_portal_name: IN name { $$ = $2; } opt_portal_name: IN name { $$ = $2; }
| FROM name { $$ = $2; }
| /*EMPTY*/ { $$ = NULL; } | /*EMPTY*/ { $$ = NULL; }
; ;
...@@ -2460,11 +2497,12 @@ UpdateStmt: UPDATE relation_name ...@@ -2460,11 +2497,12 @@ UpdateStmt: UPDATE relation_name
* CURSOR STATEMENTS * CURSOR STATEMENTS
* *
*****************************************************************************/ *****************************************************************************/
CursorStmt: DECLARE name opt_binary CURSOR FOR CursorStmt: DECLARE name opt_cursor CURSOR FOR
SELECT opt_unique res_target_list2 SELECT opt_unique res_target_list2
from_clause where_clause from_clause where_clause
group_clause having_clause group_clause having_clause
union_clause sort_clause union_clause sort_clause
cursor_clause
{ {
SelectStmt *n = makeNode(SelectStmt); SelectStmt *n = makeNode(SelectStmt);
...@@ -2493,6 +2531,30 @@ CursorStmt: DECLARE name opt_binary CURSOR FOR ...@@ -2493,6 +2531,30 @@ CursorStmt: DECLARE name opt_binary CURSOR FOR
} }
; ;
opt_cursor: BINARY { $$ = TRUE; }
| INSENSITIVE { $$ = FALSE; }
| SCROLL { $$ = FALSE; }
| INSENSITIVE SCROLL { $$ = FALSE; }
| /*EMPTY*/ { $$ = FALSE; }
;
cursor_clause: FOR opt_readonly { $$ = $2; }
| /*EMPTY*/ { $$ = FALSE; }
;
opt_readonly: READ ONLY { $$ = TRUE; }
| UPDATE opt_of
{
elog(ERROR,"DECLARE/UPDATE not supported;"
" Cursors must be READ ONLY.");
$$ = FALSE;
}
;
opt_of: OF columnList
{
$$ = FALSE;
}
/***************************************************************************** /*****************************************************************************
* *
...@@ -4551,6 +4613,7 @@ TypeId: ColId ...@@ -4551,6 +4613,7 @@ TypeId: ColId
*/ */
ColId: IDENT { $$ = $1; } ColId: IDENT { $$ = $1; }
| datetime { $$ = $1; } | datetime { $$ = $1; }
| ABSOLUTE { $$ = "absolute"; }
| ACTION { $$ = "action"; } | ACTION { $$ = "action"; }
| CACHE { $$ = "cache"; } | CACHE { $$ = "cache"; }
| CYCLE { $$ = "cycle"; } | CYCLE { $$ = "cycle"; }
...@@ -4562,18 +4625,26 @@ ColId: IDENT { $$ = $1; } ...@@ -4562,18 +4625,26 @@ ColId: IDENT { $$ = $1; }
| FUNCTION { $$ = "function"; } | FUNCTION { $$ = "function"; }
| INCREMENT { $$ = "increment"; } | INCREMENT { $$ = "increment"; }
| INDEX { $$ = "index"; } | INDEX { $$ = "index"; }
| INSENSITIVE { $$ = "insensitive"; }
| KEY { $$ = "key"; } | KEY { $$ = "key"; }
| LANGUAGE { $$ = "language"; } | LANGUAGE { $$ = "language"; }
| LOCATION { $$ = "location"; } | LOCATION { $$ = "location"; }
| MATCH { $$ = "match"; } | MATCH { $$ = "match"; }
| MAXVALUE { $$ = "maxvalue"; } | MAXVALUE { $$ = "maxvalue"; }
| MINVALUE { $$ = "minvalue"; } | MINVALUE { $$ = "minvalue"; }
| NEXT { $$ = "next"; }
| OF { $$ = "of"; }
| ONLY { $$ = "only"; }
| OPERATOR { $$ = "operator"; } | OPERATOR { $$ = "operator"; }
| OPTION { $$ = "option"; } | OPTION { $$ = "option"; }
| PASSWORD { $$ = "password"; } | PASSWORD { $$ = "password"; }
| PRIOR { $$ = "prior"; }
| PRIVILEGES { $$ = "privileges"; } | PRIVILEGES { $$ = "privileges"; }
| READ { $$ = "read"; }
| RECIPE { $$ = "recipe"; } | RECIPE { $$ = "recipe"; }
| RELATIVE { $$ = "relative"; }
| ROW { $$ = "row"; } | ROW { $$ = "row"; }
| SCROLL { $$ = "scroll"; }
| SERIAL { $$ = "serial"; } | SERIAL { $$ = "serial"; }
| START { $$ = "start"; } | START { $$ = "start"; }
| STATEMENT { $$ = "statement"; } | STATEMENT { $$ = "statement"; }
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.44 1998/09/01 04:30:23 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.45 1998/09/13 04:19:31 thomas Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -28,8 +28,9 @@ ...@@ -28,8 +28,9 @@
* search is used to locate entries. * search is used to locate entries.
*/ */
static ScanKeyword ScanKeywords[] = { static ScanKeyword ScanKeywords[] = {
/* name value */ /* name, value */
{"abort", ABORT_TRANS}, {"abort", ABORT_TRANS},
{"absolute", ABSOLUTE},
{"action", ACTION}, {"action", ACTION},
{"add", ADD}, {"add", ADD},
{"after", AFTER}, {"after", AFTER},
...@@ -143,6 +144,7 @@ static ScanKeyword ScanKeywords[] = { ...@@ -143,6 +144,7 @@ static ScanKeyword ScanKeywords[] = {
{"natural", NATURAL}, {"natural", NATURAL},
{"nchar", NCHAR}, {"nchar", NCHAR},
{"new", NEW}, {"new", NEW},
{"next", NEXT},
{"no", NO}, {"no", NO},
{"nocreatedb", NOCREATEDB}, {"nocreatedb", NOCREATEDB},
{"nocreateuser", NOCREATEUSER}, {"nocreateuser", NOCREATEUSER},
...@@ -153,9 +155,11 @@ static ScanKeyword ScanKeywords[] = { ...@@ -153,9 +155,11 @@ static ScanKeyword ScanKeywords[] = {
{"notnull", NOTNULL}, {"notnull", NOTNULL},
{"null", NULL_P}, {"null", NULL_P},
{"numeric", NUMERIC}, {"numeric", NUMERIC},
{"of", OF},
{"oids", OIDS}, {"oids", OIDS},
{"old", CURRENT}, {"old", CURRENT},
{"on", ON}, {"on", ON},
{"only", ONLY},
{"operator", OPERATOR}, {"operator", OPERATOR},
{"option", OPTION}, {"option", OPTION},
{"or", OR}, {"or", OR},
...@@ -166,12 +170,15 @@ static ScanKeyword ScanKeywords[] = { ...@@ -166,12 +170,15 @@ static ScanKeyword ScanKeywords[] = {
{"position", POSITION}, {"position", POSITION},
{"precision", PRECISION}, {"precision", PRECISION},
{"primary", PRIMARY}, {"primary", PRIMARY},
{"prior", PRIOR},
{"privileges", PRIVILEGES}, {"privileges", PRIVILEGES},
{"procedural", PROCEDURAL}, {"procedural", PROCEDURAL},
{"procedure", PROCEDURE}, {"procedure", PROCEDURE},
{"public", PUBLIC}, {"public", PUBLIC},
{"read", READ},
{"recipe", RECIPE}, {"recipe", RECIPE},
{"references", REFERENCES}, {"references", REFERENCES},
{"relative", RELATIVE},
{"rename", RENAME}, {"rename", RENAME},
{"reset", RESET}, {"reset", RESET},
{"returns", RETURNS}, {"returns", RETURNS},
...@@ -180,6 +187,7 @@ static ScanKeyword ScanKeywords[] = { ...@@ -180,6 +187,7 @@ static ScanKeyword ScanKeywords[] = {
{"rollback", ROLLBACK}, {"rollback", ROLLBACK},
{"row", ROW}, {"row", ROW},
{"rule", RULE}, {"rule", RULE},
{"scroll", SCROLL},
{"second", SECOND_P}, {"second", SECOND_P},
{"select", SELECT}, {"select", SELECT},
{"sequence", SEQUENCE}, {"sequence", SEQUENCE},
......
...@@ -29,208 +29,217 @@ typedef union ...@@ -29,208 +29,217 @@ typedef union
RuleStmt *rstmt; RuleStmt *rstmt;
InsertStmt *astmt; InsertStmt *astmt;
} YYSTYPE; } YYSTYPE;
#define ACTION 258 #define ABSOLUTE 258
#define ADD 259 #define ACTION 259
#define ALL 260 #define ADD 260
#define ALTER 261 #define ALL 261
#define AND 262 #define ALTER 262
#define ANY 263 #define AND 263
#define AS 264 #define ANY 264
#define ASC 265 #define AS 265
#define BEGIN_TRANS 266 #define ASC 266
#define BETWEEN 267 #define BEGIN_TRANS 267
#define BOTH 268 #define BETWEEN 268
#define BY 269 #define BOTH 269
#define CASCADE 270 #define BY 270
#define CAST 271 #define CASCADE 271
#define CHAR 272 #define CAST 272
#define CHARACTER 273 #define CHAR 273
#define CHECK 274 #define CHARACTER 274
#define CLOSE 275 #define CHECK 275
#define COLLATE 276 #define CLOSE 276
#define COLUMN 277 #define COLLATE 277
#define COMMIT 278 #define COLUMN 278
#define CONSTRAINT 279 #define COMMIT 279
#define CREATE 280 #define CONSTRAINT 280
#define CROSS 281 #define CREATE 281
#define CURRENT 282 #define CROSS 282
#define CURRENT_DATE 283 #define CURRENT 283
#define CURRENT_TIME 284 #define CURRENT_DATE 284
#define CURRENT_TIMESTAMP 285 #define CURRENT_TIME 285
#define CURRENT_USER 286 #define CURRENT_TIMESTAMP 286
#define CURSOR 287 #define CURRENT_USER 287
#define DAY_P 288 #define CURSOR 288
#define DECIMAL 289 #define DAY_P 289
#define DECLARE 290 #define DECIMAL 290
#define DEFAULT 291 #define DECLARE 291
#define DELETE 292 #define DEFAULT 292
#define DESC 293 #define DELETE 293
#define DISTINCT 294 #define DESC 294
#define DOUBLE 295 #define DISTINCT 295
#define DROP 296 #define DOUBLE 296
#define END_TRANS 297 #define DROP 297
#define EXECUTE 298 #define END_TRANS 298
#define EXISTS 299 #define EXECUTE 299
#define EXTRACT 300 #define EXISTS 300
#define FETCH 301 #define EXTRACT 301
#define FLOAT 302 #define FETCH 302
#define FOR 303 #define FLOAT 303
#define FOREIGN 304 #define FOR 304
#define FROM 305 #define FOREIGN 305
#define FULL 306 #define FROM 306
#define GRANT 307 #define FULL 307
#define GROUP 308 #define GRANT 308
#define HAVING 309 #define GROUP 309
#define HOUR_P 310 #define HAVING 310
#define IN 311 #define HOUR_P 311
#define INNER_P 312 #define IN 312
#define INSERT 313 #define INNER_P 313
#define INTERVAL 314 #define INSENSITIVE 314
#define INTO 315 #define INSERT 315
#define IS 316 #define INTERVAL 316
#define JOIN 317 #define INTO 317
#define KEY 318 #define IS 318
#define LANGUAGE 319 #define JOIN 319
#define LEADING 320 #define KEY 320
#define LEFT 321 #define LANGUAGE 321
#define LIKE 322 #define LEADING 322
#define LOCAL 323 #define LEFT 323
#define MATCH 324 #define LIKE 324
#define MINUTE_P 325 #define LOCAL 325
#define MONTH_P 326 #define MATCH 326
#define NAMES 327 #define MINUTE_P 327
#define NATIONAL 328 #define MONTH_P 328
#define NATURAL 329 #define NAMES 329
#define NCHAR 330 #define NATIONAL 330
#define NO 331 #define NATURAL 331
#define NOT 332 #define NCHAR 332
#define NOTIFY 333 #define NEXT 333
#define NULL_P 334 #define NO 334
#define NUMERIC 335 #define NOT 335
#define ON 336 #define NOTIFY 336
#define OPTION 337 #define NULL_P 337
#define OR 338 #define NUMERIC 338
#define ORDER 339 #define OF 339
#define OUTER_P 340 #define ON 340
#define PARTIAL 341 #define ONLY 341
#define POSITION 342 #define OPTION 342
#define PRECISION 343 #define OR 343
#define PRIMARY 344 #define ORDER 344
#define PRIVILEGES 345 #define OUTER_P 345
#define PROCEDURE 346 #define PARTIAL 346
#define PUBLIC 347 #define POSITION 347
#define REFERENCES 348 #define PRECISION 348
#define REVOKE 349 #define PRIMARY 349
#define RIGHT 350 #define PRIOR 350
#define ROLLBACK 351 #define PRIVILEGES 351
#define SECOND_P 352 #define PROCEDURE 352
#define SELECT 353 #define PUBLIC 353
#define SET 354 #define READ 354
#define SUBSTRING 355 #define REFERENCES 355
#define TABLE 356 #define RELATIVE 356
#define TIME 357 #define REVOKE 357
#define TIMESTAMP 358 #define RIGHT 358
#define TIMEZONE_HOUR 359 #define ROLLBACK 359
#define TIMEZONE_MINUTE 360 #define SCROLL 360
#define TO 361 #define SECOND_P 361
#define TRAILING 362 #define SELECT 362
#define TRANSACTION 363 #define SET 363
#define TRIM 364 #define SUBSTRING 364
#define UNION 365 #define TABLE 365
#define UNIQUE 366 #define TIME 366
#define UPDATE 367 #define TIMESTAMP 367
#define USER 368 #define TIMEZONE_HOUR 368
#define USING 369 #define TIMEZONE_MINUTE 369
#define VALUES 370 #define TO 370
#define VARCHAR 371 #define TRAILING 371
#define VARYING 372 #define TRANSACTION 372
#define VIEW 373 #define TRIM 373
#define WHERE 374 #define UNION 374
#define WITH 375 #define UNIQUE 375
#define WORK 376 #define UPDATE 376
#define YEAR_P 377 #define USER 377
#define ZONE 378 #define USING 378
#define FALSE_P 379 #define VALUES 379
#define TRIGGER 380 #define VARCHAR 380
#define TRUE_P 381 #define VARYING 381
#define TYPE_P 382 #define VIEW 382
#define ABORT_TRANS 383 #define WHERE 383
#define AFTER 384 #define WITH 384
#define AGGREGATE 385 #define WORK 385
#define ANALYZE 386 #define YEAR_P 386
#define BACKWARD 387 #define ZONE 387
#define BEFORE 388 #define FALSE_P 388
#define BINARY 389 #define TRIGGER 389
#define CACHE 390 #define TRUE_P 390
#define CLUSTER 391 #define TYPE_P 391
#define COPY 392 #define ABORT_TRANS 392
#define CYCLE 393 #define AFTER 393
#define DATABASE 394 #define AGGREGATE 394
#define DELIMITERS 395 #define ANALYZE 395
#define DO 396 #define BACKWARD 396
#define EACH 397 #define BEFORE 397
#define EXPLAIN 398 #define BINARY 398
#define EXTEND 399 #define CACHE 399
#define FORWARD 400 #define CLUSTER 400
#define FUNCTION 401 #define COPY 401
#define HANDLER 402 #define CYCLE 402
#define INCREMENT 403 #define DATABASE 403
#define INDEX 404 #define DELIMITERS 404
#define INHERITS 405 #define DO 405
#define INSTEAD 406 #define EACH 406
#define ISNULL 407 #define EXPLAIN 407
#define LANCOMPILER 408 #define EXTEND 408
#define LISTEN 409 #define FORWARD 409
#define LOAD 410 #define FUNCTION 410
#define LOCK_P 411 #define HANDLER 411
#define LOCATION 412 #define INCREMENT 412
#define MAXVALUE 413 #define INDEX 413
#define MINVALUE 414 #define INHERITS 414
#define MOVE 415 #define INSTEAD 415
#define NEW 416 #define ISNULL 416
#define NONE 417 #define LANCOMPILER 417
#define NOTHING 418 #define LISTEN 418
#define NOTNULL 419 #define LOAD 419
#define OIDS 420 #define LOCK_P 420
#define OPERATOR 421 #define LOCATION 421
#define PROCEDURAL 422 #define MAXVALUE 422
#define RECIPE 423 #define MINVALUE 423
#define RENAME 424 #define MOVE 424
#define RESET 425 #define NEW 425
#define RETURNS 426 #define NONE 426
#define ROW 427 #define NOTHING 427
#define RULE 428 #define NOTNULL 428
#define SEQUENCE 429 #define OIDS 429
#define SERIAL 430 #define OPERATOR 430
#define SETOF 431 #define PROCEDURAL 431
#define SHOW 432 #define RECIPE 432
#define START 433 #define RENAME 433
#define STATEMENT 434 #define RESET 434
#define STDIN 435 #define RETURNS 435
#define STDOUT 436 #define ROW 436
#define TRUSTED 437 #define RULE 437
#define VACUUM 438 #define SEQUENCE 438
#define VERBOSE 439 #define SERIAL 439
#define VERSION 440 #define SETOF 440
#define ENCODING 441 #define SHOW 441
#define UNLISTEN 442 #define START 442
#define ARCHIVE 443 #define STATEMENT 443
#define PASSWORD 444 #define STDIN 444
#define CREATEDB 445 #define STDOUT 445
#define NOCREATEDB 446 #define TRUSTED 446
#define CREATEUSER 447 #define VACUUM 447
#define NOCREATEUSER 448 #define VERBOSE 448
#define VALID 449 #define VERSION 449
#define UNTIL 450 #define ENCODING 450
#define IDENT 451 #define UNLISTEN 451
#define SCONST 452 #define ARCHIVE 452
#define Op 453 #define PASSWORD 453
#define ICONST 454 #define CREATEDB 454
#define PARAM 455 #define NOCREATEDB 455
#define FCONST 456 #define CREATEUSER 456
#define OP 457 #define NOCREATEUSER 457
#define UMINUS 458 #define VALID 458
#define TYPECAST 459 #define UNTIL 459
#define IDENT 460
#define SCONST 461
#define Op 462
#define ICONST 463
#define PARAM 464
#define FCONST 465
#define OP 466
#define UMINUS 467
#define TYPECAST 468
extern YYSTYPE yylval; extern YYSTYPE yylval;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment