1- /* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.201 2002/11/07 09:48:09 meskes Exp $*/
1+ /* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.202 2002/11/15 15:47:44 meskes Exp $*/
22
33/* Copyright comment*/
44%{
@@ -211,7 +211,7 @@ make_name(void)
211211
212212 KEY
213213
214- LANCOMPILER LANGUAGE LEADING LEFT LEVEL LIKE LIMIT LISTEN
214+ LANCOMPILER LANGUAGELAST LEADING LEFT LEVEL LIKE LIMIT LISTEN
215215 LOAD LOCAL LOCATION LOCK_P
216216
217217MATCH MAXVALUE MINUTE_P MINVALUE MODE MONTH_P MOVE
@@ -224,10 +224,10 @@ make_name(void)
224224 OUT_P OUTER_P OVERLAPS OVERLAY OWNER
225225
226226PARTIAL PASSWORD PATH_P PENDANT PLACING POSITION
227- PRECISION PREPARE PRIMARY PRIOR PRIVILEGES PROCEDURAL PROCEDURE
227+ PRECISIONPRESERVE PREPARE PRIMARY PRIOR PRIVILEGES PROCEDURAL PROCEDURE
228228
229229READ REAL RECHECK REFERENCES REINDEX RELATIVE RENAME REPLACE
230- RESET RESTRICT RETURNS REVOKE RIGHT ROLLBACK ROW RULE
230+ RESET RESTRICT RETURNS REVOKE RIGHT ROLLBACK ROWROWS RULE
231231
232232SCHEMA SCROLL SECOND_P SECURITY SELECT SEQUENCE SERIALIZABLE
233233 SESSION SESSION_USER SET SETOF SHARE SHOW SIMILAR SIMPLE SMALLINT SOME
@@ -239,7 +239,7 @@ make_name(void)
239239 UNENCRYPTED UNION UNIQUE UNKNOWN UNLISTEN UNTIL UPDATE USAGE
240240 USER USING
241241
242- VACUUM VALID VALUES VARCHAR VARYING VERBOSE VERSION VIEW VOLATILE
242+ VACUUM VALIDVALUE VALUES VARCHAR VARYING VERBOSE VERSION VIEW VOLATILE
243243WHEN WHERE WITH WITHOUT WORK WRITE
244244 YEAR_P
245245 ZONE
@@ -296,7 +296,7 @@ make_name(void)
296296%type <str> update_target_el opt_id qualified_name database_name
297297%type <str> access_method attr_name index_name name func_name
298298%type <str> file_name AexprConst c_expr ConstTypename var_list
299- %type <str> a_expr b_expr TruncateStmt CommentStmt
299+ %type <str> a_expr b_expr TruncateStmt CommentStmt OnCommitOption opt_by
300300%type <str> opt_indirection expr_list extract_list extract_arg
301301%type <str> position_list substr_list substr_from alter_column_default
302302%type <str> trim_list in_expr substr_for attrs TableFuncElement
@@ -1094,11 +1094,11 @@ opt_using:USING{ $$ = make_str("using"); }
10941094 *****************************************************************************/
10951095
10961096CreateStmt :CREATE OptTemp TABLE qualified_name ' (' OptTableElementList ' )'
1097- OptInherit OptWithOids
1098- {$$ = cat_str(9 , make_str(" create" ),$2 , make_str(" table" ),$4 , make_str(" (" ),$6 , make_str(" )" ),$8 ,$9 ); }
1097+ OptInherit OptWithOids OnCommitOption
1098+ {$$ = cat_str(10 , make_str(" create" ),$2 , make_str(" table" ),$4 , make_str(" (" ),$6 , make_str(" )" ),$8 ,$9 , $10 ); }
10991099| CREATE OptTemp TABLE qualified_name OF qualified_name
1100- ' (' OptTableElementList ' )' OptWithOids
1101- {$$ = cat_str(10 , make_str(" create" ),$2 , make_str(" table" ),$4 , make_str(" of" ),$6 , make_str(" (" ),$8 , make_str(" )" ),$10 ); }
1100+ ' (' OptTableElementList ' )' OptWithOids OnCommitOption
1101+ {$$ = cat_str(11 , make_str(" create" ),$2 , make_str(" table" ),$4 , make_str(" of" ),$6 , make_str(" (" ),$8 , make_str(" )" ),$10 , $11 ); }
11021102;
11031103
11041104/*
@@ -1290,6 +1290,12 @@ OptWithOids: WITH OIDS{ $$ = make_str("with oids"); }
12901290| /* EMPTY*/ {$$ = EMPTY; }
12911291;
12921292
1293+ OnCommitOption :ON COMMIT DROP {$$ = make_str(" on commit drop" ); }
1294+ | ON COMMIT DELETE_P ROWS {$$ = make_str(" on commit delete rows" ); }
1295+ | ON COMMIT PRESERVE ROWS {$$ = make_str(" on commit preserve rows" ); }
1296+ | /* EMPTY*/ {$$ = EMPTY; }
1297+ ;
1298+
12931299
12941300/*
12951301 * Note: CREATE TABLE ... AS SELECT ... is just another spelling for
@@ -1341,16 +1347,22 @@ OptSeqElem: CACHE NumConst
13411347{$$ = cat2_str(make_str(" cache" ),$2 ); }
13421348| CYCLE
13431349{$$ = make_str(" cycle" ); }
1344- | INCREMENT NumConst
1345- {$$ = cat2_str(make_str(" increment" ),$2 ); }
1350+ | NO CYCLE
1351+ {$$ = make_str(" no cycle" ); }
1352+ | INCREMENT opt_by NumConst
1353+ {$$ = cat_str(3 , make_str(" increment" ),$2 ,$3 ); }
13461354| MAXVALUE NumConst
13471355{$$ = cat2_str(make_str(" maxvalue" ),$2 ); }
13481356| MINVALUE NumConst
13491357{$$ = cat2_str(make_str(" minvalue" ),$2 ); }
1350- | START NumConst
1351- {$$ =cat2_str( make_str(" start" ),$2 ); }
1358+ | START opt_by NumConst
1359+ {$$ =cat_str( 3 , make_str(" start" ),$2 , $3 ); }
13521360;
13531361
1362+ opt_by :BY {$$ = make_str(" by" ); }
1363+ | /* EMPTY*/ {$$ = EMPTY; }
1364+ ;
1365+
13541366/* ****************************************************************************
13551367 *
13561368 *QUERIES :
@@ -1679,9 +1691,10 @@ direction:FORWARD{ $$ = make_str("forward"); }
16791691;
16801692
16811693fetch_how_many :IntConst {$$ =$1 ; }
1682- | ALL {$$ = make_str(" all" ); }
1683- | NEXT {$$ = make_str(" next" ); }
1684- | PRIOR {$$ = make_str(" prior" ); }
1694+ | ALL {$$ = make_str(" all" ); }
1695+ | LAST {$$ = make_str(" last" ); }
1696+ | NEXT {$$ = make_str(" next" ); }
1697+ | PRIOR {$$ = make_str(" prior" ); }
16851698;
16861699
16871700from_in :IN_P {$$ = make_str(" in" ); }
@@ -2295,12 +2308,18 @@ CreateConversionStmt:
22952308 *
22962309 *QUERY:
22972310 *cluster <index_name> on <qualified_name>
2311+ * cluster <qualified_name>
2312+ * cluster ALL
22982313 *
22992314 *****************************************************************************/
23002315
23012316ClusterStmt :CLUSTER index_name ON qualified_name
23022317{$$ = cat_str(4 , make_str(" cluster" ),$2 , make_str(" on" ),$4 ); }
2303- ;
2318+ | CLUSTER qualified_name
2319+ {$$ = cat2_str(make_str(" cluster" ),$2 ); }
2320+ | CLUSTER ALL
2321+ {$$ = make_str(" cluster all" ); }
2322+ ;
23042323
23052324
23062325/* ****************************************************************************
@@ -3454,6 +3473,8 @@ c_expr: columnref
34543473{$$ =$1 ; }
34553474| EXISTS select_with_parens
34563475{$$ = cat2_str(make_str(" exists" ),$2 ); }
3476+ | VALUE
3477+ {$$ = make_str(" value" ); }
34573478;
34583479/*
34593480 * This used to use ecpg_expr, but since there is no shift/reduce conflict
@@ -5145,7 +5166,8 @@ unreserved_keyword:
51455166| ISOLATION {$$ = make_str(" isolation" ); }
51465167| KEY {$$ = make_str(" key" ); }
51475168| LANGUAGE {$$ = make_str(" language" ); }
5148- | LANCOMPILER {$$ = make_str(" lancompiler" ); }
5169+ | LANCOMPILER {$$ = make_str(" lancompiler" ); }
5170+ | LAST {$$ = make_str(" last" ); }
51495171| LEVEL {$$ = make_str(" level" ); }
51505172| LISTEN {$$ = make_str(" listen" ); }
51515173| LOAD {$$ = make_str(" load" ); }
@@ -5179,6 +5201,7 @@ unreserved_keyword:
51795201| PENDANT {$$ = make_str(" pendant" ); }
51805202| PRECISION {$$ = make_str(" precision" ); }
51815203| PREPARE {$$ = make_str(" prepare" ); }
5204+ | PRESERVE {$$ = make_str(" preserver" ); }
51825205| PRIOR {$$ = make_str(" prior" ); }
51835206| PRIVILEGES {$$ = make_str(" privileges" ); }
51845207| PROCEDURAL {$$ = make_str(" procedural" ); }
@@ -5194,6 +5217,7 @@ unreserved_keyword:
51945217| RETURNS {$$ = make_str(" returns" ); }
51955218| REVOKE {$$ = make_str(" revoke" ); }
51965219| ROLLBACK {$$ = make_str(" rollback" ); }
5220+ | ROWS {$$ = make_str(" rows" ); }
51975221| RULE {$$ = make_str(" rule" ); }
51985222| SCHEMA {$$ = make_str(" schema" ); }
51995223| SCROLL {$$ = make_str(" scroll" ); }
@@ -5394,6 +5418,7 @@ reserved_keyword:
53945418| UNIQUE {$$ = make_str(" unique" ); }
53955419| USER {$$ = make_str(" user" ); }
53965420| USING {$$ = make_str(" using" ); }
5421+ | VALUE {$$ = make_str(" value" ); }
53975422| WHEN {$$ = make_str(" when" ); }
53985423| WHERE {$$ = make_str(" where" ); }
53995424;