1- /* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.190.2.5 2002/09/01 09:31:58 meskes Exp $ */
1+ /* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.190.2.6 2002/09/11 08:50:29 meskes Exp $ */
22
33/* Copyright comment */
44%{
@@ -155,12 +155,12 @@ make_name(void)
155155 SQL_CALL SQL_CARDINALITY SQL_CONNECT SQL_CONNECTION
156156 SQL_CONTINUE SQL_COUNT SQL_CURRENT SQL_DATA
157157 SQL_DATETIME_INTERVAL_CODE
158- SQL_DATETIME_INTERVAL_PRECISION SQL_DEALLOCATE
158+ SQL_DATETIME_INTERVAL_PRECISION
159159 SQL_DESCRIPTOR SQL_DISCONNECT SQL_ENUM SQL_FOUND
160160 SQL_FREE SQL_GO SQL_GOTO SQL_IDENTIFIED
161161 SQL_INDICATOR SQL_KEY_MEMBER SQL_LENGTH
162162 SQL_LONG SQL_NAME SQL_NULLABLE SQL_OCTET_LENGTH
163- SQL_OPEN SQL_PREPARE SQL_RELEASE SQL_REFERENCE
163+ SQL_OPEN SQL_RELEASE SQL_REFERENCE
164164 SQL_RETURNED_LENGTH SQL_RETURNED_OCTET_LENGTH SQL_SCALE
165165 SQL_SECTION SQL_SHORT SQL_SIGNED SQL_SQL SQL_SQLERROR
166166 SQL_SQLPRINT SQL_SQLWARNING SQL_START SQL_STOP
@@ -257,7 +257,6 @@ make_name(void)
257257/* precedence: lowest to highest */
258258%left UNION EXCEPT
259259%left INTERSECT
260- %left JOIN UNIONJOIN CROSS LEFT FULL RIGHT INNER_P NATURAL
261260%left OR
262261%left AND
263262%right NOT
@@ -266,7 +265,7 @@ make_name(void)
266265%nonassoc LIKE ILIKE SIMILAR
267266%nonassoc ESCAPE
268267%nonassoc OVERLAPS
269- %nonassoc BETWEEN DISTINCT
268+ %nonassoc BETWEEN
270269%nonassoc IN_P
271270%left POSTFIXOP /* dummy for postfix Op rules */
272271%left Op OPERATOR /* multi-character ops and user-defined operators */
@@ -283,6 +282,7 @@ make_name(void)
283282%left ' (' ' )'
284283%left TYPECAST
285284%left ' .'
285+ %left JOIN UNIONJOIN CROSS LEFT FULL RIGHT INNER_P NATURAL
286286
287287%type <str> Iconst Fconst Sconst TransactionStmt CreateStmt UserId
288288%type <str> CreateAsElement OptCreateAs CreateAsList CreateAsStmt
@@ -371,14 +371,14 @@ make_name(void)
371371%type <str> execute_param_list opt_sort_clause
372372
373373%type <str> ECPGWhenever ECPGConnect connection_target ECPGOpen
374- %type <str> indicator ECPGExecute ECPGPrepare ecpg_using ecpg_into
374+ %type <str> indicator ECPGExecute ECPGPrepare opt_ecpg_using ecpg_into
375375%type <str> storage_clause opt_initializer c_anything
376376%type <str> variable_list variable c_thing c_term
377377%type <str> opt_pointer ECPGDisconnect dis_name storage_modifier
378378%type <str> stmt ECPGRelease execstring server_name
379379%type <str> connection_object opt_server opt_port c_stuff c_stuff_item
380380%type <str> user_name opt_user char_variable ora_user ident opt_reference
381- %type <str> quoted_ident_stringvar var_type_declarations
381+ %type <str> var_type_declarations quoted_ident_stringvar
382382%type <str> db_prefix server opt_options opt_connection_name c_list
383383%type <str> ECPGSetConnection ECPGTypedef c_args ECPGKeywords
384384%type <str> enum_type civar civarind ECPGCursorStmt ECPGDeallocate
@@ -2085,13 +2085,13 @@ opt_column: COLUMN { $$ = make_str("column"); }
20852085 *
20862086 *****************************************************************************/
20872087
2088- RuleStmt : CREATE RULE name AS
2088+ RuleStmt : CREATE opt_or_replace RULE name AS
20892089 { QueryIsRule=1 ; }
20902090 ON event TO qualified_name where_clause
20912091 DO opt_instead RuleActionList
20922092 {
20932093 QueryIsRule=0 ;
2094- $$ = cat_str(10 , make_str(" create rule" ), $3 , make_str(" as on" ), $7 , make_str(" to" ), $9 , $10 , make_str(" do" ), $12 , $13 );
2094+ $$ = cat_str(12 , make_str(" create" ), $2 , make_str( " rule" ), $4 , make_str(" as on" ), $8 , make_str(" to" ), $10 , $11 , make_str(" do" ), $13 , $14 );
20952095 }
20962096 ;
20972097
@@ -2187,8 +2187,8 @@ opt_trans: WORK { $$ = EMPTY; }
21872187 *
21882188 *****************************************************************************/
21892189
2190- ViewStmt : CREATE VIEW qualified_name opt_column_list AS SelectStmt
2191- { $$ = cat_str(5 , make_str(" create view" ), $3 , $4 , make_str(" as" ), $6 ); }
2190+ ViewStmt : CREATE opt_or_replace VIEW qualified_name opt_column_list AS SelectStmt
2191+ { $$ = cat_str(7 , make_str(" create" ), $2 , make_str( " view" ), $4 , $5 , make_str(" as" ), $7 ); }
21922192 ;
21932193
21942194
@@ -3153,7 +3153,7 @@ r_expr: row IN_P select_with_parens
31533153 { $$ = cat2_str($1 , make_str(" is not null" )); }
31543154 | row OVERLAPS row
31553155 { $$ = cat_str(3 , $1 , make_str(" overlaps" ), $3 ); }
3156- | row IS DISTINCT FROM row
3156+ | row IS DISTINCT FROM row % prec IS
31573157 { $$ = cat_str(3 , $1 , make_str(" is distinct from" ), $5 ); }
31583158 ;
31593159
@@ -3331,11 +3331,11 @@ a_expr: c_expr
33313331 { $$ = cat2_str($1 , make_str(" is unknown" )); }
33323332 | a_expr IS NOT UNKNOWN
33333333 { $$ = cat2_str($1 , make_str(" is not unknown" )); }
3334- | a_expr IS DISTINCT FROM a_expr %prec DISTINCT
3334+ | a_expr IS DISTINCT FROM a_expr %prec IS
33353335 { $$ = cat_str(3 , $1 , make_str(" is distinct from" ), $5 ); }
3336- | a_expr IS OF ' (' type_list ' )'
3336+ | a_expr IS OF ' (' type_list ' )' % prec IS
33373337 { $$ = cat_str(4 , $1 , make_str(" is of (" ), $5 , make_str(" )" )); }
3338- | a_expr IS NOT OF ' (' type_list ' )'
3338+ | a_expr IS NOT OF ' (' type_list ' )' % prec IS
33393339 { $$ = cat_str(4 , $1 , make_str(" is not of (" ), $6 , make_str(" )" )); }
33403340 | a_expr BETWEEN b_expr AND b_expr %prec BETWEEN
33413341 { $$ = cat_str(5 , $1 , make_str(" between" ), $3 , make_str(" and" ), $5 ); }
@@ -3399,11 +3399,11 @@ b_expr: c_expr
33993399 { $$ = cat2_str($1 , $2 ); }
34003400 | b_expr qual_Op %prec POSTFIXOP
34013401 { $$ = cat2_str($1 , $2 ); }
3402- | b_expr IS DISTINCT FROM b_expr %prec Op
3402+ | b_expr IS DISTINCT FROM b_expr %prec IS
34033403 { $$ = cat_str(3 , $1 , make_str(" is distinct from" ), $5 ); }
3404- | b_expr IS OF ' (' b_expr ' )'
3404+ | b_expr IS OF ' (' b_expr ' )' % prec IS
34053405 { $$ = cat_str(4 , $1 , make_str(" is of (" ), $5 , make_str(" )" )); }
3406- | b_expr IS NOT OF ' (' b_expr ' )'
3406+ | b_expr IS NOT OF ' (' b_expr ' )' % prec IS
34073407 { $$ = cat_str(4 , $1 , make_str(" is not of (" ), $6 , make_str(" )" )); }
34083408 ;
34093409
@@ -4111,7 +4111,7 @@ ECPGCursorStmt: DECLARE name opt_cursor CURSOR FOR ident
41114111 * the exec sql deallocate prepare command to deallocate a previously
41124112 * prepared statement
41134113 */
4114- ECPGDeallocate : SQL_DEALLOCATE SQL_PREPARE ident
4114+ ECPGDeallocate : DEALLOCATE PREPARE ident
41154115 { $$ = cat_str(3 , make_str(" ECPGdeallocate(__LINE__, \" " ), $3 , make_str(" \" );" )); };
41164116
41174117/*
@@ -4565,7 +4565,7 @@ ECPGExecute : EXECUTE IMMEDIATE execstring
45654565
45664566 $$ = make_str(" ?" );
45674567 }
4568- | EXECUTE ident
4568+ | EXECUTE name
45694569 {
45704570 struct variable *thisquery = (struct variable *)mm_alloc(sizeof (struct variable ));
45714571
@@ -4577,7 +4577,7 @@ ECPGExecute : EXECUTE IMMEDIATE execstring
45774577
45784578 add_variable (&argsinsert, thisquery, &no_indicator);
45794579 }
4580- ecpg_using opt_ecpg_into
4580+ opt_ecpg_using opt_ecpg_into
45814581 {
45824582 $$ = make_str(" ?" );
45834583 }
@@ -4593,14 +4593,14 @@ execstring: char_variable
45934593 * the exec sql free command to deallocate a previously
45944594 * prepared statement
45954595 */
4596- ECPGFree : SQL_FREE ident { $$ = $2 ; };
4596+ ECPGFree : SQL_FREE name { $$ = $2 ; };
45974597
45984598/*
45994599 * open is an open cursor, at the moment this has to be removed
46004600 */
4601- ECPGOpen : SQL_OPEN name ecpg_using { $$ = $2 ; };
4601+ ECPGOpen : SQL_OPEN name opt_ecpg_using { $$ = $2 ; };
46024602
4603- ecpg_using : /* EMPTY*/ { $$ = EMPTY; }
4603+ opt_ecpg_using : /* EMPTY*/ { $$ = EMPTY; }
46044604 | USING variablelist
46054605 {
46064606 /* mmerror ("open cursor with variables not implemented yet"); */
@@ -4633,7 +4633,7 @@ variablelist: variable | variable ',' variablelist;
46334633 * As long as the prepare statement is not supported by the backend, we will
46344634 * try to simulate it here so we get dynamic SQL
46354635 */
4636- ECPGPrepare : SQL_PREPARE ident FROM execstring
4636+ ECPGPrepare : PREPARE name FROM execstring
46374637 { $$ = cat2_str(make3_str(make_str(" \" " ), $2 , make_str(" \" ," )), $4 ); }
46384638 ;
46394639
@@ -4645,7 +4645,7 @@ ECPGPrepare: SQL_PREPARE ident FROM execstring
46454645/*
46464646 * deallocate a descriptor
46474647 */
4648- ECPGDeallocateDescr : SQL_DEALLOCATE SQL_DESCRIPTOR quoted_ident_stringvar
4648+ ECPGDeallocateDescr : DEALLOCATE SQL_DESCRIPTOR quoted_ident_stringvar
46494649 {
46504650 drop_descriptor ($3 ,connection);
46514651 $$ = $3 ;
@@ -4704,8 +4704,7 @@ ECPGGetDescriptorHeader: GET SQL_DESCRIPTOR quoted_ident_stringvar
47044704 { $$ = $3 ; }
47054705 ;
47064706
4707- ECPGGetDescriptor : GET SQL_DESCRIPTOR quoted_ident_stringvar
4708- SQL_VALUE CVARIABLE ECPGGetDescItems
4707+ ECPGGetDescriptor : GET SQL_DESCRIPTOR quoted_ident_stringvar SQL_VALUE CVARIABLE ECPGGetDescItems
47094708 { $$ .str = $5 ; $$ .name = $3 ; }
47104709 | GET SQL_DESCRIPTOR quoted_ident_stringvar SQL_VALUE Iconst ECPGGetDescItems
47114710 { $$ .str = $5 ; $$ .name = $3 ; }
@@ -5010,7 +5009,6 @@ ECPGKeywords: SQL_BREAK { $$ = make_str("break"); }
50105009 | SQL_DATA { $$ = make_str(" data" ); }
50115010 | SQL_DATETIME_INTERVAL_CODE { $$ = make_str(" datetime_interval_code" ); }
50125011 | SQL_DATETIME_INTERVAL_PRECISION { $$ = make_str(" datetime_interval_precision" ); }
5013- | SQL_DEALLOCATE { $$ = make_str(" deallocate" ); }
50145012 | SQL_DISCONNECT { $$ = make_str(" disconnect" ); }
50155013 | SQL_FOUND { $$ = make_str(" found" ); }
50165014 | SQL_GO { $$ = make_str(" go" ); }
@@ -5023,7 +5021,6 @@ ECPGKeywords: SQL_BREAK { $$ = make_str("break"); }
50235021 | SQL_NULLABLE { $$ = make_str(" nullable" ); }
50245022 | SQL_OCTET_LENGTH { $$ = make_str(" octet_length" ); }
50255023 | SQL_OPEN { $$ = make_str(" open" ); }
5026- | SQL_PREPARE { $$ = make_str(" prepare" ); }
50275024 | SQL_RELEASE { $$ = make_str(" release" ); }
50285025 | SQL_RETURNED_LENGTH { $$ = make_str(" returned_length" ); }
50295026 | SQL_RETURNED_OCTET_LENGTH { $$ = make_str(" returned_octet_length" ); }
@@ -5485,9 +5482,7 @@ ident: IDENT { $$ = $1; }
54855482 | CSTRING { $$ = make3_str(make_str(" \" " ), $1 , make_str(" \" " )); }
54865483 ;
54875484
5488- quoted_ident_stringvar : IDENT
5489- { $$ = make3_str(make_str(" \" " ), $1 , make_str(" \" " )); }
5490- | CSTRING
5485+ quoted_ident_stringvar : name
54915486 { $$ = make3_str(make_str(" \" " ), $1 , make_str(" \" " )); }
54925487 | char_variable
54935488 { $$ = make3_str(make_str(" (" ), $1 , make_str(" )" )); }
0 commit comments