mirror of
https://github.com/postgres/postgres.git
synced 2025-06-05 00:02:04 -04:00
Improve tab whitespace in file.
Add comment about $$ and '' SCONST strings.
This commit is contained in:
parent
46dfa5ec83
commit
890707a537
@ -1,4 +1,4 @@
|
|||||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.317 2006/02/01 22:16:36 momjian Exp $ */
|
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.318 2006/02/03 05:38:35 momjian Exp $ */
|
||||||
|
|
||||||
/* Copyright comment */
|
/* Copyright comment */
|
||||||
%{
|
%{
|
||||||
@ -54,9 +54,9 @@ void
|
|||||||
mmerror(int error_code, enum errortype type, char * error, ...)
|
mmerror(int error_code, enum errortype type, char * error, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
fprintf(stderr, "%s:%d: ", input_filename, yylineno);
|
fprintf(stderr, "%s:%d: ", input_filename, yylineno);
|
||||||
|
|
||||||
switch(type)
|
switch(type)
|
||||||
{
|
{
|
||||||
case ET_WARNING:
|
case ET_WARNING:
|
||||||
@ -71,9 +71,9 @@ mmerror(int error_code, enum errortype type, char * error, ...)
|
|||||||
va_start(ap, error);
|
va_start(ap, error);
|
||||||
vfprintf(stderr, error, ap);
|
vfprintf(stderr, error, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
|
||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
|
|
||||||
switch(type)
|
switch(type)
|
||||||
{
|
{
|
||||||
case ET_WARNING:
|
case ET_WARNING:
|
||||||
@ -176,11 +176,11 @@ create_questionmarks(char *name, bool array)
|
|||||||
int count;
|
int count;
|
||||||
char *result = EMPTY;
|
char *result = EMPTY;
|
||||||
|
|
||||||
/* In case we have a struct, we have to print as many "?" as there are attributes in the struct
|
/* In case we have a struct, we have to print as many "?" as there are attributes in the struct
|
||||||
* An array is only allowed together with an element argument
|
* An array is only allowed together with an element argument
|
||||||
* This is essantially only used for inserts, but using a struct as input parameter is an error anywhere else
|
* This is essantially only used for inserts, but using a struct as input parameter is an error anywhere else
|
||||||
* so we don't have to worry here. */
|
* so we don't have to worry here. */
|
||||||
|
|
||||||
if (p->type->type == ECPGt_struct || (array && p->type->type == ECPGt_array && p->type->u.element->type == ECPGt_struct))
|
if (p->type->type == ECPGt_struct || (array && p->type->type == ECPGt_array && p->type->u.element->type == ECPGt_struct))
|
||||||
{
|
{
|
||||||
struct ECPGstruct_member *m;
|
struct ECPGstruct_member *m;
|
||||||
@ -209,14 +209,14 @@ adjust_informix(struct arguments *list)
|
|||||||
{
|
{
|
||||||
/* Informix accepts DECLARE with variables that are out of scope when OPEN is called.
|
/* Informix accepts DECLARE with variables that are out of scope when OPEN is called.
|
||||||
* for instance you can declare variables in a function, and then subsequently use them
|
* for instance you can declare variables in a function, and then subsequently use them
|
||||||
* {
|
* {
|
||||||
* declare_vars();
|
* declare_vars();
|
||||||
* exec sql ... which uses vars declared in the above function
|
* exec sql ... which uses vars declared in the above function
|
||||||
*
|
*
|
||||||
* This breaks standard and leads to some very dangerous programming.
|
* This breaks standard and leads to some very dangerous programming.
|
||||||
* Since they do, we have to work around and accept their syntax as well.
|
* Since they do, we have to work around and accept their syntax as well.
|
||||||
* But we will do so ONLY in Informix mode.
|
* But we will do so ONLY in Informix mode.
|
||||||
* We have to change the variables to our own struct and just store the pointer instead of the variable
|
* We have to change the variables to our own struct and just store the pointer instead of the variable
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct arguments *ptr;
|
struct arguments *ptr;
|
||||||
@ -226,11 +226,11 @@ adjust_informix(struct arguments *list)
|
|||||||
{
|
{
|
||||||
char temp[20]; /* this should be sufficient unless you have 8 byte integers */
|
char temp[20]; /* this should be sufficient unless you have 8 byte integers */
|
||||||
char *original_var;
|
char *original_var;
|
||||||
|
|
||||||
/* change variable name to "ECPG_informix_get_var(<counter>)" */
|
/* change variable name to "ECPG_informix_get_var(<counter>)" */
|
||||||
original_var = ptr->variable->name;
|
original_var = ptr->variable->name;
|
||||||
sprintf(temp, "%d))", ecpg_informix_var);
|
sprintf(temp, "%d))", ecpg_informix_var);
|
||||||
|
|
||||||
if ((ptr->variable->type->type != ECPGt_varchar && ptr->variable->type->type != ECPGt_char && ptr->variable->type->type != ECPGt_unsigned_char) && atoi(ptr->variable->type->size) > 1)
|
if ((ptr->variable->type->type != ECPGt_varchar && ptr->variable->type->type != ECPGt_char && ptr->variable->type->type != ECPGt_unsigned_char) && atoi(ptr->variable->type->size) > 1)
|
||||||
{
|
{
|
||||||
ptr->variable = new_variable(cat_str(4, make_str("("), mm_strdup(ECPGtype_name(ptr->variable->type->u.element->type)), make_str(" *)(ECPG_informix_get_var("), mm_strdup(temp)), ECPGmake_array_type(ECPGmake_simple_type(ptr->variable->type->u.element->type, make_str("1")), ptr->variable->type->size), 0);
|
ptr->variable = new_variable(cat_str(4, make_str("("), mm_strdup(ECPGtype_name(ptr->variable->type->u.element->type)), make_str(" *)(ECPG_informix_get_var("), mm_strdup(temp)), ECPGmake_array_type(ECPGmake_simple_type(ptr->variable->type->u.element->type, make_str("1")), ptr->variable->type->size), 0);
|
||||||
@ -246,17 +246,17 @@ adjust_informix(struct arguments *list)
|
|||||||
ptr->variable = new_variable(cat_str(4, make_str("*("), mm_strdup(ECPGtype_name(ptr->variable->type->type)), make_str(" *)(ECPG_informix_get_var("), mm_strdup(temp)), ECPGmake_simple_type(ptr->variable->type->type, ptr->variable->type->size), 0);
|
ptr->variable = new_variable(cat_str(4, make_str("*("), mm_strdup(ECPGtype_name(ptr->variable->type->type)), make_str(" *)(ECPG_informix_get_var("), mm_strdup(temp)), ECPGmake_simple_type(ptr->variable->type->type, ptr->variable->type->size), 0);
|
||||||
sprintf(temp, "%d, &(", ecpg_informix_var++);
|
sprintf(temp, "%d, &(", ecpg_informix_var++);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* create call to "ECPG_informix_set_var(<counter>, <pointer>. <linen number>)" */
|
/* create call to "ECPG_informix_set_var(<counter>, <pointer>. <linen number>)" */
|
||||||
result = cat_str(5, result, make_str("ECPG_informix_set_var("), mm_strdup(temp), mm_strdup(original_var), make_str("), __LINE__);\n"));
|
result = cat_str(5, result, make_str("ECPG_informix_set_var("), mm_strdup(temp), mm_strdup(original_var), make_str("), __LINE__);\n"));
|
||||||
|
|
||||||
/* now the indicator if there is one */
|
/* now the indicator if there is one */
|
||||||
if (ptr->indicator->type->type != ECPGt_NO_INDICATOR)
|
if (ptr->indicator->type->type != ECPGt_NO_INDICATOR)
|
||||||
{
|
{
|
||||||
/* change variable name to "ECPG_informix_get_var(<counter>)" */
|
/* change variable name to "ECPG_informix_get_var(<counter>)" */
|
||||||
original_var = ptr->indicator->name;
|
original_var = ptr->indicator->name;
|
||||||
sprintf(temp, "%d))", ecpg_informix_var);
|
sprintf(temp, "%d))", ecpg_informix_var);
|
||||||
|
|
||||||
/* create call to "ECPG_informix_set_var(<counter>, <pointer>. <linen number>)" */
|
/* create call to "ECPG_informix_set_var(<counter>, <pointer>. <linen number>)" */
|
||||||
if (atoi(ptr->indicator->type->size) > 1)
|
if (atoi(ptr->indicator->type->size) > 1)
|
||||||
{
|
{
|
||||||
@ -294,7 +294,7 @@ add_additional_variables(char *name, bool insert)
|
|||||||
}
|
}
|
||||||
if (insert)
|
if (insert)
|
||||||
{
|
{
|
||||||
/* add all those input variables that were given earlier
|
/* add all those input variables that were given earlier
|
||||||
* note that we have to append here but have to keep the existing order */
|
* note that we have to append here but have to keep the existing order */
|
||||||
for (p = ptr->argsinsert; p; p = p->next)
|
for (p = ptr->argsinsert; p; p = p->next)
|
||||||
add_variable_to_tail(&argsinsert, p->variable, p->indicator);
|
add_variable_to_tail(&argsinsert, p->variable, p->indicator);
|
||||||
@ -303,7 +303,7 @@ add_additional_variables(char *name, bool insert)
|
|||||||
/* add all those output variables that were given earlier */
|
/* add all those output variables that were given earlier */
|
||||||
for (p = ptr->argsresult; p; p = p->next)
|
for (p = ptr->argsresult; p; p = p->next)
|
||||||
add_variable_to_tail(&argsresult, p->variable, p->indicator);
|
add_variable_to_tail(&argsresult, p->variable, p->indicator);
|
||||||
|
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
%}
|
%}
|
||||||
@ -324,8 +324,8 @@ add_additional_variables(char *name, bool insert)
|
|||||||
|
|
||||||
/* special embedded SQL token */
|
/* special embedded SQL token */
|
||||||
%token SQL_ALLOCATE SQL_AUTOCOMMIT SQL_BOOL SQL_BREAK
|
%token SQL_ALLOCATE SQL_AUTOCOMMIT SQL_BOOL SQL_BREAK
|
||||||
SQL_CALL SQL_CARDINALITY SQL_CONNECT
|
SQL_CALL SQL_CARDINALITY SQL_CONNECT
|
||||||
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_ENUM SQL_FOUND
|
||||||
@ -352,75 +352,75 @@ add_additional_variables(char *name, bool insert)
|
|||||||
%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 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
|
||||||
BOOLEAN_P BOTH BY
|
BOOLEAN_P BOTH BY
|
||||||
|
|
||||||
CACHE CALLED CASCADE CASE CAST CHAIN CHAR_P
|
CACHE CALLED CASCADE CASE CAST CHAIN CHAR_P
|
||||||
CHARACTER CHARACTERISTICS CHECK CHECKPOINT CLASS CLOSE
|
CHARACTER CHARACTERISTICS CHECK CHECKPOINT CLASS CLOSE
|
||||||
CLUSTER COALESCE COLLATE COLUMN COMMENT COMMIT
|
CLUSTER COALESCE COLLATE COLUMN COMMENT COMMIT
|
||||||
COMMITTED CONNECTION CONSTRAINT CONSTRAINTS CONVERSION_P CONVERT COPY CREATE CREATEDB
|
COMMITTED CONNECTION CONSTRAINT CONSTRAINTS CONVERSION_P CONVERT COPY CREATE CREATEDB
|
||||||
CREATEROLE CREATEUSER CROSS CSV CURRENT_DATE CURRENT_ROLE CURRENT_TIME
|
CREATEROLE CREATEUSER CROSS CSV CURRENT_DATE CURRENT_ROLE CURRENT_TIME
|
||||||
CURRENT_TIMESTAMP CURRENT_USER CURSOR CYCLE
|
CURRENT_TIMESTAMP CURRENT_USER CURSOR CYCLE
|
||||||
|
|
||||||
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 DOMAIN_P DOUBLE_P DROP
|
DESC DISABLE_P DISTINCT DO 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 ESCAPE EXCEPT EXCLUSIVE EXCLUDING
|
||||||
EXECUTE EXISTS EXPLAIN EXTERNAL EXTRACT
|
EXECUTE EXISTS EXPLAIN EXTERNAL EXTRACT
|
||||||
|
|
||||||
FALSE_P FETCH FIRST_P FLOAT_P FOR FORCE FOREIGN FORWARD FREEZE FROM
|
FALSE_P FETCH FIRST_P FLOAT_P FOR FORCE FOREIGN FORWARD FREEZE FROM
|
||||||
FULL FUNCTION
|
FULL FUNCTION
|
||||||
|
|
||||||
GET GLOBAL GRANT GRANTED GREATEST GROUP_P
|
GET GLOBAL GRANT GRANTED GREATEST GROUP_P
|
||||||
|
|
||||||
HANDLER HAVING HEADER_P HOLD HOUR_P
|
HANDLER HAVING HEADER_P HOLD HOUR_P
|
||||||
|
|
||||||
IF_P ILIKE IMMEDIATE IMMUTABLE IMPLICIT_P IN_P INCLUDING INCREMENT
|
IF_P ILIKE IMMEDIATE IMMUTABLE IMPLICIT_P IN_P INCLUDING INCREMENT
|
||||||
INDEX INHERIT INHERITS INITIALLY INNER_P INOUT INPUT_P
|
INDEX INHERIT INHERITS INITIALLY INNER_P INOUT INPUT_P
|
||||||
INSENSITIVE INSERT INSTEAD INT_P INTEGER INTERSECT
|
INSENSITIVE INSERT INSTEAD INT_P INTEGER INTERSECT
|
||||||
INTERVAL INTO INVOKER IS ISNULL ISOLATION
|
INTERVAL INTO INVOKER IS ISNULL ISOLATION
|
||||||
|
|
||||||
JOIN
|
JOIN
|
||||||
|
|
||||||
KEY
|
KEY
|
||||||
|
|
||||||
LANCOMPILER LANGUAGE LARGE_P LAST_P LEADING LEAST LEFT LEVEL
|
LANCOMPILER LANGUAGE LARGE_P LAST_P LEADING LEAST LEFT LEVEL
|
||||||
LIKE LIMIT LISTEN LOAD LOCAL LOCALTIME LOCALTIMESTAMP LOCATION
|
LIKE LIMIT LISTEN LOAD LOCAL LOCALTIME LOCALTIMESTAMP LOCATION
|
||||||
LOCK_P LOGIN_P
|
LOCK_P LOGIN_P
|
||||||
|
|
||||||
MATCH MAXVALUE MINUTE_P MINVALUE MODE MONTH_P MOVE
|
MATCH MAXVALUE MINUTE_P MINVALUE MODE MONTH_P MOVE
|
||||||
|
|
||||||
NAMES NATIONAL NATURAL NCHAR NEW NEXT NO NOCREATEDB
|
NAMES NATIONAL NATURAL NCHAR NEW NEXT NO NOCREATEDB
|
||||||
NOCREATEROLE NOCREATEUSER NOINHERIT NOLOGIN_P NONE NOSUPERUSER
|
NOCREATEROLE NOCREATEUSER NOINHERIT NOLOGIN_P NONE NOSUPERUSER
|
||||||
NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLIF NUMERIC
|
NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLIF NUMERIC
|
||||||
|
|
||||||
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 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 RETURNS REVOKE RIGHT
|
REPEATABLE REPLACE RESET RESTART RESTRICT RETURNS REVOKE RIGHT
|
||||||
ROLE ROLLBACK ROW ROWS RULE
|
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
|
||||||
SHOW SIMILAR SIMPLE SMALLINT SOME STABLE START STATEMENT
|
SHOW SIMILAR SIMPLE SMALLINT SOME STABLE START STATEMENT
|
||||||
STATISTICS STDIN STDOUT STORAGE STRICT_P SUBSTRING SUPERUSER_P SYMMETRIC
|
STATISTICS STDIN STDOUT STORAGE STRICT_P SUBSTRING SUPERUSER_P SYMMETRIC
|
||||||
SYSID SYSTEM_P
|
SYSID SYSTEM_P
|
||||||
|
|
||||||
TABLE TABLESPACE TEMP TEMPLATE TEMPORARY THEN TIME TIMESTAMP TO TOAST
|
TABLE TABLESPACE TEMP TEMPLATE TEMPORARY THEN TIME TIMESTAMP TO TOAST
|
||||||
TRAILING TRANSACTION TREAT TRIGGER TRIM TRUE_P TRUNCATE TRUSTED TYPE_P
|
TRAILING TRANSACTION TREAT TRIGGER TRIM TRUE_P TRUNCATE TRUSTED TYPE_P
|
||||||
|
|
||||||
UNCOMMITTED UNENCRYPTED UNION UNIQUE UNKNOWN UNLISTEN UNTIL
|
UNCOMMITTED UNENCRYPTED UNION UNIQUE UNKNOWN UNLISTEN UNTIL
|
||||||
UPDATE USER USING
|
UPDATE USER USING
|
||||||
|
|
||||||
VACUUM VALID VALIDATOR VALUES VARCHAR VARYING VERBOSE VIEW VOLATILE
|
VACUUM VALID VALIDATOR VALUES VARCHAR VARYING VERBOSE VIEW VOLATILE
|
||||||
WHEN WHERE WITH WITHOUT WORK WRITE
|
WHEN WHERE WITH WITHOUT WORK WRITE
|
||||||
YEAR_P
|
YEAR_P
|
||||||
@ -472,7 +472,7 @@ add_additional_variables(char *name, bool insert)
|
|||||||
%type <str> comment_text ConstraintDeferrabilitySpec TableElementList
|
%type <str> comment_text ConstraintDeferrabilitySpec TableElementList
|
||||||
%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_name
|
%type <str> ConstraintElem key_actions ColQualList type_name
|
||||||
%type <str> target_list target_el update_target_list alias_clause
|
%type <str> target_list target_el update_target_list alias_clause
|
||||||
%type <str> update_target_el qualified_name database_name alter_using
|
%type <str> update_target_el qualified_name database_name alter_using
|
||||||
@ -497,7 +497,7 @@ add_additional_variables(char *name, bool insert)
|
|||||||
%type <str> copy_delimiter ListenStmt CopyStmt copy_file_name opt_binary
|
%type <str> copy_delimiter ListenStmt CopyStmt copy_file_name opt_binary
|
||||||
%type <str> FetchStmt from_in CreateOpClassStmt like_including_defaults
|
%type <str> FetchStmt from_in CreateOpClassStmt like_including_defaults
|
||||||
%type <str> ClosePortalStmt DropStmt VacuumStmt AnalyzeStmt opt_verbose
|
%type <str> ClosePortalStmt DropStmt VacuumStmt AnalyzeStmt opt_verbose
|
||||||
%type <str> opt_full func_arg OptWithOids opt_freeze alter_table_cmd
|
%type <str> opt_full func_arg OptWithOids opt_freeze alter_table_cmd
|
||||||
%type <str> analyze_keyword opt_name_list ExplainStmt index_params
|
%type <str> analyze_keyword opt_name_list ExplainStmt index_params
|
||||||
%type <str> index_elem opt_class access_method_clause alter_table_cmds
|
%type <str> index_elem opt_class access_method_clause alter_table_cmds
|
||||||
%type <str> index_opt_unique IndexStmt func_return ConstInterval
|
%type <str> index_opt_unique IndexStmt func_return ConstInterval
|
||||||
@ -530,10 +530,10 @@ add_additional_variables(char *name, bool insert)
|
|||||||
%type <str> select_clause opt_select_limit select_limit_value opt_recheck
|
%type <str> select_clause opt_select_limit select_limit_value opt_recheck
|
||||||
%type <str> ConstraintTimeSpec AlterDatabaseSetStmt DropAssertStmt
|
%type <str> ConstraintTimeSpec AlterDatabaseSetStmt DropAssertStmt
|
||||||
%type <str> select_offset_value ReindexStmt join_type opt_boolean
|
%type <str> select_offset_value ReindexStmt join_type opt_boolean
|
||||||
%type <str> join_qual joined_table opclass_item
|
%type <str> join_qual joined_table opclass_item
|
||||||
%type <str> lock_type array_expr_list ReassignOwnedStmt
|
%type <str> lock_type array_expr_list ReassignOwnedStmt
|
||||||
%type <str> OptConstrFromTable OptTempTableName StringConst array_expr
|
%type <str> OptConstrFromTable OptTempTableName StringConst array_expr
|
||||||
%type <str> constraints_set_mode comment_type
|
%type <str> constraints_set_mode comment_type
|
||||||
%type <str> CreateGroupStmt AlterGroupStmt DropGroupStmt key_delete
|
%type <str> CreateGroupStmt AlterGroupStmt DropGroupStmt key_delete
|
||||||
%type <str> opt_force key_update CreateSchemaStmt PosIntStringConst
|
%type <str> opt_force key_update CreateSchemaStmt PosIntStringConst
|
||||||
%type <str> IntConst PosIntConst grantee_list func_type opt_or_replace
|
%type <str> IntConst PosIntConst grantee_list func_type opt_or_replace
|
||||||
@ -553,7 +553,7 @@ add_additional_variables(char *name, bool insert)
|
|||||||
%type <str> ConstBit GenericType TableFuncElementList opt_analyze
|
%type <str> ConstBit GenericType TableFuncElementList opt_analyze
|
||||||
%type <str> opt_sort_clause subquery_Op transaction_mode_item
|
%type <str> opt_sort_clause subquery_Op transaction_mode_item
|
||||||
%type <str> ECPGWhenever ECPGConnect connection_target ECPGOpen
|
%type <str> ECPGWhenever ECPGConnect connection_target ECPGOpen
|
||||||
%type <str> indicator ECPGExecute ECPGPrepare ecpg_using ecpg_into
|
%type <str> indicator ECPGExecute ECPGPrepare ecpg_using ecpg_into
|
||||||
%type <str> storage_declaration storage_clause opt_initializer c_anything
|
%type <str> storage_declaration storage_clause opt_initializer c_anything
|
||||||
%type <str> variable_list variable c_thing c_term ECPGKeywords_vanames
|
%type <str> variable_list variable c_thing c_term ECPGKeywords_vanames
|
||||||
%type <str> opt_pointer ECPGDisconnect dis_name storage_modifier
|
%type <str> opt_pointer ECPGDisconnect dis_name storage_modifier
|
||||||
@ -573,7 +573,7 @@ add_additional_variables(char *name, bool insert)
|
|||||||
%type <str> reserved_keyword unreserved_keyword ecpg_interval opt_ecpg_using
|
%type <str> reserved_keyword unreserved_keyword ecpg_interval opt_ecpg_using
|
||||||
%type <str> col_name_keyword func_name_keyword precision opt_scale
|
%type <str> col_name_keyword func_name_keyword precision opt_scale
|
||||||
%type <str> ECPGTypeName using_list ECPGColLabelCommon UsingConst
|
%type <str> ECPGTypeName using_list ECPGColLabelCommon UsingConst
|
||||||
%type <str> inf_val_list inf_col_list using_descriptor into_descriptor
|
%type <str> inf_val_list inf_col_list using_descriptor into_descriptor
|
||||||
%type <str> prepared_name struct_union_type_with_symbol OptConsTableSpace
|
%type <str> prepared_name struct_union_type_with_symbol OptConsTableSpace
|
||||||
%type <str> ECPGunreserved ECPGunreserved_interval cvariable
|
%type <str> ECPGunreserved ECPGunreserved_interval cvariable
|
||||||
%type <str> AlterOwnerStmt OptTableSpaceOwner CreateTableSpaceStmt
|
%type <str> AlterOwnerStmt OptTableSpaceOwner CreateTableSpaceStmt
|
||||||
@ -593,11 +593,11 @@ add_additional_variables(char *name, bool insert)
|
|||||||
|
|
||||||
%type <dtype_enum> descriptor_item desc_header_item
|
%type <dtype_enum> descriptor_item desc_header_item
|
||||||
|
|
||||||
%type <type> var_type
|
%type <type> var_type
|
||||||
|
|
||||||
%type <action> action
|
%type <action> action
|
||||||
|
|
||||||
%type <index> opt_array_bounds
|
%type <index> opt_array_bounds
|
||||||
|
|
||||||
%%
|
%%
|
||||||
prog: statements;
|
prog: statements;
|
||||||
@ -660,7 +660,7 @@ stmt: AlterDatabaseStmt { output_statement($1, 0, connection); }
|
|||||||
{
|
{
|
||||||
if (connection)
|
if (connection)
|
||||||
mmerror(PARSE_ERROR, ET_ERROR, "no at option for close database statement.\n");
|
mmerror(PARSE_ERROR, ET_ERROR, "no at option for close database statement.\n");
|
||||||
|
|
||||||
fprintf(yyout, "{ ECPGdisconnect(__LINE__, \"CURRENT\");");
|
fprintf(yyout, "{ ECPGdisconnect(__LINE__, \"CURRENT\");");
|
||||||
whenever_action(2);
|
whenever_action(2);
|
||||||
free($1);
|
free($1);
|
||||||
@ -792,7 +792,7 @@ stmt: AlterDatabaseStmt { output_statement($1, 0, connection); }
|
|||||||
fputs("ECPGt_EORT);", yyout);
|
fputs("ECPGt_EORT);", yyout);
|
||||||
fprintf(yyout, "}");
|
fprintf(yyout, "}");
|
||||||
output_line_number();
|
output_line_number();
|
||||||
|
|
||||||
/* whenever_action(2); */
|
/* whenever_action(2); */
|
||||||
free($1);
|
free($1);
|
||||||
}
|
}
|
||||||
@ -962,39 +962,39 @@ CreateUserStmt:
|
|||||||
CREATE USER RoleId opt_with OptRoleList
|
CREATE USER RoleId opt_with OptRoleList
|
||||||
{$$ = cat_str(4, make_str("create user"), $3, $4, $5); }
|
{$$ = cat_str(4, make_str("create user"), $3, $4, $5); }
|
||||||
;
|
;
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* Alter a postgresql DBMS role
|
* Alter a postgresql DBMS role
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
AlterRoleStmt: ALTER ROLE RoleId opt_with OptRoleList
|
AlterRoleStmt: ALTER ROLE RoleId opt_with OptRoleList
|
||||||
{ $$ = cat_str(4, make_str("alter role"), $3, $4, $5); }
|
{ $$ = cat_str(4, make_str("alter role"), $3, $4, $5); }
|
||||||
;
|
;
|
||||||
|
|
||||||
AlterRoleSetStmt: ALTER ROLE RoleId SET set_rest
|
AlterRoleSetStmt: ALTER ROLE RoleId SET set_rest
|
||||||
{ $$ = cat_str(4, make_str("alter role"), $3, make_str("set"), $5); }
|
{ $$ = cat_str(4, make_str("alter role"), $3, make_str("set"), $5); }
|
||||||
| ALTER ROLE RoleId VariableResetStmt
|
| ALTER ROLE RoleId VariableResetStmt
|
||||||
{ $$ = cat_str(3, make_str("alter role"), $3, $4); }
|
{ $$ = cat_str(3, make_str("alter role"), $3, $4); }
|
||||||
;
|
;
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* Alter a postgresql DBMS user
|
* Alter a postgresql DBMS user
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
AlterUserStmt: ALTER USER RoleId opt_with OptRoleList
|
AlterUserStmt: ALTER USER RoleId opt_with OptRoleList
|
||||||
{ $$ = cat_str(4, make_str("alter user"), $3, $4, $5); };
|
{ $$ = cat_str(4, make_str("alter user"), $3, $4, $5); };
|
||||||
|
|
||||||
AlterRoleSetStmt: ALTER USER RoleId SET set_rest
|
AlterRoleSetStmt: ALTER USER RoleId SET set_rest
|
||||||
{ $$ = cat_str(4, make_str("alter user"), $3, make_str("set"), $5); }
|
{ $$ = cat_str(4, make_str("alter user"), $3, make_str("set"), $5); }
|
||||||
| ALTER USER RoleId VariableResetStmt
|
| ALTER USER RoleId VariableResetStmt
|
||||||
{ $$ = cat_str(3, make_str("alter user"), $3, $4); }
|
{ $$ = cat_str(3, make_str("alter user"), $3, $4); }
|
||||||
;
|
;
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* Drop a postgresql DBMS role
|
* Drop a postgresql DBMS role
|
||||||
@ -1004,7 +1004,7 @@ CreateUserStmt:
|
|||||||
DropRoleStmt: DROP ROLE name_list
|
DropRoleStmt: DROP ROLE name_list
|
||||||
{ $$ = cat2_str(make_str("drop role"), $3);}
|
{ $$ = cat2_str(make_str("drop role"), $3);}
|
||||||
;
|
;
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* Drop a postgresql DBMS user
|
* Drop a postgresql DBMS user
|
||||||
@ -1014,7 +1014,7 @@ CreateUserStmt:
|
|||||||
DropUserStmt: DROP USER name_list
|
DropUserStmt: DROP USER name_list
|
||||||
{ $$ = cat2_str(make_str("drop user"), $3);}
|
{ $$ = cat2_str(make_str("drop user"), $3);}
|
||||||
;
|
;
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* Create a postgresql group
|
* Create a postgresql group
|
||||||
@ -1024,7 +1024,7 @@ CreateUserStmt:
|
|||||||
CreateGroupStmt: CREATE GROUP_P RoleId opt_with OptRoleList
|
CreateGroupStmt: CREATE GROUP_P RoleId opt_with OptRoleList
|
||||||
{ $$ = cat_str(4, make_str("create group"), $3, $4, $5); }
|
{ $$ = cat_str(4, make_str("create group"), $3, $4, $5); }
|
||||||
;
|
;
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* Alter a postgresql group
|
* Alter a postgresql group
|
||||||
@ -1034,11 +1034,11 @@ CreateUserStmt:
|
|||||||
AlterGroupStmt: ALTER GROUP_P RoleId add_drop USER name_list
|
AlterGroupStmt: ALTER GROUP_P RoleId add_drop USER name_list
|
||||||
{ $$ = cat_str(5, make_str("alter group"), $3, $4, make_str("user"), $6); }
|
{ $$ = cat_str(5, make_str("alter group"), $3, $4, make_str("user"), $6); }
|
||||||
;
|
;
|
||||||
|
|
||||||
add_drop: ADD_P { $$ = make_str("add"); }
|
add_drop: ADD_P { $$ = make_str("add"); }
|
||||||
| DROP { $$ = make_str("drop"); }
|
| DROP { $$ = make_str("drop"); }
|
||||||
;
|
;
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* Drop a postgresql group
|
* Drop a postgresql group
|
||||||
@ -1048,20 +1048,20 @@ CreateUserStmt:
|
|||||||
DropGroupStmt: DROP GROUP_P name_list
|
DropGroupStmt: DROP GROUP_P name_list
|
||||||
{ $$ = cat2_str(make_str("drop group"), $3); }
|
{ $$ = cat2_str(make_str("drop group"), $3); }
|
||||||
;
|
;
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* Manipulate a schema
|
* Manipulate a schema
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
CreateSchemaStmt: CREATE SCHEMA OptSchemaName AUTHORIZATION RoleId OptSchemaEltList
|
CreateSchemaStmt: CREATE SCHEMA OptSchemaName AUTHORIZATION RoleId OptSchemaEltList
|
||||||
{ $$ = cat_str(5, make_str("create schema"), $3, make_str("authorization"), $5, $6); }
|
{ $$ = cat_str(5, make_str("create schema"), $3, make_str("authorization"), $5, $6); }
|
||||||
| CREATE SCHEMA ColId OptSchemaEltList
|
| CREATE SCHEMA ColId OptSchemaEltList
|
||||||
{ $$ = cat_str(3, make_str("create schema"), $3, $4); }
|
{ $$ = cat_str(3, make_str("create schema"), $3, $4); }
|
||||||
;
|
;
|
||||||
|
|
||||||
OptSchemaName: ColId { $$ = $1; }
|
OptSchemaName: ColId { $$ = $1; }
|
||||||
| /* EMPTY */ { $$ = EMPTY; }
|
| /* EMPTY */ { $$ = EMPTY; }
|
||||||
;
|
;
|
||||||
@ -1123,7 +1123,7 @@ set_rest: var_name TO var_list_or_default
|
|||||||
var_name: ECPGColId { $$ = $1; }
|
var_name: ECPGColId { $$ = $1; }
|
||||||
| var_name '.' ColId { $$ = cat_str(3, $1, make_str("."), $3); }
|
| var_name '.' ColId { $$ = cat_str(3, $1, make_str("."), $3); }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
var_list_or_default: var_list
|
var_list_or_default: var_list
|
||||||
{ $$ = $1; }
|
{ $$ = $1; }
|
||||||
@ -1336,7 +1336,7 @@ opt_drop_behavior: CASCADE { $$ = make_str("cascade"); }
|
|||||||
alter_using: USING a_expr { $$ = cat2_str(make_str("using"), $2); }
|
alter_using: USING a_expr { $$ = cat2_str(make_str("using"), $2); }
|
||||||
| /* EMPTY */ { $$ = EMPTY; }
|
| /* EMPTY */ { $$ = EMPTY; }
|
||||||
;
|
;
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* QUERY :
|
* QUERY :
|
||||||
@ -1395,7 +1395,7 @@ copy_opt_item: BINARY { $$ = make_str("binary"); }
|
|||||||
{ $$ = cat2_str(make_str("force quote"), $3); }
|
{ $$ = cat2_str(make_str("force quote"), $3); }
|
||||||
| FORCE NOT NULL_P columnList
|
| FORCE NOT NULL_P columnList
|
||||||
{ $$ = cat2_str(make_str("force not null"), $4); }
|
{ $$ = cat2_str(make_str("force not null"), $4); }
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_binary: BINARY { $$ = make_str("binary"); }
|
opt_binary: BINARY { $$ = make_str("binary"); }
|
||||||
@ -1466,7 +1466,7 @@ TableElement: columnDef { $$ = $1; }
|
|||||||
| TableConstraint { $$ = $1; }
|
| TableConstraint { $$ = $1; }
|
||||||
;
|
;
|
||||||
|
|
||||||
columnDef: ColId Typename ColQualList
|
columnDef: ColId Typename ColQualList
|
||||||
{$$ = cat_str(3, $1, $2, $3); }
|
{$$ = cat_str(3, $1, $2, $3); }
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -1531,7 +1531,7 @@ TableLikeClause: LIKE qualified_name like_including_defaults
|
|||||||
like_including_defaults:
|
like_including_defaults:
|
||||||
INCLUDING DEFAULTS { $$ = make_str("including defaults"); }
|
INCLUDING DEFAULTS { $$ = make_str("including defaults"); }
|
||||||
| EXCLUDING DEFAULTS { $$ = make_str("excluding defaults"); }
|
| EXCLUDING DEFAULTS { $$ = make_str("excluding defaults"); }
|
||||||
| /* EMPTY */ { $$ = EMPTY; }
|
| /* EMPTY */ { $$ = EMPTY; }
|
||||||
;
|
;
|
||||||
|
|
||||||
/* ConstraintElem specifies constraint syntax which is not embedded into
|
/* ConstraintElem specifies constraint syntax which is not embedded into
|
||||||
@ -1625,7 +1625,7 @@ OptTableSpace: TABLESPACE name { $$ = cat2_str(make_str("tablespace"), $2); }
|
|||||||
OptConsTableSpace: USING INDEX TABLESPACE name { $$ = cat2_str(make_str("using index tablespace"), $4); }
|
OptConsTableSpace: USING INDEX TABLESPACE name { $$ = cat2_str(make_str("using index tablespace"), $4); }
|
||||||
| /*EMPTY*/ { $$ = EMPTY; }
|
| /*EMPTY*/ { $$ = EMPTY; }
|
||||||
;
|
;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Note: CREATE TABLE ... AS SELECT ... is just another spelling for
|
* Note: CREATE TABLE ... AS SELECT ... is just another spelling for
|
||||||
* SELECT ... INTO.
|
* SELECT ... INTO.
|
||||||
@ -2005,7 +2005,7 @@ ReassignOwnedStmt:
|
|||||||
REASSIGN OWNED BY name_list TO name
|
REASSIGN OWNED BY name_list TO name
|
||||||
{$$ = cat_str(4, make_str("reassign owned by"), $4, make_str("to"), $6); }
|
{$$ = cat_str(4, make_str("reassign owned by"), $4, make_str("to"), $6); }
|
||||||
;
|
;
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* QUERY:
|
* QUERY:
|
||||||
@ -2062,9 +2062,9 @@ TruncateStmt: TRUNCATE opt_table qualified_name_list
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
/* This is different from the backend as we try to be compatible with many other
|
/* This is different from the backend as we try to be compatible with many other
|
||||||
* embedded SQL implementations. So we accept their syntax as well and
|
* embedded SQL implementations. So we accept their syntax as well and
|
||||||
* translate it to the PGSQL syntax. */
|
* translate it to the PGSQL syntax. */
|
||||||
|
|
||||||
FetchStmt: FETCH fetch_direction from_in name ecpg_into
|
FetchStmt: FETCH fetch_direction from_in name ecpg_into
|
||||||
{
|
{
|
||||||
add_additional_variables($4, false);
|
add_additional_variables($4, false);
|
||||||
@ -2095,12 +2095,12 @@ FetchStmt: FETCH fetch_direction from_in name ecpg_into
|
|||||||
add_additional_variables($3, false);
|
add_additional_variables($3, false);
|
||||||
$$ = cat_str(4, make_str("fetch"), $2, make_str("from"), $3);
|
$$ = cat_str(4, make_str("fetch"), $2, make_str("from"), $3);
|
||||||
}
|
}
|
||||||
| FETCH from_in name
|
| FETCH from_in name
|
||||||
{
|
{
|
||||||
add_additional_variables($3, false);
|
add_additional_variables($3, false);
|
||||||
$$ = cat_str(3, make_str("fetch"), $2, $3);
|
$$ = cat_str(3, make_str("fetch"), $2, $3);
|
||||||
}
|
}
|
||||||
| FETCH name
|
| FETCH name
|
||||||
{
|
{
|
||||||
add_additional_variables($2, false);
|
add_additional_variables($2, false);
|
||||||
$$ = cat2_str(make_str("fetch"), $2);
|
$$ = cat2_str(make_str("fetch"), $2);
|
||||||
@ -2266,7 +2266,7 @@ RevokeRoleStmt:
|
|||||||
opt_grant_admin_option: WITH ADMIN OPTION { $$ = make_str("with admin option"); }
|
opt_grant_admin_option: WITH ADMIN OPTION { $$ = make_str("with admin option"); }
|
||||||
| /*EMPTY*/ { $$ = EMPTY; }
|
| /*EMPTY*/ { $$ = EMPTY; }
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_granted_by: GRANTED BY RoleId { $$ = cat2_str(make_str("granted by"), $3); }
|
opt_granted_by: GRANTED BY RoleId { $$ = cat2_str(make_str("granted by"), $3); }
|
||||||
| /*EMPTY*/ { $$ = EMPTY; }
|
| /*EMPTY*/ { $$ = EMPTY; }
|
||||||
;
|
;
|
||||||
@ -2573,7 +2573,7 @@ AlterObjectSchemaStmt:
|
|||||||
| ALTER TYPE_P any_name SET SCHEMA name
|
| ALTER TYPE_P any_name SET SCHEMA name
|
||||||
{ $$ = cat_str(4, make_str("alter type"), $3, make_str("set schema"), $6); }
|
{ $$ = cat_str(4, make_str("alter type"), $3, make_str("set schema"), $6); }
|
||||||
;
|
;
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* ALTER THING name OWNER TO newname
|
* ALTER THING name OWNER TO newname
|
||||||
@ -2716,13 +2716,13 @@ transaction_mode_item:
|
|||||||
| READ ONLY { $$ = make_str("read only"); }
|
| READ ONLY { $$ = make_str("read only"); }
|
||||||
| READ WRITE { $$ = make_str("read write"); }
|
| READ WRITE { $$ = make_str("read write"); }
|
||||||
;
|
;
|
||||||
|
|
||||||
transaction_mode_list:
|
transaction_mode_list:
|
||||||
transaction_mode_item { $$ = $1; }
|
transaction_mode_item { $$ = $1; }
|
||||||
| transaction_mode_list ',' transaction_mode_item { $$ = cat_str(3, $1, make_str(","), $3); }
|
| transaction_mode_list ',' transaction_mode_item { $$ = cat_str(3, $1, make_str(","), $3); }
|
||||||
| transaction_mode_list transaction_mode_item { $$ = cat_str(3, $1, make_str(" "), $2); }
|
| transaction_mode_list transaction_mode_item { $$ = cat_str(3, $1, make_str(" "), $2); }
|
||||||
;
|
;
|
||||||
|
|
||||||
transaction_mode_list_or_empty:
|
transaction_mode_list_or_empty:
|
||||||
transaction_mode_list { $$ = $1; }
|
transaction_mode_list { $$ = $1; }
|
||||||
| /* EMPTY */ { $$ = EMPTY; }
|
| /* EMPTY */ { $$ = EMPTY; }
|
||||||
@ -2812,7 +2812,7 @@ opt_equal: '=' { $$ = make_str("="); }
|
|||||||
AlterDatabaseStmt: ALTER DATABASE database_name opt_with alterdb_opt_list
|
AlterDatabaseStmt: ALTER DATABASE database_name opt_with alterdb_opt_list
|
||||||
{ $$ = cat_str(4, make_str("alter database"), $3, $4, $5); }
|
{ $$ = cat_str(4, make_str("alter database"), $3, $4, $5); }
|
||||||
;
|
;
|
||||||
|
|
||||||
AlterDatabaseSetStmt: ALTER DATABASE database_name SET set_rest
|
AlterDatabaseSetStmt: ALTER DATABASE database_name SET set_rest
|
||||||
{ $$ = cat_str(4, make_str("alter database"), $3, make_str("set"), $5); }
|
{ $$ = cat_str(4, make_str("alter database"), $3, make_str("set"), $5); }
|
||||||
| ALTER DATABASE database_name VariableResetStmt
|
| ALTER DATABASE database_name VariableResetStmt
|
||||||
@ -2827,7 +2827,7 @@ alterdb_opt_list:
|
|||||||
alterdb_opt_item:
|
alterdb_opt_item:
|
||||||
CONNECTION LIMIT opt_equal PosIntConst { $$ = cat_str(3, make_str("connection limit"), $3, $4); }
|
CONNECTION LIMIT opt_equal PosIntConst { $$ = cat_str(3, make_str("connection limit"), $3, $4); }
|
||||||
;
|
;
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* DROP DATABASE [ IF EXISTS ]
|
* DROP DATABASE [ IF EXISTS ]
|
||||||
@ -2866,7 +2866,7 @@ AlterDomainStmt:
|
|||||||
| ALTER DOMAIN_P any_name DROP CONSTRAINT name opt_drop_behavior
|
| ALTER DOMAIN_P any_name DROP CONSTRAINT name opt_drop_behavior
|
||||||
{ $$ = cat_str(5, make_str("alter domain"), $3, make_str("drop constraint"), $6, $7); }
|
{ $$ = cat_str(5, make_str("alter domain"), $3, make_str("drop constraint"), $6, $7); }
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_as: AS {$$ = make_str("as"); }
|
opt_as: AS {$$ = make_str("as"); }
|
||||||
| /* EMPTY */ {$$ = EMPTY; }
|
| /* EMPTY */ {$$ = EMPTY; }
|
||||||
;
|
;
|
||||||
@ -2958,7 +2958,7 @@ ExplainableStmt:
|
|||||||
| DeleteStmt
|
| DeleteStmt
|
||||||
| DeclareCursorStmt
|
| DeclareCursorStmt
|
||||||
/* | ExecuteStmt */
|
/* | ExecuteStmt */
|
||||||
;
|
;
|
||||||
opt_analyze:
|
opt_analyze:
|
||||||
analyze_keyword { $$ = $1; }
|
analyze_keyword { $$ = $1; }
|
||||||
| /* EMPTY */ { $$ = EMPTY; }
|
| /* EMPTY */ { $$ = EMPTY; }
|
||||||
@ -3144,7 +3144,7 @@ opt_hold: /* EMPTY */
|
|||||||
| WITH HOLD { $$ = make_str("with hold"); }
|
| WITH HOLD { $$ = make_str("with hold"); }
|
||||||
| WITHOUT HOLD { $$ = make_str("without hold"); }
|
| WITHOUT HOLD { $$ = make_str("without hold"); }
|
||||||
;
|
;
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* QUERY:
|
* QUERY:
|
||||||
@ -3284,7 +3284,7 @@ select_limit_value: a_expr { $$ = $1; }
|
|||||||
| ALL { $$ = make_str("all"); }
|
| ALL { $$ = make_str("all"); }
|
||||||
;
|
;
|
||||||
|
|
||||||
select_offset_value: a_expr { $$ = $1; }
|
select_offset_value: a_expr { $$ = $1; }
|
||||||
;
|
;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -3701,7 +3701,7 @@ opt_interval: YEAR_P { $$ = make_str("year"); }
|
|||||||
* expression grammar
|
* expression grammar
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
/* General expressions
|
/* General expressions
|
||||||
* This is the heart of the expression syntax.
|
* This is the heart of the expression syntax.
|
||||||
*
|
*
|
||||||
@ -3948,19 +3948,19 @@ func_expr: func_name '(' ')'
|
|||||||
{ $$ = cat2_str($1, make_str("(*)")); }
|
{ $$ = cat2_str($1, make_str("(*)")); }
|
||||||
| CURRENT_DATE
|
| CURRENT_DATE
|
||||||
{ $$ = make_str("current_date"); }
|
{ $$ = make_str("current_date"); }
|
||||||
| CURRENT_TIME
|
| CURRENT_TIME
|
||||||
{ $$ = make_str("current_time"); }
|
{ $$ = make_str("current_time"); }
|
||||||
| CURRENT_TIME '(' PosIntConst ')'
|
| CURRENT_TIME '(' PosIntConst ')'
|
||||||
{ $$ = cat_str(3, make_str("current_time ("), $3, make_str(")")); }
|
{ $$ = cat_str(3, make_str("current_time ("), $3, make_str(")")); }
|
||||||
| CURRENT_TIMESTAMP
|
| CURRENT_TIMESTAMP
|
||||||
{ $$ = make_str("current_timestamp"); }
|
{ $$ = make_str("current_timestamp"); }
|
||||||
| CURRENT_TIMESTAMP '(' PosIntConst ')'
|
| CURRENT_TIMESTAMP '(' PosIntConst ')'
|
||||||
{ $$ = cat_str(3, make_str("current_timestamp ("), $3, make_str(")")); }
|
{ $$ = cat_str(3, make_str("current_timestamp ("), $3, make_str(")")); }
|
||||||
| LOCALTIME
|
| LOCALTIME
|
||||||
{ $$ = make_str("localtime"); }
|
{ $$ = make_str("localtime"); }
|
||||||
| LOCALTIME '(' PosIntConst ')'
|
| LOCALTIME '(' PosIntConst ')'
|
||||||
{ $$ = cat_str(3, make_str("localtime ("), $3, make_str(")")); }
|
{ $$ = cat_str(3, make_str("localtime ("), $3, make_str(")")); }
|
||||||
| LOCALTIMESTAMP
|
| LOCALTIMESTAMP
|
||||||
{ $$ = make_str("local_timestamp"); }
|
{ $$ = make_str("local_timestamp"); }
|
||||||
| LOCALTIMESTAMP '(' PosIntConst ')'
|
| LOCALTIMESTAMP '(' PosIntConst ')'
|
||||||
{ $$ = cat_str(3, make_str("locale_timestamp ("), $3, make_str(")")); }
|
{ $$ = cat_str(3, make_str("locale_timestamp ("), $3, make_str(")")); }
|
||||||
@ -3968,9 +3968,9 @@ func_expr: func_name '(' ')'
|
|||||||
{ $$ = make_str("current_role"); }
|
{ $$ = make_str("current_role"); }
|
||||||
| CURRENT_USER
|
| CURRENT_USER
|
||||||
{ $$ = make_str("current_user"); }
|
{ $$ = make_str("current_user"); }
|
||||||
| SESSION_USER
|
| SESSION_USER
|
||||||
{ $$ = make_str("session_user"); }
|
{ $$ = make_str("session_user"); }
|
||||||
| USER
|
| USER
|
||||||
{ $$ = make_str("user"); }
|
{ $$ = make_str("user"); }
|
||||||
| CAST '(' a_expr AS Typename ')'
|
| CAST '(' a_expr AS Typename ')'
|
||||||
{ $$ = cat_str(5, make_str("cast("), $3, make_str("as"), $5, make_str(")")); }
|
{ $$ = cat_str(5, make_str("cast("), $3, make_str("as"), $5, make_str(")")); }
|
||||||
@ -4073,7 +4073,7 @@ type_list: type_list ',' Typename
|
|||||||
array_expr_list: array_expr { $$ = $1; }
|
array_expr_list: array_expr { $$ = $1; }
|
||||||
| array_expr_list ',' array_expr { $$ = cat_str(3, $1, make_str(","), $3); }
|
| array_expr_list ',' array_expr { $$ = cat_str(3, $1, make_str(","), $3); }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
array_expr: '[' expr_list ']' { $$ = cat_str(3, make_str("["), $2, make_str("]")); }
|
array_expr: '[' expr_list ']' { $$ = cat_str(3, make_str("["), $2, make_str("]")); }
|
||||||
| '[' array_expr_list ']' { $$ = cat_str(3, make_str("["), $2, make_str("]")); }
|
| '[' array_expr_list ']' { $$ = cat_str(3, make_str("["), $2, make_str("]")); }
|
||||||
@ -4190,7 +4190,7 @@ indirection: indirection_el { $$ = $1; }
|
|||||||
|
|
||||||
opt_indirection:
|
opt_indirection:
|
||||||
/*EMPTY*/ { $$ = EMPTY; }
|
/*EMPTY*/ { $$ = EMPTY; }
|
||||||
| opt_indirection indirection_el { $$ = cat2_str($1, $2);}
|
| opt_indirection indirection_el { $$ = cat2_str($1, $2);}
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_asymmetric: ASYMMETRIC { $$ = make_str("asymmetric"); }
|
opt_asymmetric: ASYMMETRIC { $$ = make_str("asymmetric"); }
|
||||||
@ -4227,7 +4227,7 @@ update_target_list: update_target_list ',' update_target_el
|
|||||||
struct inf_compat_val *ptrv;
|
struct inf_compat_val *ptrv;
|
||||||
char *cols = make_str( "(" );
|
char *cols = make_str( "(" );
|
||||||
char *vals = make_str( "(" );
|
char *vals = make_str( "(" );
|
||||||
|
|
||||||
for (ptrc = informix_col, ptrv = informix_val; ptrc != NULL && ptrv != NULL; ptrc = ptrc->next, ptrv = ptrv->next)
|
for (ptrc = informix_col, ptrv = informix_val; ptrc != NULL && ptrv != NULL; ptrc = ptrc->next, ptrv = ptrv->next)
|
||||||
{
|
{
|
||||||
if ( ptrc->next != NULL )
|
if ( ptrc->next != NULL )
|
||||||
@ -4252,7 +4252,7 @@ update_target_list: update_target_list ',' update_target_el
|
|||||||
inf_col_list: ColId opt_indirection
|
inf_col_list: ColId opt_indirection
|
||||||
{
|
{
|
||||||
struct inf_compat_col *ptr = mm_alloc(sizeof(struct inf_compat_col));
|
struct inf_compat_col *ptr = mm_alloc(sizeof(struct inf_compat_col));
|
||||||
|
|
||||||
ptr->name = $1;
|
ptr->name = $1;
|
||||||
ptr->indirection = $2;
|
ptr->indirection = $2;
|
||||||
ptr->next = NULL;
|
ptr->next = NULL;
|
||||||
@ -4261,18 +4261,18 @@ inf_col_list: ColId opt_indirection
|
|||||||
| ColId opt_indirection ',' inf_col_list
|
| ColId opt_indirection ',' inf_col_list
|
||||||
{
|
{
|
||||||
struct inf_compat_col *ptr = mm_alloc(sizeof(struct inf_compat_col));
|
struct inf_compat_col *ptr = mm_alloc(sizeof(struct inf_compat_col));
|
||||||
|
|
||||||
ptr->name = $1;
|
ptr->name = $1;
|
||||||
ptr->indirection = $2;
|
ptr->indirection = $2;
|
||||||
ptr->next = informix_col;
|
ptr->next = informix_col;
|
||||||
informix_col = ptr;
|
informix_col = ptr;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
inf_val_list: a_expr
|
inf_val_list: a_expr
|
||||||
{
|
{
|
||||||
struct inf_compat_val *ptr = mm_alloc(sizeof(struct inf_compat_val));
|
struct inf_compat_val *ptr = mm_alloc(sizeof(struct inf_compat_val));
|
||||||
|
|
||||||
ptr->val = $1;
|
ptr->val = $1;
|
||||||
ptr->next = NULL;
|
ptr->next = NULL;
|
||||||
informix_val = ptr;
|
informix_val = ptr;
|
||||||
@ -4280,7 +4280,7 @@ inf_val_list: a_expr
|
|||||||
| a_expr ',' inf_val_list
|
| a_expr ',' inf_val_list
|
||||||
{
|
{
|
||||||
struct inf_compat_val *ptr = mm_alloc(sizeof(struct inf_compat_val));
|
struct inf_compat_val *ptr = mm_alloc(sizeof(struct inf_compat_val));
|
||||||
|
|
||||||
ptr->val = $1;
|
ptr->val = $1;
|
||||||
ptr->next = informix_val;
|
ptr->next = informix_val;
|
||||||
informix_val = ptr;
|
informix_val = ptr;
|
||||||
@ -4375,11 +4375,12 @@ Bconst: BCONST { $$ = make_name();};
|
|||||||
Xconst: XCONST { $$ = make_name();};
|
Xconst: XCONST { $$ = make_name();};
|
||||||
Sconst: SCONST
|
Sconst: SCONST
|
||||||
{
|
{
|
||||||
|
/* could have been input as '' or $$ */
|
||||||
$$ = (char *)mm_alloc(strlen($1) + 3);
|
$$ = (char *)mm_alloc(strlen($1) + 3);
|
||||||
$$[0]='\'';
|
$$[0]='\'';
|
||||||
strcpy($$+1, $1);
|
strcpy($$+1, $1);
|
||||||
$$[strlen($1)+2]='\0';
|
|
||||||
$$[strlen($1)+1]='\'';
|
$$[strlen($1)+1]='\'';
|
||||||
|
$$[strlen($1)+2]='\0';
|
||||||
free($1);
|
free($1);
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
@ -4392,7 +4393,7 @@ IntConst: PosIntConst { $$ = $1; }
|
|||||||
| '-' PosIntConst { $$ = cat2_str(make_str("-"), $2); }
|
| '-' PosIntConst { $$ = cat2_str(make_str("-"), $2); }
|
||||||
;
|
;
|
||||||
|
|
||||||
IntConstVar: Iconst
|
IntConstVar: Iconst
|
||||||
{
|
{
|
||||||
char *length = mm_alloc(32);
|
char *length = mm_alloc(32);
|
||||||
|
|
||||||
@ -4406,7 +4407,7 @@ IntConstVar: Iconst
|
|||||||
AllConstVar: Fconst
|
AllConstVar: Fconst
|
||||||
{
|
{
|
||||||
char *length = mm_alloc(32);
|
char *length = mm_alloc(32);
|
||||||
|
|
||||||
sprintf(length, "%d", (int) strlen($1));
|
sprintf(length, "%d", (int) strlen($1));
|
||||||
new_variable($1, ECPGmake_simple_type(ECPGt_const, length), 0);
|
new_variable($1, ECPGmake_simple_type(ECPGt_const, length), 0);
|
||||||
$$ = $1;
|
$$ = $1;
|
||||||
@ -4416,7 +4417,7 @@ AllConstVar: Fconst
|
|||||||
{
|
{
|
||||||
char *length = mm_alloc(32);
|
char *length = mm_alloc(32);
|
||||||
char *var = cat2_str(make_str("-"), $2);
|
char *var = cat2_str(make_str("-"), $2);
|
||||||
|
|
||||||
sprintf(length, "%d", (int) strlen(var));
|
sprintf(length, "%d", (int) strlen(var));
|
||||||
new_variable(var, ECPGmake_simple_type(ECPGt_const, length), 0);
|
new_variable(var, ECPGmake_simple_type(ECPGt_const, length), 0);
|
||||||
$$ = var;
|
$$ = var;
|
||||||
@ -4425,16 +4426,16 @@ AllConstVar: Fconst
|
|||||||
{
|
{
|
||||||
char *length = mm_alloc(32);
|
char *length = mm_alloc(32);
|
||||||
char *var = cat2_str(make_str("-"), $2);
|
char *var = cat2_str(make_str("-"), $2);
|
||||||
|
|
||||||
sprintf(length, "%d", (int) strlen(var));
|
sprintf(length, "%d", (int) strlen(var));
|
||||||
new_variable(var, ECPGmake_simple_type(ECPGt_const, length), 0);
|
new_variable(var, ECPGmake_simple_type(ECPGt_const, length), 0);
|
||||||
$$ = var;
|
$$ = var;
|
||||||
}
|
}
|
||||||
| Sconst
|
| Sconst
|
||||||
{
|
{
|
||||||
char *length = mm_alloc(32);
|
char *length = mm_alloc(32);
|
||||||
char *var = $1 + 1;
|
char *var = $1 + 1;
|
||||||
|
|
||||||
var[strlen(var) - 1] = '\0';
|
var[strlen(var) - 1] = '\0';
|
||||||
sprintf(length, "%d", (int) strlen(var));
|
sprintf(length, "%d", (int) strlen(var));
|
||||||
new_variable(var, ECPGmake_simple_type(ECPGt_const, length), 0);
|
new_variable(var, ECPGmake_simple_type(ECPGt_const, length), 0);
|
||||||
@ -4447,14 +4448,14 @@ StringConst: Sconst { $$ = $1; }
|
|||||||
;
|
;
|
||||||
|
|
||||||
PosIntStringConst: Iconst { $$ = $1; }
|
PosIntStringConst: Iconst { $$ = $1; }
|
||||||
| Sconst { $$ = $1; }
|
| Sconst { $$ = $1; }
|
||||||
| civar { $$ = $1; }
|
| civar { $$ = $1; }
|
||||||
;
|
;
|
||||||
|
|
||||||
NumConst: Fconst { $$ = $1; }
|
NumConst: Fconst { $$ = $1; }
|
||||||
| Iconst { $$ = $1; }
|
| Iconst { $$ = $1; }
|
||||||
| '-' Fconst { $$ = cat2_str(make_str("-"), $2); }
|
| '-' Fconst { $$ = cat2_str(make_str("-"), $2); }
|
||||||
| '-' Iconst { $$ = cat2_str(make_str("-"), $2); }
|
| '-' Iconst { $$ = cat2_str(make_str("-"), $2); }
|
||||||
| civar { $$ = $1; }
|
| civar { $$ = $1; }
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -4720,7 +4721,7 @@ ECPGDeallocate: DEALLOCATE PREPARE prepared_name
|
|||||||
{ $$ = $2; }
|
{ $$ = $2; }
|
||||||
;
|
;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* variable decalartion outside exec sql declare block
|
* variable decalartion outside exec sql declare block
|
||||||
*/
|
*/
|
||||||
ECPGVarDeclaration: single_vt_declaration;
|
ECPGVarDeclaration: single_vt_declaration;
|
||||||
@ -4728,8 +4729,8 @@ ECPGVarDeclaration: single_vt_declaration;
|
|||||||
single_vt_declaration: type_declaration { $$ = $1; }
|
single_vt_declaration: type_declaration { $$ = $1; }
|
||||||
| single_var_declaration { $$ = $1; }
|
| single_var_declaration { $$ = $1; }
|
||||||
;
|
;
|
||||||
|
|
||||||
single_var_declaration: storage_declaration
|
single_var_declaration: storage_declaration
|
||||||
var_type
|
var_type
|
||||||
{
|
{
|
||||||
actual_type[struct_level].type_enum = $2.type_enum;
|
actual_type[struct_level].type_enum = $2.type_enum;
|
||||||
@ -4884,7 +4885,7 @@ var_declaration: storage_declaration
|
|||||||
actual_type[struct_level].type_dimension = $1.type_dimension;
|
actual_type[struct_level].type_dimension = $1.type_dimension;
|
||||||
actual_type[struct_level].type_index = $1.type_index;
|
actual_type[struct_level].type_index = $1.type_index;
|
||||||
actual_type[struct_level].type_sizeof = $1.type_sizeof;
|
actual_type[struct_level].type_sizeof = $1.type_sizeof;
|
||||||
|
|
||||||
actual_startline[struct_level] = hashline_number();
|
actual_startline[struct_level] = hashline_number();
|
||||||
}
|
}
|
||||||
variable_list ';'
|
variable_list ';'
|
||||||
@ -4964,7 +4965,7 @@ var_type: simple_type
|
|||||||
$$.type_enum = ECPGt_numeric;
|
$$.type_enum = ECPGt_numeric;
|
||||||
$$.type_str = make_str("numeric");
|
$$.type_str = make_str("numeric");
|
||||||
}
|
}
|
||||||
|
|
||||||
$$.type_dimension = make_str("-1");
|
$$.type_dimension = make_str("-1");
|
||||||
$$.type_index = make_str("-1");
|
$$.type_index = make_str("-1");
|
||||||
$$.type_sizeof = NULL;
|
$$.type_sizeof = NULL;
|
||||||
@ -4973,7 +4974,7 @@ var_type: simple_type
|
|||||||
{
|
{
|
||||||
if (strlen($2) != 0 && strcmp ($1, "datetime") != 0 && strcmp ($1, "interval") != 0)
|
if (strlen($2) != 0 && strcmp ($1, "datetime") != 0 && strcmp ($1, "interval") != 0)
|
||||||
mmerror (PARSE_ERROR, ET_ERROR, "Interval specification not allowed here ");
|
mmerror (PARSE_ERROR, ET_ERROR, "Interval specification not allowed here ");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check for type names that the SQL grammar treats as
|
* Check for type names that the SQL grammar treats as
|
||||||
* unreserved keywords
|
* unreserved keywords
|
||||||
@ -5075,7 +5076,7 @@ var_type: simple_type
|
|||||||
if (!forward)
|
if (!forward)
|
||||||
{
|
{
|
||||||
/* No */
|
/* No */
|
||||||
|
|
||||||
this = get_typedef(name);
|
this = get_typedef(name);
|
||||||
$$.type_str = mm_strdup(this->name);
|
$$.type_str = mm_strdup(this->name);
|
||||||
$$.type_enum = this->type->type_enum;
|
$$.type_enum = this->type->type_enum;
|
||||||
@ -5114,12 +5115,12 @@ struct_union_type_with_symbol: s_struct_union_symbol
|
|||||||
if (struct_level >= STRUCT_DEPTH)
|
if (struct_level >= STRUCT_DEPTH)
|
||||||
mmerror(PARSE_ERROR, ET_ERROR, "Too many levels in nested structure/union definition");
|
mmerror(PARSE_ERROR, ET_ERROR, "Too many levels in nested structure/union definition");
|
||||||
forward_name = mm_strdup($1.symbol);
|
forward_name = mm_strdup($1.symbol);
|
||||||
}
|
}
|
||||||
'{' variable_declarations '}'
|
'{' variable_declarations '}'
|
||||||
{
|
{
|
||||||
struct typedefs *ptr, *this;
|
struct typedefs *ptr, *this;
|
||||||
struct this_type su_type;
|
struct this_type su_type;
|
||||||
|
|
||||||
ECPGfree_struct_member(struct_member_list[struct_level]);
|
ECPGfree_struct_member(struct_member_list[struct_level]);
|
||||||
struct_member_list[struct_level] = NULL;
|
struct_member_list[struct_level] = NULL;
|
||||||
struct_level--;
|
struct_level--;
|
||||||
@ -5130,7 +5131,7 @@ struct_union_type_with_symbol: s_struct_union_symbol
|
|||||||
su_type.type_str = cat2_str($1.su, $1.symbol);
|
su_type.type_str = cat2_str($1.su, $1.symbol);
|
||||||
free(forward_name);
|
free(forward_name);
|
||||||
forward_name = NULL;
|
forward_name = NULL;
|
||||||
|
|
||||||
/* This is essantially a typedef but needs the keyword struct/union as well.
|
/* This is essantially a typedef but needs the keyword struct/union as well.
|
||||||
* So we create the typedef for each struct definition with symbol */
|
* So we create the typedef for each struct definition with symbol */
|
||||||
for (ptr = types; ptr != NULL; ptr = ptr->next)
|
for (ptr = types; ptr != NULL; ptr = ptr->next)
|
||||||
@ -5179,7 +5180,7 @@ s_struct_union_symbol: SQL_STRUCT symbol
|
|||||||
{
|
{
|
||||||
$$.su = make_str("struct");
|
$$.su = make_str("struct");
|
||||||
$$.symbol = $2;
|
$$.symbol = $2;
|
||||||
ECPGstruct_sizeof = cat_str(3, make_str("sizeof("), cat2_str(mm_strdup($$.su), mm_strdup($$.symbol)), make_str(")"));
|
ECPGstruct_sizeof = cat_str(3, make_str("sizeof("), cat2_str(mm_strdup($$.su), mm_strdup($$.symbol)), make_str(")"));
|
||||||
}
|
}
|
||||||
| UNION symbol
|
| UNION symbol
|
||||||
{
|
{
|
||||||
@ -5188,7 +5189,7 @@ s_struct_union_symbol: SQL_STRUCT symbol
|
|||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
s_struct_union: SQL_STRUCT
|
s_struct_union: SQL_STRUCT
|
||||||
{
|
{
|
||||||
ECPGstruct_sizeof = make_str(""); /* This must not be NULL to distinguish from simple types. */
|
ECPGstruct_sizeof = make_str(""); /* This must not be NULL to distinguish from simple types. */
|
||||||
$$ = make_str("struct");
|
$$ = make_str("struct");
|
||||||
@ -5290,7 +5291,7 @@ variable: opt_pointer ECPGColLabel opt_array_bounds opt_initializer
|
|||||||
|
|
||||||
if (strcmp(dimension, "0") == 0 || abs(atoi(dimension)) == 1)
|
if (strcmp(dimension, "0") == 0 || abs(atoi(dimension)) == 1)
|
||||||
*dim = '\0';
|
*dim = '\0';
|
||||||
else
|
else
|
||||||
sprintf(dim, "[%s]", dimension);
|
sprintf(dim, "[%s]", dimension);
|
||||||
/* cannot check for atoi <= 0 because a defined constant will yield 0 here as well */
|
/* cannot check for atoi <= 0 because a defined constant will yield 0 here as well */
|
||||||
if (atoi(length) < 0 || strcmp(length, "0") == 0)
|
if (atoi(length) < 0 || strcmp(length, "0") == 0)
|
||||||
@ -5453,13 +5454,13 @@ into_descriptor: INTO opt_sql SQL_DESCRIPTOR quoted_ident_stringvar
|
|||||||
$$ = EMPTY;
|
$$ = EMPTY;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_sql: /*EMPTY*/ | SQL_SQL;
|
opt_sql: /*EMPTY*/ | SQL_SQL;
|
||||||
|
|
||||||
ecpg_into: INTO into_list { $$ = EMPTY; }
|
ecpg_into: INTO into_list { $$ = EMPTY; }
|
||||||
| into_descriptor { $$ = $1; }
|
| into_descriptor { $$ = $1; }
|
||||||
;
|
;
|
||||||
|
|
||||||
using_list: UsingConst | UsingConst ',' using_list;
|
using_list: UsingConst | UsingConst ',' using_list;
|
||||||
|
|
||||||
UsingConst: AllConst
|
UsingConst: AllConst
|
||||||
@ -5485,10 +5486,10 @@ ECPGPrepare: PREPARE prepared_name FROM execstring
|
|||||||
{ $$ = cat_str(3, $2, make_str(","), $4); }
|
{ $$ = cat_str(3, $2, make_str(","), $4); }
|
||||||
;
|
;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We accept descibe but do nothing with it so far.
|
* We accept descibe but do nothing with it so far.
|
||||||
*/
|
*/
|
||||||
ECPGDescribe: SQL_DESCRIBE INPUT_P name using_descriptor
|
ECPGDescribe: SQL_DESCRIBE INPUT_P name using_descriptor
|
||||||
{
|
{
|
||||||
mmerror(PARSE_ERROR, ET_WARNING, "using unsupported describe statement.\n");
|
mmerror(PARSE_ERROR, ET_WARNING, "using unsupported describe statement.\n");
|
||||||
$$ = (char *) mm_alloc(sizeof("1, ECPGprepared_statement(\"\")") + strlen($3));
|
$$ = (char *) mm_alloc(sizeof("1, ECPGprepared_statement(\"\")") + strlen($3));
|
||||||
@ -5511,7 +5512,7 @@ ECPGDescribe: SQL_DESCRIBE INPUT_P name using_descriptor
|
|||||||
opt_output: SQL_OUTPUT { $$ = make_str("output"); }
|
opt_output: SQL_OUTPUT { $$ = make_str("output"); }
|
||||||
| /* EMPTY */ { $$ = EMPTY; }
|
| /* EMPTY */ { $$ = EMPTY; }
|
||||||
;
|
;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* dynamic SQL: descriptor based access
|
* dynamic SQL: descriptor based access
|
||||||
* originall written by Christof Petig <christof.petig@wtal.de>
|
* originall written by Christof Petig <christof.petig@wtal.de>
|
||||||
@ -5528,7 +5529,7 @@ ECPGAllocateDescr: SQL_ALLOCATE SQL_DESCRIPTOR quoted_ident_stringvar
|
|||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* deallocate a descriptor
|
* deallocate a descriptor
|
||||||
*/
|
*/
|
||||||
@ -5871,7 +5872,7 @@ action : SQL_CONTINUE
|
|||||||
$<action>$.command = cat_str(4, $2, make_str("("), $4, make_str(")"));
|
$<action>$.command = cat_str(4, $2, make_str("("), $4, make_str(")"));
|
||||||
$<action>$.str = cat2_str(make_str("call"), mm_strdup($<action>$.command));
|
$<action>$.str = cat2_str(make_str("call"), mm_strdup($<action>$.command));
|
||||||
}
|
}
|
||||||
| SQL_CALL name
|
| SQL_CALL name
|
||||||
{
|
{
|
||||||
$<action>$.code = W_DO;
|
$<action>$.code = W_DO;
|
||||||
$<action>$.command = cat_str(3, $2, make_str("("), make_str(")"));
|
$<action>$.command = cat_str(3, $2, make_str("("), make_str(")"));
|
||||||
@ -5914,7 +5915,7 @@ ECPGKeywords_vanames: SQL_BREAK { $$ = make_str("break"); }
|
|||||||
| SQL_STOP { $$ = make_str("stop"); }
|
| SQL_STOP { $$ = make_str("stop"); }
|
||||||
| SQL_VALUE { $$ = make_str("value"); }
|
| SQL_VALUE { $$ = make_str("value"); }
|
||||||
;
|
;
|
||||||
|
|
||||||
ECPGKeywords_rest: SQL_CONNECT { $$ = make_str("connect"); }
|
ECPGKeywords_rest: SQL_CONNECT { $$ = make_str("connect"); }
|
||||||
| SQL_DESCRIBE { $$ = make_str("describe"); }
|
| SQL_DESCRIBE { $$ = make_str("describe"); }
|
||||||
| SQL_DISCONNECT { $$ = make_str("disconnect"); }
|
| SQL_DISCONNECT { $$ = make_str("disconnect"); }
|
||||||
@ -6002,7 +6003,7 @@ ECPGColLabelCommon: ident { $$ = $1; }
|
|||||||
| func_name_keyword { $$ = $1; }
|
| func_name_keyword { $$ = $1; }
|
||||||
| ECPGKeywords_vanames { $$ = $1; }
|
| ECPGKeywords_vanames { $$ = $1; }
|
||||||
;
|
;
|
||||||
|
|
||||||
ECPGColLabel: ECPGColLabelCommon { $$ = $1; }
|
ECPGColLabel: ECPGColLabelCommon { $$ = $1; }
|
||||||
| reserved_keyword { $$ = $1; }
|
| reserved_keyword { $$ = $1; }
|
||||||
| ECPGunreserved { $$ = $1; }
|
| ECPGunreserved { $$ = $1; }
|
||||||
@ -6017,7 +6018,7 @@ ECPGCKeywords: S_AUTO { $$ = make_str("auto"); }
|
|||||||
| S_TYPEDEF { $$ = make_str("typedef"); }
|
| S_TYPEDEF { $$ = make_str("typedef"); }
|
||||||
| S_VOLATILE { $$ = make_str("volatile"); }
|
| S_VOLATILE { $$ = make_str("volatile"); }
|
||||||
;
|
;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Keyword classification lists. Generally, every keyword present in
|
* Keyword classification lists. Generally, every keyword present in
|
||||||
* the Postgres grammar should appear in exactly one of these lists.
|
* the Postgres grammar should appear in exactly one of these lists.
|
||||||
@ -6042,14 +6043,14 @@ ECPGunreserved_interval: DAY_P { $$ = make_str("day"); }
|
|||||||
| SECOND_P { $$ = make_str("second"); }
|
| SECOND_P { $$ = make_str("second"); }
|
||||||
| YEAR_P { $$ = make_str("year"); }
|
| YEAR_P { $$ = make_str("year"); }
|
||||||
;
|
;
|
||||||
|
|
||||||
/* The following symbol must be excluded from var_name but still included in ColId
|
/* The following symbol must be excluded from var_name but still included in ColId
|
||||||
to enable ecpg special postgresql variables with this name: CONNECTION
|
to enable ecpg special postgresql variables with this name: CONNECTION
|
||||||
*/
|
*/
|
||||||
ECPGunreserved: ECPGunreserved_con { $$ = $1; }
|
ECPGunreserved: ECPGunreserved_con { $$ = $1; }
|
||||||
| CONNECTION { $$ = make_str("connection"); }
|
| CONNECTION { $$ = make_str("connection"); }
|
||||||
;
|
;
|
||||||
|
|
||||||
ECPGunreserved_con: ABORT_P { $$ = make_str("abort"); }
|
ECPGunreserved_con: ABORT_P { $$ = make_str("abort"); }
|
||||||
| ABSOLUTE_P { $$ = make_str("absolute"); }
|
| ABSOLUTE_P { $$ = make_str("absolute"); }
|
||||||
| ACCESS { $$ = make_str("access"); }
|
| ACCESS { $$ = make_str("access"); }
|
||||||
@ -6460,12 +6461,12 @@ indicator: cvariable { check_indicator((find_variable($1))->type); $$ = $1; }
|
|||||||
| SQL_INDICATOR name { check_indicator((find_variable($2))->type); $$ = $2; }
|
| SQL_INDICATOR name { check_indicator((find_variable($2))->type); $$ = $2; }
|
||||||
;
|
;
|
||||||
|
|
||||||
cvariable: CVARIABLE
|
cvariable: CVARIABLE
|
||||||
{
|
{
|
||||||
/* As long as multidimensional arrays are not implemented we have to check for those here */
|
/* As long as multidimensional arrays are not implemented we have to check for those here */
|
||||||
char *ptr = $1;
|
char *ptr = $1;
|
||||||
int brace_open=0, brace = false;
|
int brace_open=0, brace = false;
|
||||||
|
|
||||||
for (; *ptr; ptr++)
|
for (; *ptr; ptr++)
|
||||||
{
|
{
|
||||||
switch (*ptr)
|
switch (*ptr)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user