Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
965a0a40
Commit
965a0a40
authored
Oct 12, 2000
by
Michael Meskes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Replace constants by C variables wherever possible.
parent
5bcc226d
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
115 additions
and
130 deletions
+115
-130
src/interfaces/ecpg/ChangeLog
src/interfaces/ecpg/ChangeLog
+5
-0
src/interfaces/ecpg/preproc/preproc.y
src/interfaces/ecpg/preproc/preproc.y
+105
-128
src/interfaces/ecpg/test/test3.pgc
src/interfaces/ecpg/test/test3.pgc
+5
-2
No files found.
src/interfaces/ecpg/ChangeLog
View file @
965a0a40
...
@@ -960,5 +960,10 @@ Wed Oct 4 14:36:51 CEST 2000
...
@@ -960,5 +960,10 @@ Wed Oct 4 14:36:51 CEST 2000
Wed Oct 11 16:49:36 CEST 2000
Wed Oct 11 16:49:36 CEST 2000
- Synced preproc.y with gram.y.
- Synced preproc.y with gram.y.
Thu Oct 12 20:13:00 CEST 2000
- Changed parser to accept a variable instead of a constant wherever
possible.
- Set ecpg version to 2.8.0.
- Set ecpg version to 2.8.0.
- Set library version to 3.2.0.
- Set library version to 3.2.0.
src/interfaces/ecpg/preproc/preproc.y
View file @
965a0a40
...
@@ -284,7 +284,7 @@ make_name(void)
...
@@ -284,7 +284,7 @@ make_name(void)
%type <str> CreateAsElement OptCreateAs CreateAsList CreateAsStmt
%type <str> CreateAsElement OptCreateAs CreateAsList CreateAsStmt
%type <str> OptUnder key_reference comment_text ConstraintDeferrabilitySpec
%type <str> OptUnder key_reference comment_text ConstraintDeferrabilitySpec
%type <str> key_match ColLabel SpecialRuleRelation ColId columnDef
%type <str> key_match ColLabel SpecialRuleRelation ColId columnDef
%type <str> ColConstraint ColConstraintElem
NumericOnly FloatOnly
%type <str> ColConstraint ColConstraintElem
%type <str> OptTableElementList OptTableElement TableConstraint
%type <str> OptTableElementList OptTableElement TableConstraint
%type <str> ConstraintElem key_actions ColQualList TokenId DropSchemaStmt
%type <str> ConstraintElem key_actions ColQualList TokenId DropSchemaStmt
%type <str> target_list target_el update_target_list alias_clause
%type <str> target_list target_el update_target_list alias_clause
...
@@ -329,41 +329,41 @@ make_name(void)
...
@@ -329,41 +329,41 @@ make_name(void)
%type <str> OptSeqElem TriggerForSpec TriggerForOpt TriggerForType
%type <str> OptSeqElem TriggerForSpec TriggerForOpt TriggerForType
%type <str> DropTrigStmt TriggerOneEvent TriggerEvents RuleActionStmt
%type <str> DropTrigStmt TriggerOneEvent TriggerEvents RuleActionStmt
%type <str> TriggerActionTime CreateTrigStmt DropPLangStmt PLangTrusted
%type <str> TriggerActionTime CreateTrigStmt DropPLangStmt PLangTrusted
%type <str> CreatePLangStmt
IntegerOnly
TriggerFuncArgs TriggerFuncArg
%type <str> CreatePLangStmt TriggerFuncArgs TriggerFuncArg
%type <str> ViewStmt LoadStmt CreatedbStmt createdb_opt_encoding
%type <str> ViewStmt LoadStmt CreatedbStmt createdb_opt_encoding
%type <str> createdb_opt_location opt_encoding OptInherit Geometric
%type <str> createdb_opt_location opt_encoding OptInherit Geometric
%type <str> DropdbStmt ClusterStmt grantee RevokeStmt Bit bit
%type <str> DropdbStmt ClusterStmt grantee RevokeStmt Bit bit
%type <str> GrantStmt privileges operation_commalist operation
%type <str> GrantStmt privileges operation_commalist operation
PosAllConst
%type <str> opt_cursor opt_lmode ConstraintsSetStmt comment_tg
%type <str> opt_cursor opt_lmode ConstraintsSetStmt comment_tg
AllConst
%type <str> case_expr when_clause_list case_default case_arg when_clause
%type <str> case_expr when_clause_list case_default case_arg when_clause
%type <str> select_clause opt_select_limit select_limit_value ConstraintTimeSpec
%type <str> select_clause opt_select_limit select_limit_value ConstraintTimeSpec
%type <str> select_offset_value ReindexStmt join_type opt_only opt_boolean
%type <str> select_offset_value ReindexStmt join_type opt_only opt_boolean
%type <str> join_qual update_list AlterSchemaStmt joined_table
%type <str> join_qual update_list AlterSchemaStmt joined_table
%type <str> opt_level opt_lock lock_type users_in_new_group_clause
%type <str> opt_level opt_lock lock_type users_in_new_group_clause
%type <str> OptConstrFromTable comment_op OptTempTableName
%type <str> OptConstrFromTable comment_op OptTempTableName
StringConst
%type <str> constraints_set_list constraints_set_namelist comment_fn
%type <str> constraints_set_list constraints_set_namelist comment_fn
%type <str> constraints_set_mode comment_type comment_cl comment_ag
%type <str> constraints_set_mode comment_type comment_cl comment_ag
%type <str> CreateGroupStmt AlterGroupStmt DropGroupStmt key_delete
%type <str> CreateGroupStmt AlterGroupStmt DropGroupStmt key_delete
%type <str> opt_force key_update CreateSchemaStmt
%type <str> opt_force key_update CreateSchemaStmt
PosIntStringConst
%type <str> SessionList SessionClause SetSessionStmt
%type <str> SessionList SessionClause SetSessionStmt
IntConst PosIntConst
%type <str> ECPGWhenever ECPGConnect connection_target ECPGOpen
%type <str> ECPGWhenever ECPGConnect connection_target ECPGOpen
%type <str> indicator ECPGExecute ECPGPrepare ecpg_using
%type <str> indicator ECPGExecute ECPGPrepare ecpg_using
%type <str> storage_clause opt_initializer c_anything blockstart
%type <str> storage_clause opt_initializer c_anything blockstart
%type <str> blockend variable_list variable c_thing c_term
%type <str> blockend variable_list variable c_thing c_term
%type <str> opt_pointer
cvariable
ECPGDisconnect dis_name storage_modifier
%type <str> opt_pointer ECPGDisconnect dis_name storage_modifier
%type <str> stmt ECPGRelease execstring server_name
%type <str> stmt ECPGRelease execstring server_name
%type <str> connection_object opt_server opt_port c_stuff opt_reference
%type <str> connection_object opt_server opt_port c_stuff opt_reference
%type <str> user_name opt_user char_variable ora_user ident
%type <str> user_name opt_user char_variable ora_user ident
%type <str> db_prefix server opt_options opt_connection_name c_list
%type <str> db_prefix server opt_options opt_connection_name c_list
%type <str> ECPGSetConnection cpp_line ECPGTypedef c_args ECPGKeywords
%type <str> ECPGSetConnection cpp_line ECPGTypedef c_args ECPGKeywords
%type <str> enum_type civar
iableonly
ECPGCursorStmt ECPGDeallocate
%type <str> enum_type civar
civarind
ECPGCursorStmt ECPGDeallocate
%type <str> ECPGFree ECPGDeclare ECPGVar opt_at enum_definition
%type <str> ECPGFree ECPGDeclare ECPGVar opt_at enum_definition
%type <str> struct_type s_struct declaration declarations variable_declarations
%type <str> struct_type s_struct declaration declarations variable_declarations
%type <str> s_union union_type ECPGSetAutocommit on_off
%type <str> s_union union_type ECPGSetAutocommit on_off
%type <str> ECPGAllocateDescr ECPGDeallocateDescr symbol opt_symbol
%type <str> ECPGAllocateDescr ECPGDeallocateDescr symbol opt_symbol
%type <str> ECPGGetDescriptorHeader ECPGColLabel ECPGTypeName
%type <str> ECPGGetDescriptorHeader ECPGColLabel ECPGTypeName
%type <str> ECPGLabelTypeName ECPGColId
%type <str> ECPGLabelTypeName ECPGColId
variablelist cvariable
%type <descriptor> ECPGFetchDescStmt ECPGGetDescriptor
%type <descriptor> ECPGFetchDescStmt ECPGGetDescriptor
...
@@ -620,7 +620,7 @@ AlterUserStmt: ALTER USER UserId user_createdb_clause
...
@@ -620,7 +620,7 @@ AlterUserStmt: ALTER USER UserId user_createdb_clause
{
{
$$ = cat_str(5, make_str("alter user"), $3, $4, $5, $6);
$$ = cat_str(5, make_str("alter user"), $3, $4, $5, $6);
}
}
| ALTER USER UserId WITH PASSWORD S
c
onst
| ALTER USER UserId WITH PASSWORD S
tringC
onst
user_createdb_clause
user_createdb_clause
user_createuser_clause user_valid_clause
user_createuser_clause user_valid_clause
{
{
...
@@ -641,11 +641,11 @@ DropUserStmt: DROP USER user_list
...
@@ -641,11 +641,11 @@ DropUserStmt: DROP USER user_list
}
}
;
;
user_passwd_clause: PASSWORD S
c
onst { $$ = cat2_str(make_str("password") , $2); }
user_passwd_clause: PASSWORD S
tringC
onst { $$ = cat2_str(make_str("password") , $2); }
| /*EMPTY*/ { $$ = EMPTY; }
| /*EMPTY*/ { $$ = EMPTY; }
;
;
sysid_clause: SYSID
Iconst
{ if (atoi($2) <= 0)
sysid_clause: SYSID
PosIntConst
{ if (atoi($2) <= 0)
mmerror(ET_ERROR, "sysid must be positive");
mmerror(ET_ERROR, "sysid must be positive");
$$ = cat2_str(make_str("sysid"), $2); }
$$ = cat2_str(make_str("sysid"), $2); }
...
@@ -691,7 +691,7 @@ user_group_clause: IN GROUP user_list
...
@@ -691,7 +691,7 @@ user_group_clause: IN GROUP user_list
| /*EMPTY*/ { $$ = EMPTY; }
| /*EMPTY*/ { $$ = EMPTY; }
;
;
user_valid_clause: VALID UNTIL S
c
onst { $$ = cat2_str(make_str("valid until"), $3); }
user_valid_clause: VALID UNTIL S
tringC
onst { $$ = cat2_str(make_str("valid until"), $3); }
| /*EMPTY*/ { $$ = EMPTY; }
| /*EMPTY*/ { $$ = EMPTY; }
;
;
...
@@ -848,11 +848,7 @@ opt_level: READ COMMITTED { $$ = make_str("read committed"); }
...
@@ -848,11 +848,7 @@ opt_level: READ COMMITTED { $$ = make_str("read committed"); }
var_value: opt_boolean { $$ = $1; }
var_value: opt_boolean { $$ = $1; }
| Sconst { $$ = $1; }
| AllConst { $$ = $1; }
| Iconst { $$ = $1; }
| '-' Iconst { $$ = cat2_str(make_str("-"), $2); }
| Fconst { $$ = $1; }
| '-' Fconst { $$ = cat2_str(make_str("-"), $2); }
| name_list {
| name_list {
if (strlen($1) == 0)
if (strlen($1) == 0)
mmerror(ET_ERROR, "SET must have at least one argument.");
mmerror(ET_ERROR, "SET must have at least one argument.");
...
@@ -868,12 +864,12 @@ opt_boolean: TRUE_P { $$ = make_str("true"); }
...
@@ -868,12 +864,12 @@ opt_boolean: TRUE_P { $$ = make_str("true"); }
| OFF { $$ = make_str("off"); }
| OFF { $$ = make_str("off"); }
;
;
zone_value: S
c
onst { $$ = $1; }
zone_value: S
tringC
onst { $$ = $1; }
| DEFAULT { $$ = make_str("default"); }
| DEFAULT { $$ = make_str("default"); }
| LOCAL { $$ = make_str("local"); }
| LOCAL { $$ = make_str("local"); }
;
;
opt_encoding: S
c
onst { $$ = $1; }
opt_encoding: S
tringC
onst { $$ = $1; }
| DEFAULT { $$ = make_str("default"); }
| DEFAULT { $$ = make_str("default"); }
| /*EMPTY*/ { $$ = EMPTY; }
| /*EMPTY*/ { $$ = EMPTY; }
;
;
...
@@ -1037,7 +1033,7 @@ copy_dirn: TO
...
@@ -1037,7 +1033,7 @@ copy_dirn: TO
* used depends on the direction. (It really doesn't make sense to copy from
* used depends on the direction. (It really doesn't make sense to copy from
* stdout. We silently correct the "typo". - AY 9/94
* stdout. We silently correct the "typo". - AY 9/94
*/
*/
copy_file_name: S
c
onst { $$ = $1; }
copy_file_name: S
tringC
onst { $$ = $1; }
| STDIN { $$ = make_str("stdin"); }
| STDIN { $$ = make_str("stdin"); }
| STDOUT { $$ = make_str("stdout"); }
| STDOUT { $$ = make_str("stdout"); }
;
;
...
@@ -1053,7 +1049,7 @@ opt_with_copy: WITH OIDS { $$ = make_str("with oids"); }
...
@@ -1053,7 +1049,7 @@ opt_with_copy: WITH OIDS { $$ = make_str("with oids"); }
/*
/*
* the default copy delimiter is tab but the user can configure it
* the default copy delimiter is tab but the user can configure it
*/
*/
copy_delimiter: opt_using DELIMITERS S
c
onst { $$ = cat_str(3, $1, make_str("delimiters"), $3); }
copy_delimiter: opt_using DELIMITERS S
tringC
onst { $$ = cat_str(3, $1, make_str("delimiters"), $3); }
| /*EMPTY*/ { $$ = EMPTY; }
| /*EMPTY*/ { $$ = EMPTY; }
;
;
...
@@ -1061,7 +1057,7 @@ opt_using: USING { $$ = make_str("using"); }
...
@@ -1061,7 +1057,7 @@ opt_using: USING { $$ = make_str("using"); }
| /* EMPTY */ { $$ = EMPTY; }
| /* EMPTY */ { $$ = EMPTY; }
;
;
copy_null: WITH NULL_P AS S
c
onst { $$ = cat2_str(make_str("with null as"), $4); }
copy_null: WITH NULL_P AS S
tringC
onst { $$ = cat2_str(make_str("with null as"), $4); }
| /* EMPTY */ { $$ = EMPTY; }
| /* EMPTY */ { $$ = EMPTY; }
;
;
...
@@ -1329,7 +1325,7 @@ OptSeqList: OptSeqList OptSeqElem
...
@@ -1329,7 +1325,7 @@ OptSeqList: OptSeqList OptSeqElem
| { $$ = EMPTY; }
| { $$ = EMPTY; }
;
;
OptSeqElem: CACHE Int
egerOnly
OptSeqElem: CACHE Int
Const
{
{
$$ = cat2_str(make_str("cache"), $2);
$$ = cat2_str(make_str("cache"), $2);
}
}
...
@@ -1337,48 +1333,24 @@ OptSeqElem: CACHE IntegerOnly
...
@@ -1337,48 +1333,24 @@ OptSeqElem: CACHE IntegerOnly
{
{
$$ = make_str("cycle");
$$ = make_str("cycle");
}
}
| INCREMENT Int
egerOnly
| INCREMENT Int
Const
{
{
$$ = cat2_str(make_str("increment"), $2);
$$ = cat2_str(make_str("increment"), $2);
}
}
| MAXVALUE Int
egerOnly
| MAXVALUE Int
Const
{
{
$$ = cat2_str(make_str("maxvalue"), $2);
$$ = cat2_str(make_str("maxvalue"), $2);
}
}
| MINVALUE Int
egerOnly
| MINVALUE Int
Const
{
{
$$ = cat2_str(make_str("minvalue"), $2);
$$ = cat2_str(make_str("minvalue"), $2);
}
}
| START Int
egerOnly
| START Int
Const
{
{
$$ = cat2_str(make_str("start"), $2);
$$ = cat2_str(make_str("start"), $2);
}
}
;
;
NumericOnly: FloatOnly { $$ = $1; }
| IntegerOnly { $$ = $1; }
FloatOnly: Fconst
{
$$ = $1;
}
| '-' Fconst
{
$$ = cat2_str(make_str("-"), $2);
}
;
IntegerOnly: Iconst
{
$$ = $1;
}
| '-' Iconst
{
$$ = cat2_str(make_str("-"), $2);
}
;
/*****************************************************************************
/*****************************************************************************
*
*
* QUERIES :
* QUERIES :
...
@@ -1387,8 +1359,8 @@ IntegerOnly: Iconst
...
@@ -1387,8 +1359,8 @@ IntegerOnly: Iconst
*
*
*****************************************************************************/
*****************************************************************************/
CreatePLangStmt: CREATE PLangTrusted PROCEDURAL LANGUAGE S
c
onst
CreatePLangStmt: CREATE PLangTrusted PROCEDURAL LANGUAGE S
tringC
onst
HANDLER def_name LANCOMPILER S
c
onst
HANDLER def_name LANCOMPILER S
tringC
onst
{
{
$$ = cat_str(8, make_str("create"), $2, make_str("precedural language"), $5, make_str("handler"), $7, make_str("langcompiler"), $9);
$$ = cat_str(8, make_str("create"), $2, make_str("precedural language"), $5, make_str("handler"), $7, make_str("langcompiler"), $9);
}
}
...
@@ -1397,7 +1369,7 @@ CreatePLangStmt: CREATE PLangTrusted PROCEDURAL LANGUAGE Sconst
...
@@ -1397,7 +1369,7 @@ CreatePLangStmt: CREATE PLangTrusted PROCEDURAL LANGUAGE Sconst
PLangTrusted: TRUSTED { $$ = make_str("trusted"); }
PLangTrusted: TRUSTED { $$ = make_str("trusted"); }
| { $$ = EMPTY; }
| { $$ = EMPTY; }
DropPLangStmt: DROP PROCEDURAL LANGUAGE S
c
onst
DropPLangStmt: DROP PROCEDURAL LANGUAGE S
tringC
onst
{
{
$$ = cat2_str(make_str("drop procedural language"), $4);
$$ = cat2_str(make_str("drop procedural language"), $4);
}
}
...
@@ -1472,15 +1444,10 @@ TriggerFuncArgs: TriggerFuncArg
...
@@ -1472,15 +1444,10 @@ TriggerFuncArgs: TriggerFuncArg
{ $$ = EMPTY; }
{ $$ = EMPTY; }
;
;
TriggerFuncArg: Iconst
TriggerFuncArg: PosAllConst
{
$$ = $1;
}
| Fconst
{
{
$$ = $1;
$$ = $1;
}
}
| Sconst { $$ = $1; }
| ColId { $$ = $1; }
| ColId { $$ = $1; }
;
;
...
@@ -1575,8 +1542,7 @@ def_elem: def_name '=' def_arg {
...
@@ -1575,8 +1542,7 @@ def_elem: def_name '=' def_arg {
def_arg: func_return { $$ = $1; }
def_arg: func_return { $$ = $1; }
| TokenId { $$ = $1; }
| TokenId { $$ = $1; }
| all_Op { $$ = $1; }
| all_Op { $$ = $1; }
| NumericOnly { $$ = $1; }
| AllConst { $$ = $1; }
| Sconst { $$ = $1; }
;
;
/*****************************************************************************
/*****************************************************************************
...
@@ -1671,8 +1637,7 @@ direction: FORWARD { $$ = make_str("forward"); }
...
@@ -1671,8 +1637,7 @@ direction: FORWARD { $$ = make_str("forward"); }
}
}
;
;
fetch_how_many: Iconst { $$ = $1; }
fetch_how_many: IntConst { $$ = $1; }
| '-' Iconst { $$ = cat2_str(make_str("-"), $2); }
| ALL { $$ = make_str("all"); }
| ALL { $$ = make_str("all"); }
| NEXT { $$ = make_str("next"); }
| NEXT { $$ = make_str("next"); }
| PRIOR { $$ = make_str("prior"); }
| PRIOR { $$ = make_str("prior"); }
...
@@ -1739,7 +1704,7 @@ comment_op: OPERATOR { $$ = make_str("operator"); }
...
@@ -1739,7 +1704,7 @@ comment_op: OPERATOR { $$ = make_str("operator"); }
comment_tg: TRIGGER { $$ = make_str("trigger"); }
comment_tg: TRIGGER { $$ = make_str("trigger"); }
comment_text: S
c
onst { $$ = $1; }
comment_text: S
tringC
onst { $$ = $1; }
| NULL_P { $$ = make_str("null"); }
| NULL_P { $$ = make_str("null"); }
;
;
...
@@ -1953,7 +1918,7 @@ RecipeStmt: EXECUTE RECIPE recipe_name
...
@@ -1953,7 +1918,7 @@ RecipeStmt: EXECUTE RECIPE recipe_name
*****************************************************************************/
*****************************************************************************/
ProcedureStmt: CREATE FUNCTION func_name func_args
ProcedureStmt: CREATE FUNCTION func_name func_args
RETURNS func_return AS func_as LANGUAGE S
c
onst opt_with
RETURNS func_return AS func_as LANGUAGE S
tringC
onst opt_with
{
{
$$ = cat_str(10, make_str("create function"), $3, $4, make_str("returns"), $6, make_str("as"), $8, make_str("language"), $10, $11);
$$ = cat_str(10, make_str("create function"), $3, $4, make_str("returns"), $6, make_str("as"), $8, make_str("language"), $10, $11);
}
}
...
@@ -1998,8 +1963,8 @@ opt_arg: IN { $$ = make_str("in"); }
...
@@ -1998,8 +1963,8 @@ opt_arg: IN { $$ = make_str("in"); }
}
}
;
;
func_as: S
c
onst { $$ = $1; }
func_as: S
tringC
onst { $$ = $1; }
| S
const ',' Sc
onst { $$ = cat_str(3, $1, make_str(","), $3); }
| S
tringConst ',' StringC
onst { $$ = cat_str(3, $1, make_str(","), $3); }
func_return: Typename
func_return: Typename
{
{
...
@@ -2292,19 +2257,12 @@ CreatedbStmt: CREATE DATABASE database_name WITH createdb_opt_location createdb
...
@@ -2292,19 +2257,12 @@ CreatedbStmt: CREATE DATABASE database_name WITH createdb_opt_location createdb
}
}
;
;
createdb_opt_location: LOCATION '=' S
c
onst { $$ = cat2_str(make_str("location ="), $3); }
createdb_opt_location: LOCATION '=' S
tringC
onst { $$ = cat2_str(make_str("location ="), $3); }
| LOCATION '=' DEFAULT { $$ = make_str("location = default"); }
| LOCATION '=' DEFAULT { $$ = make_str("location = default"); }
| /*EMPTY*/ { $$ = EMPTY; }
| /*EMPTY*/ { $$ = EMPTY; }
;
;
createdb_opt_encoding: ENCODING '=' Sconst
createdb_opt_encoding: ENCODING '=' PosIntStringConst
{
#ifndef MULTIBYTE
mmerror(ET_ERROR, "Multi-byte support is not enabled.");
#endif
$$ = cat2_str(make_str("encoding ="), $3);
}
| ENCODING '=' Iconst
{
{
#ifndef MULTIBYTE
#ifndef MULTIBYTE
mmerror(ET_ERROR, "Multi-byte support is not enabled.");
mmerror(ET_ERROR, "Multi-byte support is not enabled.");
...
@@ -2732,12 +2690,12 @@ opt_select_limit: LIMIT select_limit_value ',' select_offset_value
...
@@ -2732,12 +2690,12 @@ opt_select_limit: LIMIT select_limit_value ',' select_offset_value
{ $$ = EMPTY; }
{ $$ = EMPTY; }
;
;
select_limit_value:
Ic
onst { $$ = $1; }
select_limit_value:
PosIntC
onst { $$ = $1; }
| ALL { $$ = make_str("all"); }
| ALL { $$ = make_str("all"); }
| PARAM { $$ = make_name(); }
| PARAM { $$ = make_name(); }
;
;
select_offset_value:
Ic
onst { $$ = $1; }
select_offset_value:
PosIntC
onst { $$ = $1; }
| PARAM { $$ = make_name(); }
| PARAM { $$ = make_name(); }
;
;
...
@@ -2986,7 +2944,7 @@ opt_array_bounds: '[' ']' opt_array_bounds
...
@@ -2986,7 +2944,7 @@ opt_array_bounds: '[' ']' opt_array_bounds
}
}
;
;
Iresult:
Iconst
{ $$ = atol($1); }
Iresult:
PosIntConst
{ $$ = atol($1); }
| '(' Iresult ')' { $$ = $2; }
| '(' Iresult ')' { $$ = $2; }
| Iresult '+' Iresult { $$ = $1 + $3; }
| Iresult '+' Iresult { $$ = $1 + $3; }
| Iresult '-' Iresult { $$ = $1 - $3; }
| Iresult '-' Iresult { $$ = $1 - $3; }
...
@@ -3048,7 +3006,7 @@ Numeric: FLOAT opt_float
...
@@ -3048,7 +3006,7 @@ Numeric: FLOAT opt_float
Geometric: PATH_P { $$ = make_str("path"); };
Geometric: PATH_P { $$ = make_str("path"); };
opt_float: '('
Ic
onst ')'
opt_float: '('
PosIntC
onst ')'
{
{
if (atol($2) < 1)
if (atol($2) < 1)
mmerror(ET_ERROR, "precision for FLOAT must be at least 1");
mmerror(ET_ERROR, "precision for FLOAT must be at least 1");
...
@@ -3062,7 +3020,7 @@ opt_float: '(' Iconst ')'
...
@@ -3062,7 +3020,7 @@ opt_float: '(' Iconst ')'
}
}
;
;
opt_numeric: '('
Iconst ',' Ic
onst ')'
opt_numeric: '('
PosIntConst ',' PosIntC
onst ')'
{
{
if (atol($2) < 1 || atol($2) > NUMERIC_MAX_PRECISION) {
if (atol($2) < 1 || atol($2) > NUMERIC_MAX_PRECISION) {
sprintf(errortext, "NUMERIC precision %s must be between 1 and %d", $2, NUMERIC_MAX_PRECISION);
sprintf(errortext, "NUMERIC precision %s must be between 1 and %d", $2, NUMERIC_MAX_PRECISION);
...
@@ -3074,7 +3032,7 @@ opt_numeric: '(' Iconst ',' Iconst ')'
...
@@ -3074,7 +3032,7 @@ opt_numeric: '(' Iconst ',' Iconst ')'
}
}
$$ = cat_str(5, make_str("("), $2, make_str(","), $4, make_str(")"));
$$ = cat_str(5, make_str("("), $2, make_str(","), $4, make_str(")"));
}
}
| '('
Ic
onst ')'
| '('
PosIntC
onst ')'
{
{
if (atol($2) < 1 || atol($2) > NUMERIC_MAX_PRECISION) {
if (atol($2) < 1 || atol($2) > NUMERIC_MAX_PRECISION) {
sprintf(errortext, "NUMERIC precision %s must be between 1 and %d", $2, NUMERIC_MAX_PRECISION);
sprintf(errortext, "NUMERIC precision %s must be between 1 and %d", $2, NUMERIC_MAX_PRECISION);
...
@@ -3088,7 +3046,7 @@ opt_numeric: '(' Iconst ',' Iconst ')'
...
@@ -3088,7 +3046,7 @@ opt_numeric: '(' Iconst ',' Iconst ')'
}
}
;
;
opt_decimal: '('
Iconst ',' Ic
onst ')'
opt_decimal: '('
PosIntConst ',' PosIntC
onst ')'
{
{
if (atol($2) < 1 || atol($2) > NUMERIC_MAX_PRECISION) {
if (atol($2) < 1 || atol($2) > NUMERIC_MAX_PRECISION) {
sprintf(errortext, "NUMERIC precision %s must be between 1 and %d", $2, NUMERIC_MAX_PRECISION);
sprintf(errortext, "NUMERIC precision %s must be between 1 and %d", $2, NUMERIC_MAX_PRECISION);
...
@@ -3100,7 +3058,7 @@ opt_decimal: '(' Iconst ',' Iconst ')'
...
@@ -3100,7 +3058,7 @@ opt_decimal: '(' Iconst ',' Iconst ')'
}
}
$$ = cat_str(5, make_str("("), $2, make_str(","), $4, make_str(")"));
$$ = cat_str(5, make_str("("), $2, make_str(","), $4, make_str(")"));
}
}
| '('
Ic
onst ')'
| '('
PosIntC
onst ')'
{
{
if (atol($2) < 1 || atol($2) > NUMERIC_MAX_PRECISION) {
if (atol($2) < 1 || atol($2) > NUMERIC_MAX_PRECISION) {
sprintf(errortext, "NUMERIC precision %s must be between 1 and %d", $2, NUMERIC_MAX_PRECISION);
sprintf(errortext, "NUMERIC precision %s must be between 1 and %d", $2, NUMERIC_MAX_PRECISION);
...
@@ -3118,7 +3076,7 @@ opt_decimal: '(' Iconst ',' Iconst ')'
...
@@ -3118,7 +3076,7 @@ opt_decimal: '(' Iconst ',' Iconst ')'
* SQL92 bit-field data types
* SQL92 bit-field data types
* The following implements BIT() and BIT VARYING().
* The following implements BIT() and BIT VARYING().
*/
*/
Bit: bit '('
Ic
onst ')'
Bit: bit '('
PosIntC
onst ')'
{
{
$$ = cat_str(4, $1, make_str("("), $3, make_str(")"));
$$ = cat_str(4, $1, make_str("("), $3, make_str(")"));
if (atol($3) < 1)
if (atol($3) < 1)
...
@@ -3149,7 +3107,7 @@ bit: BIT opt_varying
...
@@ -3149,7 +3107,7 @@ bit: BIT opt_varying
* The following implements CHAR() and VARCHAR().
* The following implements CHAR() and VARCHAR().
* - ay 6/95
* - ay 6/95
*/
*/
Character: character '('
Ic
onst ')'
Character: character '('
PosIntC
onst ')'
{
{
if (atol($3) < 1)
if (atol($3) < 1)
{
{
...
@@ -3446,8 +3404,6 @@ a_expr: c_expr
...
@@ -3446,8 +3404,6 @@ a_expr: c_expr
}
}
| row_expr
| row_expr
{ $$ = $1; }
{ $$ = $1; }
| cinputvariable
{ $$ = make_str("?"); }
;
;
/* Restricted expressions
/* Restricted expressions
...
@@ -3506,8 +3462,6 @@ b_expr: c_expr
...
@@ -3506,8 +3462,6 @@ b_expr: c_expr
{ $$ = cat2_str($1, $2); }
{ $$ = cat2_str($1, $2); }
| b_expr Op
| b_expr Op
{ $$ = cat2_str($1, $2); }
{ $$ = cat2_str($1, $2); }
| civariableonly
{ $$ = $1; }
;
;
/*
/*
...
@@ -3544,7 +3498,7 @@ c_expr: attr
...
@@ -3544,7 +3498,7 @@ c_expr: attr
{ $$ = make_str("current_date"); }
{ $$ = make_str("current_date"); }
| CURRENT_TIME
| CURRENT_TIME
{ $$ = make_str("current_time"); }
{ $$ = make_str("current_time"); }
| CURRENT_TIME '('
Ic
onst ')'
| CURRENT_TIME '('
PosIntC
onst ')'
{
{
if (atol($3) != 0)
if (atol($3) != 0)
{
{
...
@@ -3556,7 +3510,7 @@ c_expr: attr
...
@@ -3556,7 +3510,7 @@ c_expr: attr
}
}
| CURRENT_TIMESTAMP
| CURRENT_TIMESTAMP
{ $$ = make_str("current_timestamp"); }
{ $$ = make_str("current_timestamp"); }
| CURRENT_TIMESTAMP '('
Ic
onst ')'
| CURRENT_TIMESTAMP '('
PosIntC
onst ')'
{
{
if (atol($3) != 0)
if (atol($3) != 0)
{
{
...
@@ -3622,8 +3576,6 @@ extract_list: extract_arg FROM a_expr
...
@@ -3622,8 +3576,6 @@ extract_list: extract_arg FROM a_expr
}
}
| /* EMPTY */
| /* EMPTY */
{ $$ = EMPTY; }
{ $$ = EMPTY; }
| cinputvariable
{ $$ = make_str("?"); }
;
;
extract_arg: datetime { $$ = $1; }
extract_arg: datetime { $$ = $1; }
...
@@ -3835,28 +3787,20 @@ index_name: ColId { $$ = $1; };
...
@@ -3835,28 +3787,20 @@ index_name: ColId { $$ = $1; };
name: ColId { $$ = $1; };
name: ColId { $$ = $1; };
func_name: ColId { $$ = $1; };
func_name: ColId { $$ = $1; };
file_name: S
c
onst { $$ = $1; };
file_name: S
tringC
onst { $$ = $1; };
/* Constants
/* Constants
* Include TRUE/FALSE for SQL3 support. - thomas 1997-10-24
* Include TRUE/FALSE for SQL3 support. - thomas 1997-10-24
*/
*/
AexprConst:
Ic
onst
AexprConst:
PosAllC
onst
{
{
$$ = $1;
$$ = $1;
}
}
| Fconst
| ConstTypename StringConst
{
$$ = $1;
}
| Sconst
{
$$ = $1;
}
| ConstTypename Sconst
{
{
$$ = cat2_str($1, $2);
$$ = cat2_str($1, $2);
}
}
| ConstInterval S
c
onst opt_interval
| ConstInterval S
tringC
onst opt_interval
{
{
$$ = cat_str(3, $1, $2, $3);
$$ = cat_str(3, $1, $2, $3);
}
}
...
@@ -3874,6 +3818,8 @@ AexprConst: Iconst
...
@@ -3874,6 +3818,8 @@ AexprConst: Iconst
{
{
$$ = make_str("null");
$$ = make_str("null");
}
}
| civarind
{ $$ = make_str("?"); }
;
;
ParamNo: PARAM opt_indirection
ParamNo: PARAM opt_indirection
...
@@ -3892,6 +3838,36 @@ Sconst: SCONST {
...
@@ -3892,6 +3838,36 @@ Sconst: SCONST {
$$[strlen($1)+1]='\'';
$$[strlen($1)+1]='\'';
free($1);
free($1);
}
}
PosIntConst: Iconst { $$ = $1; }
| civar { $$ = make_str("?"); }
;
IntConst: PosIntConst { $$ = $1; }
| '-' PosIntConst { $$ = cat2_str(make_str("-"), $2); }
;
StringConst: Sconst { $$ = $1; }
| civar { $$ = make_str("?"); }
;
PosIntStringConst: Iconst { $$ = $1; }
| Sconst { $$ = $1; }
| civar { $$ = make_str("?"); }
;
AllConst: Sconst { $$ = $1; }
| Fconst { $$ = $1; }
| Iconst { $$ = $1; }
| '-' Fconst { $$ = cat2_str(make_str("-"), $2); }
| '-' Iconst { $$ = cat2_str(make_str("-"), $2); }
| civar { $$ = make_str("?"); }
;
PosAllConst: Sconst { $$ = $1; }
| Fconst { $$ = $1; }
| Iconst { $$ = $1; }
| civar { $$ = make_str("?"); }
;
UserId: ColId { $$ = $1;};
UserId: ColId { $$ = $1;};
/* Column identifier
/* Column identifier
...
@@ -3987,11 +3963,7 @@ connection_target: database_name opt_server opt_port
...
@@ -3987,11 +3963,7 @@ connection_target: database_name opt_server opt_port
$$ = make3_str(make3_str(make_str("\""), $1, make_str(":")), $3, make3_str(make3_str($4, make_str("/"), $6), $7, make_str("\"")));
$$ = make3_str(make3_str(make_str("\""), $1, make_str(":")), $3, make3_str(make3_str($4, make_str("/"), $6), $7, make_str("\"")));
}
}
| char_variable
| StringConst
{
$$ = $1;
}
| Sconst
{
{
$$ = mm_strdup($1);
$$ = mm_strdup($1);
$$[0] = '\"';
$$[0] = '\"';
...
@@ -4034,7 +4006,7 @@ server_name: ColId { $$ = $1; }
...
@@ -4034,7 +4006,7 @@ server_name: ColId { $$ = $1; }
| ColId '.' server_name { $$ = make3_str($1, make_str("."), $3); }
| ColId '.' server_name { $$ = make3_str($1, make_str("."), $3); }
| IP { $$ = make_name(); }
| IP { $$ = make_name(); }
opt_port: ':'
Ic
onst { $$ = make2_str(make_str(":"), $2); }
opt_port: ':'
PosIntC
onst { $$ = make2_str(make_str(":"), $2); }
| /* empty */ { $$ = EMPTY; }
| /* empty */ { $$ = EMPTY; }
opt_connection_name: AS connection_target { $$ = $2; }
opt_connection_name: AS connection_target { $$ = $2; }
...
@@ -4065,8 +4037,7 @@ user_name: UserId { if ($1[0] == '\"')
...
@@ -4065,8 +4037,7 @@ user_name: UserId { if ($1[0] == '\"')
else
else
$$ = make3_str(make_str("\""), $1, make_str("\""));
$$ = make3_str(make_str("\""), $1, make_str("\""));
}
}
| char_variable { $$ = $1; }
| StringConst { $$ = make3_str(make_str("\""), $1, make_str("\"")); }
| SCONST { $$ = make3_str(make_str("\""), $1, make_str("\"")); }
char_variable: cvariable
char_variable: cvariable
{ /* check if we have a char variable */
{ /* check if we have a char variable */
...
@@ -4528,7 +4499,8 @@ ecpg_using: /* empty */ { $$ = EMPTY; }
...
@@ -4528,7 +4499,8 @@ ecpg_using: /* empty */ { $$ = EMPTY; }
}
}
;
;
variablelist: cinputvariable | cinputvariable ',' variablelist;
variable: civarind | civar
variablelist: variable | variable ',' variablelist;
/*
/*
* As long as the prepare statement is not supported by the backend, we will
* As long as the prepare statement is not supported by the backend, we will
...
@@ -5237,12 +5209,18 @@ c_args: /* empty */ { $$ = EMPTY; }
...
@@ -5237,12 +5209,18 @@ c_args: /* empty */ { $$ = EMPTY; }
| c_list { $$ = $1; }
| c_list { $$ = $1; }
;
;
coutputvariable
: cvariable indicator
coutputvariable: cvariable indicator
{
{
add_variable(&argsresult, find_variable($1), ($2 == NULL) ? &no_indicator : find_variable($2));
add_variable(&argsresult, find_variable($1), find_variable($2));
};
}
| cvariable
{
add_variable(&argsresult, find_variable($1), &no_indicator);
}
;
cinputvariable : cvariable indicator
civarind: cvariable indicator
{
{
if ($2 != NULL && (find_variable($2))->type->typ == ECPGt_array)
if ($2 != NULL && (find_variable($2))->type->typ == ECPGt_array)
mmerror(ET_ERROR, "arrays of indicators are not allowed on input");
mmerror(ET_ERROR, "arrays of indicators are not allowed on input");
...
@@ -5250,16 +5228,15 @@ cinputvariable : cvariable indicator
...
@@ -5250,16 +5228,15 @@ cinputvariable : cvariable indicator
add_variable(&argsinsert, find_variable($1), ($2 == NULL) ? &no_indicator : find_variable($2));
add_variable(&argsinsert, find_variable($1), ($2 == NULL) ? &no_indicator : find_variable($2));
};
};
civar
iableonly
: cvariable
civar: cvariable
{
{
add_variable(&argsinsert, find_variable($1), &no_indicator);
add_variable(&argsinsert, find_variable($1), &no_indicator);
$$ =
make_str("?")
;
$$ =
$1
;
};
};
cvariable: CVARIABLE
{ $$ = $1; };
cvariable: CVARIABLE
{ $$ = $1; }
indicator: /* empty */ { $$ = NULL; }
indicator: CVARIABLE { check_indicator((find_variable($1))->type); $$ = $1; }
| cvariable { check_indicator((find_variable($1))->type); $$ = $1; }
| SQL_INDICATOR cvariable { check_indicator((find_variable($2))->type); $$ = $2; }
| SQL_INDICATOR cvariable { check_indicator((find_variable($2))->type); $$ = $2; }
| SQL_INDICATOR name { check_indicator((find_variable($2))->type); $$ = $2; }
| SQL_INDICATOR name { check_indicator((find_variable($2))->type); $$ = $2; }
;
;
...
@@ -5302,7 +5279,7 @@ c_thing: c_anything { $$ = $1; }
...
@@ -5302,7 +5279,7 @@ c_thing: c_anything { $$ = $1; }
c_anything: IDENT { $$ = $1; }
c_anything: IDENT { $$ = $1; }
| CSTRING { $$ = make3_str(make_str("\""), $1, make_str("\"")); }
| CSTRING { $$ = make3_str(make_str("\""), $1, make_str("\"")); }
|
Ic
onst { $$ = $1; }
|
PosIntC
onst { $$ = $1; }
| Fconst { $$ = $1; }
| Fconst { $$ = $1; }
| Sconst { $$ = $1; }
| Sconst { $$ = $1; }
| '*' { $$ = make_str("*"); }
| '*' { $$ = make_str("*"); }
...
...
src/interfaces/ecpg/test/test3.pgc
View file @
965a0a40
...
@@ -18,7 +18,7 @@ exec sql begin declare section;
...
@@ -18,7 +18,7 @@ exec sql begin declare section;
birthinfo ind_birth;
birthinfo ind_birth;
} ind_personal;
} ind_personal;
int *ind_married = NULL;
int *ind_married = NULL;
int children;
int children
, movevalue = 2
;
int ind_children;
int ind_children;
str *married = NULL;
str *married = NULL;
char *wifesname="Petra";
char *wifesname="Petra";
...
@@ -53,8 +53,11 @@ exec sql end declare section;
...
@@ -53,8 +53,11 @@ exec sql end declare section;
strcpy(msg, "open");
strcpy(msg, "open");
exec sql open cur;
exec sql open cur;
exec sql whenever not found do break;
strcpy(msg, "move");
exec sql move :movevalue in cur;
exec sql whenever not found do break;
while (1) {
while (1) {
strcpy(msg, "fetch");
strcpy(msg, "fetch");
exec sql fetch from cur into :personal:ind_personal, :married:ind_married, :children:ind_children;
exec sql fetch from cur into :personal:ind_personal, :married:ind_married, :children:ind_children;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment