Commit 1aca1cde authored by Michael Meskes's avatar Michael Meskes

- Synced parser and keyword list

- Renamed update test so it hopefully runs on Vista
parent 5b7cf08d
...@@ -2188,4 +2188,9 @@ Fr 27. Apr 08:55:25 CEST 2007 ...@@ -2188,4 +2188,9 @@ Fr 27. Apr 08:55:25 CEST 2007
- Inlined two functions to get rid of va_list problems on some - Inlined two functions to get rid of va_list problems on some
architectures. architectures.
Th 10. Mai 09:42:42 CEST 2007
- Synced parser and keyword list
- Renamed update test so it hopefully runs on Vista
- Set ecpg version to 4.3.1. - Set ecpg version to 4.3.1.
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* keywords.c * keywords.c
* lexical token lookup for reserved words in postgres embedded SQL * lexical token lookup for reserved words in postgres embedded SQL
* *
* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/c_keywords.c,v 1.19 2006/07/30 16:28:58 meskes Exp $ * $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/c_keywords.c,v 1.20 2007/05/10 09:53:16 meskes Exp $
* § * §
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -27,7 +27,7 @@ static ScanKeyword ScanKeywords[] = { ...@@ -27,7 +27,7 @@ static ScanKeyword ScanKeywords[] = {
{"bool", SQL_BOOL}, {"bool", SQL_BOOL},
{"char", CHAR_P}, {"char", CHAR_P},
{"const", S_CONST}, {"const", S_CONST},
{"enum", SQL_ENUM}, {"enum", ENUM_P},
{"extern", S_EXTERN}, {"extern", S_EXTERN},
{"float", FLOAT_P}, {"float", FLOAT_P},
{"hour", HOUR_P}, {"hour", HOUR_P},
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* lexical token lookup for reserved words in postgres embedded SQL * lexical token lookup for reserved words in postgres embedded SQL
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg_keywords.c,v 1.33 2007/03/17 19:25:23 meskes Exp $ * $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg_keywords.c,v 1.34 2007/05/10 09:53:16 meskes Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -40,7 +40,6 @@ static ScanKeyword ScanKeywords[] = { ...@@ -40,7 +40,6 @@ static ScanKeyword ScanKeywords[] = {
{"describe", SQL_DESCRIBE}, {"describe", SQL_DESCRIBE},
{"descriptor", SQL_DESCRIPTOR}, {"descriptor", SQL_DESCRIPTOR},
{"disconnect", SQL_DISCONNECT}, {"disconnect", SQL_DISCONNECT},
{"enum", SQL_ENUM},
{"found", SQL_FOUND}, {"found", SQL_FOUND},
{"free", SQL_FREE}, {"free", SQL_FREE},
{"go", SQL_GO}, {"go", SQL_GO},
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/keywords.c,v 1.78 2007/03/17 19:25:23 meskes Exp $ * $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/keywords.c,v 1.79 2007/05/10 09:53:16 meskes Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -39,6 +39,7 @@ static ScanKeyword ScanKeywords[] = { ...@@ -39,6 +39,7 @@ static ScanKeyword ScanKeywords[] = {
{"all", ALL}, {"all", ALL},
{"also", ALSO}, {"also", ALSO},
{"alter", ALTER}, {"alter", ALTER},
{"always", ALWAYS},
{"analyse", ANALYSE}, /* British spelling */ {"analyse", ANALYSE}, /* British spelling */
{"analyze", ANALYZE}, {"analyze", ANALYZE},
{"and", AND}, {"and", AND},
...@@ -120,6 +121,7 @@ static ScanKeyword ScanKeywords[] = { ...@@ -120,6 +121,7 @@ static ScanKeyword ScanKeywords[] = {
{"delimiters", DELIMITERS}, {"delimiters", DELIMITERS},
{"desc", DESC}, {"desc", DESC},
{"disable", DISABLE_P}, {"disable", DISABLE_P},
{"discard", DISCARD},
{"distinct", DISTINCT}, {"distinct", DISTINCT},
{"do", DO}, {"do", DO},
{"document", DOCUMENT_P}, {"document", DOCUMENT_P},
...@@ -132,6 +134,7 @@ static ScanKeyword ScanKeywords[] = { ...@@ -132,6 +134,7 @@ static ScanKeyword ScanKeywords[] = {
{"encoding", ENCODING}, {"encoding", ENCODING},
{"encrypted", ENCRYPTED}, {"encrypted", ENCRYPTED},
{"end", END_P}, {"end", END_P},
{"enum", ENUM_P},
{"escape", ESCAPE}, {"escape", ESCAPE},
{"except", EXCEPT}, {"except", EXCEPT},
{"excluding", EXCLUDING}, {"excluding", EXCLUDING},
...@@ -261,6 +264,8 @@ static ScanKeyword ScanKeywords[] = { ...@@ -261,6 +264,8 @@ static ScanKeyword ScanKeywords[] = {
{"owner", OWNER}, {"owner", OWNER},
{"partial", PARTIAL}, {"partial", PARTIAL},
{"password", PASSWORD}, {"password", PASSWORD},
{"placing", PLACING},
{"plans", PLANS},
{"position", POSITION}, {"position", POSITION},
{"precision", PRECISION}, {"precision", PRECISION},
{"prepare", PREPARE}, {"prepare", PREPARE},
...@@ -283,6 +288,7 @@ static ScanKeyword ScanKeywords[] = { ...@@ -283,6 +288,7 @@ static ScanKeyword ScanKeywords[] = {
{"rename", RENAME}, {"rename", RENAME},
{"repeatable", REPEATABLE}, {"repeatable", REPEATABLE},
{"replace", REPLACE}, {"replace", REPLACE},
{"replica", REPLICA},
{"reset", RESET}, {"reset", RESET},
{"restart", RESTART}, {"restart", RESTART},
{"restrict", RESTRICT}, {"restrict", RESTRICT},
......
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.342 2007/03/27 03:25:28 tgl Exp $ */ /* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.343 2007/05/10 09:53:17 meskes Exp $ */
/* Copyright comment */ /* Copyright comment */
%{ %{
...@@ -349,7 +349,7 @@ add_additional_variables(char *name, bool insert) ...@@ -349,7 +349,7 @@ add_additional_variables(char *name, bool insert)
SQL_CONTINUE SQL_COUNT SQL_CURRENT SQL_DATA SQL_CONTINUE SQL_COUNT SQL_CURRENT SQL_DATA
SQL_DATETIME_INTERVAL_CODE SQL_DATETIME_INTERVAL_CODE
SQL_DATETIME_INTERVAL_PRECISION SQL_DESCRIBE SQL_DATETIME_INTERVAL_PRECISION SQL_DESCRIBE
SQL_DESCRIPTOR SQL_DISCONNECT SQL_ENUM SQL_FOUND SQL_DESCRIPTOR SQL_DISCONNECT SQL_FOUND
SQL_FREE SQL_GO SQL_GOTO SQL_IDENTIFIED SQL_FREE SQL_GO SQL_GOTO SQL_IDENTIFIED
SQL_INDICATOR SQL_KEY_MEMBER SQL_LENGTH SQL_INDICATOR SQL_KEY_MEMBER SQL_LENGTH
SQL_LONG SQL_NULLABLE SQL_OCTET_LENGTH SQL_LONG SQL_NULLABLE SQL_OCTET_LENGTH
...@@ -371,7 +371,7 @@ add_additional_variables(char *name, bool insert) ...@@ -371,7 +371,7 @@ add_additional_variables(char *name, bool insert)
/* ordinary key words in alphabetical order */ /* ordinary key words in alphabetical order */
%token <keyword> ABORT_P ABSOLUTE_P ACCESS ACTION ADD_P ADMIN AFTER %token <keyword> ABORT_P ABSOLUTE_P ACCESS ACTION ADD_P ADMIN AFTER
AGGREGATE ALL ALSO ALTER ANALYSE ANALYZE AND ANY ARRAY AS ASC AGGREGATE ALL ALSO ALTER ALWAYS ANALYSE ANALYZE AND ANY ARRAY AS ASC
ASSERTION ASSIGNMENT ASYMMETRIC AT AUTHORIZATION ASSERTION ASSIGNMENT ASYMMETRIC AT AUTHORIZATION
BACKWARD BEFORE BEGIN_P BETWEEN BIGINT BINARY BIT BACKWARD BEFORE BEGIN_P BETWEEN BIGINT BINARY BIT
...@@ -387,9 +387,9 @@ add_additional_variables(char *name, bool insert) ...@@ -387,9 +387,9 @@ add_additional_variables(char *name, bool insert)
DATABASE DAY_P DEALLOCATE DEC DECIMAL_P DECLARE DEFAULT DEFAULTS DATABASE DAY_P DEALLOCATE DEC DECIMAL_P DECLARE DEFAULT DEFAULTS
DEFERRABLE DEFERRED DEFINER DELETE_P DELIMITER DELIMITERS DEFERRABLE DEFERRED DEFINER DELETE_P DELIMITER DELIMITERS
DESC DISABLE_P DISTINCT DO DOCUMENT_P DOMAIN_P DOUBLE_P DROP DESC DISABLE_P DISCARD DISTINCT DO DOCUMENT_P DOMAIN_P DOUBLE_P DROP
EACH ELSE ENABLE_P ENCODING ENCRYPTED END_P ESCAPE EXCEPT EXCLUSIVE EXCLUDING EACH ELSE ENABLE_P ENCODING ENCRYPTED END_P ENUM_P ESCAPE EXCEPT EXCLUSIVE EXCLUDING
EXECUTE EXISTS EXPLAIN EXTERNAL EXTRACT EXECUTE EXISTS EXPLAIN EXTERNAL EXTRACT
FALSE_P FAMILY FETCH FIRST_P FLOAT_P FOR FORCE FOREIGN FORWARD FREEZE FROM FALSE_P FAMILY FETCH FIRST_P FLOAT_P FOR FORCE FOREIGN FORWARD FREEZE FROM
...@@ -421,15 +421,15 @@ add_additional_variables(char *name, bool insert) ...@@ -421,15 +421,15 @@ add_additional_variables(char *name, bool insert)
OBJECT_P OF OFF OFFSET OIDS OLD ON ONLY OPERATOR OPTION OR ORDER OBJECT_P OF OFF OFFSET OIDS OLD ON ONLY OPERATOR OPTION OR ORDER
OUT_P OUTER_P OVERLAPS OVERLAY OWNED OWNER OUT_P OUTER_P OVERLAPS OVERLAY OWNED OWNER
PARTIAL PASSWORD PLACING POSITION PARTIAL PASSWORD PLACING PLANS POSITION
PRECISION PRESERVE PREPARE PREPARED PRIMARY PRECISION PRESERVE PREPARE PREPARED PRIMARY
PRIOR PRIVILEGES PROCEDURAL PROCEDURE PRIOR PRIVILEGES PROCEDURAL PROCEDURE
QUOTE QUOTE
READ REAL REASSIGN RECHECK REFERENCES REINDEX RELATIVE_P RELEASE RENAME READ REAL REASSIGN RECHECK REFERENCES REINDEX RELATIVE_P RELEASE RENAME
REPEATABLE REPLACE RESET RESTART RESTRICT RETURNING RETURNS REVOKE RIGHT REPEATABLE REPLACE REPLICA RESET RESTART RESTRICT RETURNING RETURNS REVOKE
ROLE ROLLBACK ROW ROWS RULE RIGHT ROLE ROLLBACK ROW ROWS RULE
SAVEPOINT SCHEMA SCROLL SECOND_P SECURITY SELECT SEQUENCE SAVEPOINT SCHEMA SCROLL SECOND_P SECURITY SELECT SEQUENCE
SERIALIZABLE SESSION SESSION_USER SET SETOF SHARE SERIALIZABLE SESSION SESSION_USER SET SETOF SHARE
...@@ -504,7 +504,7 @@ add_additional_variables(char *name, bool insert) ...@@ -504,7 +504,7 @@ add_additional_variables(char *name, bool insert)
%type <str> key_match ColLabel SpecialRuleRelation ColId columnDef %type <str> key_match ColLabel SpecialRuleRelation ColId columnDef
%type <str> ColConstraint ColConstraintElem drop_type Bconst Iresult %type <str> ColConstraint ColConstraintElem drop_type Bconst Iresult
%type <str> TableConstraint OptTableElementList Xconst opt_transaction %type <str> TableConstraint OptTableElementList Xconst opt_transaction
%type <str> ConstraintElem key_actions ColQualList %type <str> ConstraintElem key_actions ColQualList cluster_index_specification
%type <str> target_list target_el alias_clause type_func_name_keyword %type <str> target_list target_el alias_clause type_func_name_keyword
%type <str> qualified_name database_name alter_using type_function_name %type <str> qualified_name database_name alter_using type_function_name
%type <str> access_method attr_name index_name name func_name %type <str> access_method attr_name index_name name func_name
...@@ -513,8 +513,8 @@ add_additional_variables(char *name, bool insert) ...@@ -513,8 +513,8 @@ add_additional_variables(char *name, bool insert)
%type <str> opt_indirection expr_list extract_list extract_arg %type <str> opt_indirection expr_list extract_list extract_arg
%type <str> position_list substr_list substr_from alter_column_default %type <str> position_list substr_list substr_from alter_column_default
%type <str> trim_list in_expr substr_for attrs TableFuncElement %type <str> trim_list in_expr substr_for attrs TableFuncElement
%type <str> Typename SimpleTypename Numeric opt_float %type <str> Typename SimpleTypename Numeric opt_float DiscardStmt
%type <str> Character character opt_varying opt_charset %type <str> Character character opt_varying opt_charset enum_val_list
%type <str> opt_timezone opt_interval table_ref fetch_direction %type <str> opt_timezone opt_interval table_ref fetch_direction
%type <str> ConstDatetime AlterDomainStmt AlterSeqStmt alter_rel_cmds %type <str> ConstDatetime AlterDomainStmt AlterSeqStmt alter_rel_cmds
%type <str> SelectStmt into_clause OptTemp ConstraintAttributeSpec %type <str> SelectStmt into_clause OptTemp ConstraintAttributeSpec
...@@ -736,6 +736,7 @@ stmt: AlterDatabaseStmt { output_statement($1, 0, connection); } ...@@ -736,6 +736,7 @@ stmt: AlterDatabaseStmt { output_statement($1, 0, connection); }
| DeclareCursorStmt { output_simple_statement($1); } | DeclareCursorStmt { output_simple_statement($1); }
| DefineStmt { output_statement($1, 0, connection); } | DefineStmt { output_statement($1, 0, connection); }
| DeleteStmt { output_statement($1, 1, connection); } | DeleteStmt { output_statement($1, 1, connection); }
| DiscardStmt { output_statement($1, 1, connection); }
| DropAssertStmt { output_statement($1, 0, connection); } | DropAssertStmt { output_statement($1, 0, connection); }
| DropCastStmt { output_statement($1, 0, connection); } | DropCastStmt { output_statement($1, 0, connection); }
| DropGroupStmt { output_statement($1, 0, connection); } | DropGroupStmt { output_statement($1, 0, connection); }
...@@ -1278,6 +1279,12 @@ constraints_set_mode: DEFERRED { $$ = make_str("deferred"); } ...@@ -1278,6 +1279,12 @@ constraints_set_mode: DEFERRED { $$ = make_str("deferred"); }
CheckPointStmt: CHECKPOINT { $$= make_str("checkpoint"); } CheckPointStmt: CHECKPOINT { $$= make_str("checkpoint"); }
; ;
DiscardStmt:
DISCARD ALL { $$ = make_str("discard all"); }
| DISCARD TEMP { $$ = make_str("discard temp"); }
| DISCARD TEMPORARY { $$ = make_str("discard temporary"); }
| DISCARD PLANS { $$ = make_str("discard plans"); }
;
/***************************************************************************** /*****************************************************************************
* *
...@@ -1341,6 +1348,12 @@ alter_table_cmd: ...@@ -1341,6 +1348,12 @@ alter_table_cmd:
/* ALTER TABLE <name> ENABLE TRIGGER <trig> */ /* ALTER TABLE <name> ENABLE TRIGGER <trig> */
| ENABLE_P TRIGGER name | ENABLE_P TRIGGER name
{ $$ = cat2_str(make_str("enable trigger"), $3); } { $$ = cat2_str(make_str("enable trigger"), $3); }
/* ALTER TABLE <name> ENABLE ALWAYS TRIGGER <trig> */
| ENABLE_P ALWAYS TRIGGER name
{ $$ = cat2_str(make_str("enable always trigger"), $4); }
/* ALTER TABLE <name> ENABLE REPLICA TRIGGER <trig> */
| ENABLE_P REPLICA TRIGGER name
{ $$ = cat2_str(make_str("enable replica trigger"), $4); }
/* ALTER TABLE <name> ENABLE TRIGGER ALL */ /* ALTER TABLE <name> ENABLE TRIGGER ALL */
| ENABLE_P TRIGGER ALL | ENABLE_P TRIGGER ALL
{ $$ = make_str("enable trigger all"); } { $$ = make_str("enable trigger all"); }
...@@ -1356,6 +1369,18 @@ alter_table_cmd: ...@@ -1356,6 +1369,18 @@ alter_table_cmd:
/* ALTER TABLE <name> DISABLE TRIGGER USER */ /* ALTER TABLE <name> DISABLE TRIGGER USER */
| DISABLE_P TRIGGER USER | DISABLE_P TRIGGER USER
{ $$ = make_str("disable trigger user"); } { $$ = make_str("disable trigger user"); }
/* ALTER TABLE <name> ENABLE RULE <rule> */
| ENABLE_P RULE name
{ $$ = cat2_str(make_str("enable rule"), $3); }
/* ALTER TABLE <name> ENABLE ALWAYS RULE <rule> */
| ENABLE_P ALWAYS RULE name
{ $$ = cat2_str(make_str("enable always rule"), $4); }
/* ALTER TABLE <name> ENABLE REPLICA RULE <rule> */
| ENABLE_P REPLICA RULE name
{ $$ = cat2_str(make_str("enable replica rule"), $4); }
/* ALTER TABLE <name> DISABLE RULE <rule> */
| DISABLE_P RULE name
{ $$ = cat2_str(make_str("disable rule"), $3); }
/* ALTER TABLE <name> ALTER INHERITS ADD <parent> */ /* ALTER TABLE <name> ALTER INHERITS ADD <parent> */
| INHERIT qualified_name | INHERIT qualified_name
{ $$ = cat2_str(make_str("inherit"), $2); } { $$ = cat2_str(make_str("inherit"), $2); }
...@@ -1407,6 +1432,8 @@ alter_using: USING a_expr { $$ = cat2_str(make_str("using"), $2); } ...@@ -1407,6 +1432,8 @@ alter_using: USING a_expr { $$ = cat2_str(make_str("using"), $2); }
ClosePortalStmt: CLOSE name ClosePortalStmt: CLOSE name
{ $$ = cat2_str(make_str("close"), $2); } { $$ = cat2_str(make_str("close"), $2); }
| CLOSE ALL
{ $$ = make_str("close all"); }
; ;
CopyStmt: COPY opt_binary qualified_name opt_oids copy_from CopyStmt: COPY opt_binary qualified_name opt_oids copy_from
...@@ -2009,6 +2036,8 @@ DefineStmt: CREATE AGGREGATE func_name aggr_args definition ...@@ -2009,6 +2036,8 @@ DefineStmt: CREATE AGGREGATE func_name aggr_args definition
{ $$ = cat2_str(make_str("create type"), $3); } { $$ = cat2_str(make_str("create type"), $3); }
| CREATE TYPE_P any_name AS '(' TableFuncElementList ')' | CREATE TYPE_P any_name AS '(' TableFuncElementList ')'
{ $$ = cat_str(5, make_str("create type"), $3, make_str("as ("), $6, make_str(")")); } { $$ = cat_str(5, make_str("create type"), $3, make_str("as ("), $6, make_str(")")); }
| CREATE TYPE_P any_name AS ENUM_P '(' enum_val_list ')'
{ $$ = cat_str(5, make_str("create type"), $3, make_str("as enum ("), $7, make_str(")")); }
; ;
definition: '(' def_list ')' definition: '(' def_list ')'
...@@ -2044,6 +2073,9 @@ old_aggr_list: old_aggr_elem { $$ = $1; } ...@@ -2044,6 +2073,9 @@ old_aggr_list: old_aggr_elem { $$ = $1; }
old_aggr_elem: ident '=' def_arg { $$ = cat_str(3, $1, make_str("="), $3); } old_aggr_elem: ident '=' def_arg { $$ = cat_str(3, $1, make_str("="), $3); }
; ;
enum_val_list: StringConst { $$ = $1; }
| enum_val_list ',' StringConst { $$ = cat_str(3, $1, make_str(","), $3);}
;
CreateOpClassStmt: CREATE OPERATOR CLASS any_name opt_default FOR TYPE_P Typename CreateOpClassStmt: CREATE OPERATOR CLASS any_name opt_default FOR TYPE_P Typename
USING access_method opt_opfamily AS opclass_item_list USING access_method opt_opfamily AS opclass_item_list
...@@ -2688,8 +2720,8 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name ...@@ -2688,8 +2720,8 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name
{ $$ = cat_str(5, make_str("alter function"), $3, $4, make_str("rename to"), $7); } { $$ = cat_str(5, make_str("alter function"), $3, $4, make_str("rename to"), $7); }
| ALTER GROUP_P RoleId RENAME TO RoleId | ALTER GROUP_P RoleId RENAME TO RoleId
{ $$ = cat_str(4, make_str("alter group"), $3, make_str("rename to"), $6); } { $$ = cat_str(4, make_str("alter group"), $3, make_str("rename to"), $6); }
| ALTER LANGUAGE name RENAME TO name | ALTER opt_procedural LANGUAGE name RENAME TO name
{ $$ = cat_str(4, make_str("alter language"), $3, make_str("rename to"), $6); } { $$ = cat_str(6, make_str("alter"), $2, make_str("language"), $4, make_str("rename to"), $7); }
| ALTER OPERATOR CLASS any_name USING access_method RENAME TO name | ALTER OPERATOR CLASS any_name USING access_method RENAME TO name
{ $$ = cat_str(6, make_str("alter operator class"), $4, make_str("using"), $6, make_str("rename to"), $9); } { $$ = cat_str(6, make_str("alter operator class"), $4, make_str("using"), $6, make_str("rename to"), $9); }
| ALTER OPERATOR FAMILY any_name USING access_method RENAME TO name | ALTER OPERATOR FAMILY any_name USING access_method RENAME TO name
...@@ -2751,6 +2783,8 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleId ...@@ -2751,6 +2783,8 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleId
{ $$ = cat_str(4, make_str("alter domain"), $3, make_str("owner to"), $6); } { $$ = cat_str(4, make_str("alter domain"), $3, make_str("owner to"), $6); }
| ALTER FUNCTION func_name func_args OWNER TO RoleId | ALTER FUNCTION func_name func_args OWNER TO RoleId
{ $$ = cat_str(5, make_str("alter function"), $3, $4, make_str("owner to"), $7); } { $$ = cat_str(5, make_str("alter function"), $3, $4, make_str("owner to"), $7); }
| ALTER opt_procedural LANGUAGE name OWNER TO RoleId
{ $$ = cat_str(6, make_str("alter"), $2, make_str("language"), $4, make_str("owner to"), $7); }
| ALTER OPERATOR any_operator '(' oper_argtypes ')' OWNER TO RoleId | ALTER OPERATOR any_operator '(' oper_argtypes ')' OWNER TO RoleId
{ $$ = cat_str(6, make_str("alter operator"), $3, make_str("("), $5, make_str(") owner to"), $9); } { $$ = cat_str(6, make_str("alter operator"), $3, make_str("("), $5, make_str(") owner to"), $9); }
| ALTER OPERATOR CLASS any_name USING access_method OWNER TO RoleId | ALTER OPERATOR CLASS any_name USING access_method OWNER TO RoleId
...@@ -2831,15 +2865,15 @@ DropRuleStmt: DROP RULE name ON qualified_name opt_drop_behavior ...@@ -2831,15 +2865,15 @@ DropRuleStmt: DROP RULE name ON qualified_name opt_drop_behavior
* *
*****************************************************************************/ *****************************************************************************/
NotifyStmt: NOTIFY qualified_name NotifyStmt: NOTIFY ColId
{ $$ = cat2_str(make_str("notify"), $2); } { $$ = cat2_str(make_str("notify"), $2); }
; ;
ListenStmt: LISTEN qualified_name ListenStmt: LISTEN ColId
{ $$ = cat2_str(make_str("listen"), $2); } { $$ = cat2_str(make_str("listen"), $2); }
; ;
UnlistenStmt: UNLISTEN qualified_name UnlistenStmt: UNLISTEN ColId
{ $$ = cat2_str(make_str("unlisten"), $2); } { $$ = cat2_str(make_str("unlisten"), $2); }
| UNLISTEN '*' | UNLISTEN '*'
{ $$ = make_str("unlisten *"); } { $$ = make_str("unlisten *"); }
...@@ -3075,14 +3109,18 @@ CreateConversionStmt: ...@@ -3075,14 +3109,18 @@ CreateConversionStmt:
* *
*****************************************************************************/ *****************************************************************************/
ClusterStmt: CLUSTER index_name ON qualified_name ClusterStmt: CLUSTER qualified_name cluster_index_specification
{ $$ = cat_str(4, make_str("cluster"), $2, make_str("on"), $4); } { $$ = cat_str(3,make_str("cluster"), $2, $3); }
| CLUSTER qualified_name
{ $$ = cat2_str(make_str("cluster"), $2); }
| CLUSTER | CLUSTER
{ $$ = make_str("cluster"); } { $$ = make_str("cluster"); }
| CLUSTER qualified_name ON qualified_name
{ $$ = cat_str(4, make_str("cluster"), $2, make_str("on"), $4); }
; ;
cluster_index_specification:
USING index_name { $$ = cat2_str(make_str("using"), $2); }
| /*EMPTY*/ { $$ = EMPTY; }
;
/***************************************************************************** /*****************************************************************************
* *
...@@ -3185,6 +3223,8 @@ execute_param_clause: '(' expr_list ')' { $$ = cat_str(3, make_str("("), $2, mak ...@@ -3185,6 +3223,8 @@ execute_param_clause: '(' expr_list ')' { $$ = cat_str(3, make_str("("), $2, mak
DeallocateStmt: DEALLOCATE name { $$ = cat2_str(make_str("deallocate"), $2); } DeallocateStmt: DEALLOCATE name { $$ = cat2_str(make_str("deallocate"), $2); }
| DEALLOCATE PREPARE name { $$ = cat2_str(make_str("deallocate prepare"), $3); } | DEALLOCATE PREPARE name { $$ = cat2_str(make_str("deallocate prepare"), $3); }
| DEALLOCATE ALL { $$ = make_str("deallocate all"); }
| DEALLOCATE PREPARE ALL { $$ = make_str("deallocate prepare all"); }
; ;
*/ */
...@@ -5401,11 +5441,11 @@ var_type: simple_type ...@@ -5401,11 +5441,11 @@ var_type: simple_type
} }
; ;
enum_type: SQL_ENUM symbol enum_definition enum_type: ENUM_P symbol enum_definition
{ $$ = cat_str(3, make_str("enum"), $2, $3); } { $$ = cat_str(3, make_str("enum"), $2, $3); }
| SQL_ENUM enum_definition | ENUM_P enum_definition
{ $$ = cat2_str(make_str("enum"), $2); } { $$ = cat2_str(make_str("enum"), $2); }
| SQL_ENUM symbol | ENUM_P symbol
{ $$ = cat2_str(make_str("enum"), $2); } { $$ = cat2_str(make_str("enum"), $2); }
; ;
...@@ -6367,6 +6407,7 @@ ECPGunreserved_con: ABORT_P { $$ = make_str("abort"); } ...@@ -6367,6 +6407,7 @@ ECPGunreserved_con: ABORT_P { $$ = make_str("abort"); }
| AGGREGATE { $$ = make_str("aggregate"); } | AGGREGATE { $$ = make_str("aggregate"); }
| ALSO { $$ = make_str("also"); } | ALSO { $$ = make_str("also"); }
| ALTER { $$ = make_str("alter"); } | ALTER { $$ = make_str("alter"); }
| ALWAYS { $$ = make_str("always"); }
| ASSERTION { $$ = make_str("assertion"); } | ASSERTION { $$ = make_str("assertion"); }
| ASSIGNMENT { $$ = make_str("assignment"); } | ASSIGNMENT { $$ = make_str("assignment"); }
| AT { $$ = make_str("at"); } | AT { $$ = make_str("at"); }
...@@ -6409,6 +6450,7 @@ ECPGunreserved_con: ABORT_P { $$ = make_str("abort"); } ...@@ -6409,6 +6450,7 @@ ECPGunreserved_con: ABORT_P { $$ = make_str("abort"); }
| DELIMITER { $$ = make_str("delimiter"); } | DELIMITER { $$ = make_str("delimiter"); }
| DELIMITERS { $$ = make_str("delimiters"); } | DELIMITERS { $$ = make_str("delimiters"); }
| DISABLE_P { $$ = make_str("disable"); } | DISABLE_P { $$ = make_str("disable"); }
| DISCARD { $$ = make_str("discard"); }
| DOCUMENT_P { $$ = make_str("document"); } | DOCUMENT_P { $$ = make_str("document"); }
| DOMAIN_P { $$ = make_str("domain"); } | DOMAIN_P { $$ = make_str("domain"); }
| DOUBLE_P { $$ = make_str("double"); } | DOUBLE_P { $$ = make_str("double"); }
...@@ -6417,6 +6459,7 @@ ECPGunreserved_con: ABORT_P { $$ = make_str("abort"); } ...@@ -6417,6 +6459,7 @@ ECPGunreserved_con: ABORT_P { $$ = make_str("abort"); }
| ENABLE_P { $$ = make_str("enable"); } | ENABLE_P { $$ = make_str("enable"); }
| ENCODING { $$ = make_str("encoding"); } | ENCODING { $$ = make_str("encoding"); }
| ENCRYPTED { $$ = make_str("encrypted"); } | ENCRYPTED { $$ = make_str("encrypted"); }
/* | ENUM_P { $$ = make_str("enum"); }*/
| ESCAPE { $$ = make_str("escape"); } | ESCAPE { $$ = make_str("escape"); }
| EXCLUDING { $$ = make_str("excluding"); } | EXCLUDING { $$ = make_str("excluding"); }
| EXCLUSIVE { $$ = make_str("exclusive"); } | EXCLUSIVE { $$ = make_str("exclusive"); }
...@@ -6491,6 +6534,7 @@ ECPGunreserved_con: ABORT_P { $$ = make_str("abort"); } ...@@ -6491,6 +6534,7 @@ ECPGunreserved_con: ABORT_P { $$ = make_str("abort"); }
| OWNER { $$ = make_str("owner"); } | OWNER { $$ = make_str("owner"); }
| PARTIAL { $$ = make_str("partial"); } | PARTIAL { $$ = make_str("partial"); }
| PASSWORD { $$ = make_str("password"); } | PASSWORD { $$ = make_str("password"); }
| PLANS { $$ = make_str("plans"); }
| PREPARE { $$ = make_str("prepare"); } | PREPARE { $$ = make_str("prepare"); }
| PREPARED { $$ = make_str("prepared"); } | PREPARED { $$ = make_str("prepared"); }
| PRESERVE { $$ = make_str("preserver"); } | PRESERVE { $$ = make_str("preserver"); }
...@@ -6508,6 +6552,7 @@ ECPGunreserved_con: ABORT_P { $$ = make_str("abort"); } ...@@ -6508,6 +6552,7 @@ ECPGunreserved_con: ABORT_P { $$ = make_str("abort"); }
| RENAME { $$ = make_str("rename"); } | RENAME { $$ = make_str("rename"); }
| REPEATABLE { $$ = make_str("repeatable"); } | REPEATABLE { $$ = make_str("repeatable"); }
| REPLACE { $$ = make_str("replace"); } | REPLACE { $$ = make_str("replace"); }
| REPLICA { $$ = make_str("replica"); }
| RESET { $$ = make_str("reset"); } | RESET { $$ = make_str("reset"); }
| RESTART { $$ = make_str("restart"); } | RESTART { $$ = make_str("restart"); }
| RESTRICT { $$ = make_str("restrict"); } | RESTRICT { $$ = make_str("restrict"); }
...@@ -6903,7 +6948,7 @@ c_anything: IDENT { $$ = $1; } ...@@ -6903,7 +6948,7 @@ c_anything: IDENT { $$ = $1; }
| S_TYPEDEF { $$ = make_str("typedef"); } | S_TYPEDEF { $$ = make_str("typedef"); }
| S_VOLATILE { $$ = make_str("volatile"); } | S_VOLATILE { $$ = make_str("volatile"); }
| SQL_BOOL { $$ = make_str("bool"); } | SQL_BOOL { $$ = make_str("bool"); }
| SQL_ENUM { $$ = make_str("enum"); } | ENUM_P { $$ = make_str("enum"); }
| HOUR_P { $$ = make_str("hour"); } | HOUR_P { $$ = make_str("hour"); }
| INT_P { $$ = make_str("int"); } | INT_P { $$ = make_str("int"); }
| SQL_LONG { $$ = make_str("long"); } | SQL_LONG { $$ = make_str("long"); }
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
/* End of automatic include section */ /* End of automatic include section */
#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y)) #define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))
#line 1 "update.pgc" #line 1 "insupd.pgc"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
...@@ -20,95 +20,95 @@ ...@@ -20,95 +20,95 @@
#line 5 "update.pgc" #line 5 "insupd.pgc"
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
/* exec sql begin declare section */ /* exec sql begin declare section */
#line 9 "update.pgc" #line 9 "insupd.pgc"
int i1 [ 3 ] , i2 [ 3 ] ; int i1 [ 3 ] , i2 [ 3 ] ;
/* exec sql end declare section */ /* exec sql end declare section */
#line 10 "update.pgc" #line 10 "insupd.pgc"
ECPGdebug(1, stderr); ECPGdebug(1, stderr);
{ ECPGconnect(__LINE__, 0, "regress1" , NULL, NULL , NULL, 0); } { ECPGconnect(__LINE__, 0, "regress1" , NULL, NULL , NULL, 0); }
#line 13 "update.pgc" #line 13 "insupd.pgc"
/* exec sql whenever sql_warning sqlprint ; */ /* exec sql whenever sql_warning sqlprint ; */
#line 15 "update.pgc" #line 15 "insupd.pgc"
/* exec sql whenever sqlerror sqlprint ; */ /* exec sql whenever sqlerror sqlprint ; */
#line 16 "update.pgc" #line 16 "insupd.pgc"
{ ECPGdo(__LINE__, 0, 1, NULL, "create table test ( a int , b int ) ", ECPGt_EOIT, ECPGt_EORT); { ECPGdo(__LINE__, 0, 1, NULL, "create table test ( a int , b int ) ", ECPGt_EOIT, ECPGt_EORT);
#line 18 "update.pgc" #line 18 "insupd.pgc"
if (sqlca.sqlwarn[0] == 'W') sqlprint(); if (sqlca.sqlwarn[0] == 'W') sqlprint();
#line 18 "update.pgc" #line 18 "insupd.pgc"
if (sqlca.sqlcode < 0) sqlprint();} if (sqlca.sqlcode < 0) sqlprint();}
#line 18 "update.pgc" #line 18 "insupd.pgc"
{ ECPGdo(__LINE__, 0, 1, NULL, "insert into test ( a , b ) values ( 1 , 1 ) ", ECPGt_EOIT, ECPGt_EORT); { ECPGdo(__LINE__, 0, 1, NULL, "insert into test ( a , b ) values ( 1 , 1 ) ", ECPGt_EOIT, ECPGt_EORT);
#line 20 "update.pgc" #line 20 "insupd.pgc"
if (sqlca.sqlwarn[0] == 'W') sqlprint(); if (sqlca.sqlwarn[0] == 'W') sqlprint();
#line 20 "update.pgc" #line 20 "insupd.pgc"
if (sqlca.sqlcode < 0) sqlprint();} if (sqlca.sqlcode < 0) sqlprint();}
#line 20 "update.pgc" #line 20 "insupd.pgc"
{ ECPGdo(__LINE__, 0, 1, NULL, "insert into test ( a , b ) values ( 2 , 2 ) ", ECPGt_EOIT, ECPGt_EORT); { ECPGdo(__LINE__, 0, 1, NULL, "insert into test ( a , b ) values ( 2 , 2 ) ", ECPGt_EOIT, ECPGt_EORT);
#line 21 "update.pgc" #line 21 "insupd.pgc"
if (sqlca.sqlwarn[0] == 'W') sqlprint(); if (sqlca.sqlwarn[0] == 'W') sqlprint();
#line 21 "update.pgc" #line 21 "insupd.pgc"
if (sqlca.sqlcode < 0) sqlprint();} if (sqlca.sqlcode < 0) sqlprint();}
#line 21 "update.pgc" #line 21 "insupd.pgc"
{ ECPGdo(__LINE__, 0, 1, NULL, "insert into test ( a , b ) values ( 3 , 3 ) ", ECPGt_EOIT, ECPGt_EORT); { ECPGdo(__LINE__, 0, 1, NULL, "insert into test ( a , b ) values ( 3 , 3 ) ", ECPGt_EOIT, ECPGt_EORT);
#line 22 "update.pgc" #line 22 "insupd.pgc"
if (sqlca.sqlwarn[0] == 'W') sqlprint(); if (sqlca.sqlwarn[0] == 'W') sqlprint();
#line 22 "update.pgc" #line 22 "insupd.pgc"
if (sqlca.sqlcode < 0) sqlprint();} if (sqlca.sqlcode < 0) sqlprint();}
#line 22 "update.pgc" #line 22 "insupd.pgc"
{ ECPGdo(__LINE__, 0, 1, NULL, "update test set a = a + 1 ", ECPGt_EOIT, ECPGt_EORT); { ECPGdo(__LINE__, 0, 1, NULL, "update test set a = a + 1 ", ECPGt_EOIT, ECPGt_EORT);
#line 24 "update.pgc" #line 24 "insupd.pgc"
if (sqlca.sqlwarn[0] == 'W') sqlprint(); if (sqlca.sqlwarn[0] == 'W') sqlprint();
#line 24 "update.pgc" #line 24 "insupd.pgc"
if (sqlca.sqlcode < 0) sqlprint();} if (sqlca.sqlcode < 0) sqlprint();}
#line 24 "update.pgc" #line 24 "insupd.pgc"
{ ECPGdo(__LINE__, 0, 1, NULL, "update test set ( a , b )= ( 5 , 5 ) where a = 4 ", ECPGt_EOIT, ECPGt_EORT); { ECPGdo(__LINE__, 0, 1, NULL, "update test set ( a , b )= ( 5 , 5 ) where a = 4 ", ECPGt_EOIT, ECPGt_EORT);
#line 25 "update.pgc" #line 25 "insupd.pgc"
if (sqlca.sqlwarn[0] == 'W') sqlprint(); if (sqlca.sqlwarn[0] == 'W') sqlprint();
#line 25 "update.pgc" #line 25 "insupd.pgc"
if (sqlca.sqlcode < 0) sqlprint();} if (sqlca.sqlcode < 0) sqlprint();}
#line 25 "update.pgc" #line 25 "insupd.pgc"
{ ECPGdo(__LINE__, 0, 1, NULL, "update test set a = 4 where a = 3 ", ECPGt_EOIT, ECPGt_EORT); { ECPGdo(__LINE__, 0, 1, NULL, "update test set a = 4 where a = 3 ", ECPGt_EOIT, ECPGt_EORT);
#line 26 "update.pgc" #line 26 "insupd.pgc"
if (sqlca.sqlwarn[0] == 'W') sqlprint(); if (sqlca.sqlwarn[0] == 'W') sqlprint();
#line 26 "update.pgc" #line 26 "insupd.pgc"
if (sqlca.sqlcode < 0) sqlprint();} if (sqlca.sqlcode < 0) sqlprint();}
#line 26 "update.pgc" #line 26 "insupd.pgc"
; ;
{ ECPGdo(__LINE__, 0, 1, NULL, "select a , b from test order by a ", ECPGt_EOIT, { ECPGdo(__LINE__, 0, 1, NULL, "select a , b from test order by a ", ECPGt_EOIT,
...@@ -116,25 +116,25 @@ if (sqlca.sqlcode < 0) sqlprint();} ...@@ -116,25 +116,25 @@ if (sqlca.sqlcode < 0) sqlprint();}
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
ECPGt_int,(i2),(long)1,(long)3,sizeof(int), ECPGt_int,(i2),(long)1,(long)3,sizeof(int),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
#line 28 "update.pgc" #line 28 "insupd.pgc"
if (sqlca.sqlwarn[0] == 'W') sqlprint(); if (sqlca.sqlwarn[0] == 'W') sqlprint();
#line 28 "update.pgc" #line 28 "insupd.pgc"
if (sqlca.sqlcode < 0) sqlprint();} if (sqlca.sqlcode < 0) sqlprint();}
#line 28 "update.pgc" #line 28 "insupd.pgc"
printf("test\na b\n%d %d\n%d %d\n%d %d\n", i1[0], i2[0], i1[1], i2[1], i1[2], i2[2]); printf("test\na b\n%d %d\n%d %d\n%d %d\n", i1[0], i2[0], i1[1], i2[1], i1[2], i2[2]);
{ ECPGdisconnect(__LINE__, "ALL"); { ECPGdisconnect(__LINE__, "ALL");
#line 32 "update.pgc" #line 32 "insupd.pgc"
if (sqlca.sqlwarn[0] == 'W') sqlprint(); if (sqlca.sqlwarn[0] == 'W') sqlprint();
#line 32 "update.pgc" #line 32 "insupd.pgc"
if (sqlca.sqlcode < 0) sqlprint();} if (sqlca.sqlcode < 0) sqlprint();}
#line 32 "update.pgc" #line 32 "insupd.pgc"
return 0; return 0;
......
...@@ -19,7 +19,7 @@ TESTS = array array.c \ ...@@ -19,7 +19,7 @@ TESTS = array array.c \
parser parser.c \ parser parser.c \
quote quote.c \ quote quote.c \
show show.c \ show show.c \
update update.c insupd insupd.c
all: $(TESTS) all: $(TESTS)
......
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