]> granicus.if.org Git - postgresql/commitdiff
Support SQL92-ish DECLARE and FETCH commands.
authorThomas G. Lockhart <lockhart@fourpalms.org>
Sun, 13 Sep 1998 04:19:33 +0000 (04:19 +0000)
committerThomas G. Lockhart <lockhart@fourpalms.org>
Sun, 13 Sep 1998 04:19:33 +0000 (04:19 +0000)
Adds a few new keywords, but all are allowed as column names etc.

src/backend/parser/gram.y
src/backend/parser/keywords.c
src/backend/parser/parse.h

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