Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit33d71e3

Browse files
author
Michael Meskes
committed
*** empty log message ***
1 parent5633e22 commit33d71e3

File tree

5 files changed

+95
-58
lines changed

5 files changed

+95
-58
lines changed

‎src/interfaces/ecpg/ChangeLog

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -755,3 +755,8 @@ Thu Dec 23 13:25:05 CET 1999
755755
- Fixed command line parsing.
756756
- Set ecpg version to 2.6.13.
757757

758+
Thu Jan 6 09:52:27 CET 2000
759+
760+
- Synced preproc.y with gram.y.
761+
- Made sure Bruce's additions also make it into my source tree.
762+
- Set ecpg version to 2.6.14.

‎src/interfaces/ecpg/preproc/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ include $(SRCDIR)/Makefile.global
33

44
MAJOR_VERSION=2
55
MINOR_VERSION=6
6-
PATCHLEVEL=13
6+
PATCHLEVEL=14
77

88
CFLAGS+=-I../include -DMAJOR_VERSION=$(MAJOR_VERSION)\
99
-DMINOR_VERSION=$(MINOR_VERSION) -DPATCHLEVEL=$(PATCHLEVEL)\

‎src/interfaces/ecpg/preproc/preproc.y

Lines changed: 85 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ static char*connection = NULL;
2727
staticint QueryIsRule =0, ForUpdateNotAllowed =0, FoundInto =0;
2828
staticstructthis_type actual_type[STRUCT_DEPTH];
2929
staticchar *actual_storage[STRUCT_DEPTH];
30-
staticchar *actual_startline[STRUCT_DEPTH];
3130

3231
/* temporarily store struct members while creating the data structure*/
3332
structECPGstruct_member *struct_member_list[STRUCT_DEPTH] = {NULL };
@@ -70,7 +69,7 @@ void
7069
output_line_number()
7170
{
7271
if (input_filename)
73-
fprintf(yyout,"\n#line %d\"%s\"\n", yylineno, input_filename);
72+
fprintf(yyout,"\n#line %d\"%s\"\n", yylineno +1, input_filename);
7473
}
7574

7675
staticvoid
@@ -480,20 +479,6 @@ make_name(void)
480479
return(name);
481480
}
482481

483-
staticchar *
484-
hashline_number()
485-
{
486-
if (input_filename)
487-
{
488-
char* line =mm_alloc(strlen("\n#line %d\"%s\"\n") +21 +strlen(input_filename));
489-
sprintf(line,"\n#line %d\"%s\"\n", yylineno, input_filename);
490-
491-
return line;
492-
}
493-
494-
return EMPTY;
495-
}
496-
497482
staticvoid
498483
output_statement(char * stmt,int mode)
499484
{
@@ -772,7 +757,7 @@ adjust_array(enum ECPGttype type_enum, int *dimension, int *length, int type_dim
772757
%type<str>columnListDeleteStmtLockStmtUpdateStmtCursorStmt
773758
%type<str>NotifyStmtcolumnElemcopy_dirnUnlistenStmtcopy_null
774759
%type<str>copy_delimiterListenStmtCopyStmtcopy_file_nameopt_binary
775-
%type<str>opt_with_copyFetchStmtdirectionfetch_how_manyportal_name
760+
%type<str>opt_with_copyFetchStmtopt_directionfetch_how_manyopt_portal_name
776761
%type<str>ClosePortalStmtDropStmtVacuumStmtopt_verbose
777762
%type<str>opt_analyzeopt_va_listva_listExplainStmtindex_params
778763
%type<str>index_listfunc_indexindex_elemopt_typeopt_classaccess_method_clause
@@ -803,11 +788,12 @@ adjust_array(enum ECPGttype type_enum, int *dimension, int *length, int type_dim
803788
%type<str>select_offset_valuetable_listusing_exprjoin_expr
804789
%type<str>using_listfrom_exprtable_exprjoin_clausejoin_type
805790
%type<str>join_qualupdate_listjoin_clausejoin_clause_with_union
806-
%type<str>opt_levelopt_locklock_type,
791+
%type<str>opt_levelopt_locklock_typeusers_in_new_group_clause
807792
%type<str>OptConstrFromTablecomment_opConstraintAttributeSpec
808793
%type<str>constraints_set_listconstraints_set_namelistcomment_fn
809794
%type<str>constraints_set_modecomment_typecomment_clcomment_ag
810795
%type<str>ConstraintDeferrabilitySpecConstraintTimeSpec
796+
%type<str>CreateGroupStmt,AlterGroupStmt,DropGroupStmt
811797

812798
%type<str>ECPGWheneverECPGConnectconnection_targetECPGOpen
813799
%type<str>indicatorECPGExecuteECPGPrepareecpg_using
@@ -822,7 +808,7 @@ adjust_array(enum ECPGttype type_enum, int *dimension, int *length, int type_dim
822808
%type<str>enum_typecivariableonlyECPGCursorStmtECPGDeallocate
823809
%type<str>ECPGFreeECPGDeclareECPGVarsql_variable_declarations
824810
%type<str>sql_declarationsql_variable_listsql_variableopt_at
825-
%type<str>struct_types_structdeclarationdeclarationsvariable_declarations
811+
%type<str>struct_types_structdeclarationvariable_declarations
826812
%type<str>s_structs_unionunion_typeECPGSetAutocommiton_off
827813

828814
%type<type_enum>simple_typevarchar_type
@@ -851,12 +837,14 @@ statement: ecpgstart opt_at stmt ';'{ connection = NULL; }
851837
opt_at:SQL_ATconnection_target{ connection =$2; }
852838

853839
stmt:AddAttrStmt{ output_statement($1,0); }
840+
|AlterGroupStmt{ output_statement($1,0); }
854841
|AlterUserStmt{ output_statement($1,0); }
855842
|ClosePortalStmt{ output_statement($1,0); }
856843
|CommentStmt{ output_statement($1,0); }
857844
|CopyStmt{ output_statement($1,0); }
858845
|CreateStmt{ output_statement($1,0); }
859846
|CreateAsStmt{ output_statement($1,0); }
847+
|CreateGroupStmt{ output_statement($1,0); }
860848
|CreateSeqStmt{ output_statement($1,0); }
861849
|CreatePLangStmt{ output_statement($1,0); }
862850
|CreateTrigStmt{ output_statement($1,0); }
@@ -865,6 +853,7 @@ stmt: AddAttrStmt{ output_statement($1, 0); }
865853
|DefineStmt { output_statement($1,0); }
866854
|DropStmt{ output_statement($1,0); }
867855
|TruncateStmt{ output_statement($1,0); }
856+
|DropGroupStmt{ output_statement($1,0); }
868857
|DropPLangStmt{ output_statement($1,0); }
869858
|DropTrigStmt{ output_statement($1,0); }
870859
|DropUserStmt{ output_statement($1,0); }
@@ -1111,10 +1100,6 @@ user_group_list: user_group_list ',' UserId
11111100

11121101
user_group_clause:INGROUPuser_group_list
11131102
{
1114-
/* the backend doesn't actually process this,
1115-
* so an warning message is probably fairer*/
1116-
mmerror(ET_WARN,"IN GROUP is not implemented");
1117-
11181103
$$ = cat2_str(make_str("in group"),$3);
11191104
}
11201105
|/*EMPTY*/{$$ = EMPTY; }
@@ -1124,6 +1109,63 @@ user_valid_clause: VALID UNTIL Sconst{ $$ = cat2_str(make_str("valid until")
11241109
|/*EMPTY*/{$$ = EMPTY; }
11251110
;
11261111

1112+
1113+
/*****************************************************************************
1114+
*
1115+
* Create a postresql group
1116+
*
1117+
*
1118+
****************************************************************************/
1119+
CreateGroupStmt:CREATEGROUPUserId
1120+
{
1121+
$$ = cat2_str(make_str("create group"),$3);
1122+
}
1123+
|CREATEGROUPUserIdWITHsysid_clauseusers_in_new_group_clause
1124+
{
1125+
$$ = cat_str(5, make_str("create group"),$3, make_str("with"),$5,$6);
1126+
}
1127+
;
1128+
1129+
users_in_new_group_clause:USERuser_group_list {$$ = cat2_str(make_str("user"),$2); }
1130+
|/* EMPTY*/ {$$ = EMPTY; }
1131+
;
1132+
1133+
1134+
/*****************************************************************************
1135+
*
1136+
* Alter a postresql group
1137+
*
1138+
*
1139+
*****************************************************************************/
1140+
AlterGroupStmt:ALTERGROUPUserIdWITHSYSIDIconst
1141+
{
1142+
$$ = cat_str(4, make_str("alter group"),$3, make_str("with sysid"),$6);
1143+
}
1144+
|
1145+
ALTERGROUPUserIdADDUSERuser_group_list
1146+
{
1147+
$$ = cat_str(4, make_str("alter group"),$3, make_str("add user"),$6);
1148+
}
1149+
|
1150+
ALTERGROUPUserIdDROPUSERuser_group_list
1151+
{
1152+
$$ = cat_str(4, make_str("alter group"),$3, make_str("drop user"),$6);
1153+
}
1154+
;
1155+
1156+
/*****************************************************************************
1157+
*
1158+
* Drop a postresql group
1159+
*
1160+
*
1161+
*****************************************************************************/
1162+
DropGroupStmt:DROPGROUPUserId
1163+
{
1164+
$$ = cat2_str(make_str("drop group"),$3);
1165+
}
1166+
;
1167+
1168+
11271169
/*****************************************************************************
11281170
*
11291171
* Set PG internal variable
@@ -1885,55 +1927,42 @@ TruncateStmt: TRUNCATE TABLE relation_name
18851927
*
18861928
*****************************************************************************/
18871929

1888-
FetchStmt:FETCHdirectionfetch_how_manyportal_nameINTOinto_list
1930+
FetchStmt:FETCHopt_directionfetch_how_manyopt_portal_nameINTOinto_list
18891931
{
18901932
if (strcmp($2,"relative") ==0 && atol($3) ==0L)
18911933
mmerror(ET_ERROR,"FETCH/RELATIVE at current position is not supported");
18921934

18931935
$$ = cat_str(4, make_str("fetch"),$2,$3,$4);
18941936
}
1895-
|FETCHfetch_how_manyportal_nameINTOinto_list
1896-
{
1897-
$$ = cat_str(3, make_str("fetch"),$2,$3);
1898-
}
1899-
|FETCHportal_nameINTOinto_list
1937+
|MOVEopt_directionfetch_how_manyopt_portal_name
19001938
{
1901-
$$ = cat_str(2, make_str("fetch"),$2);
1902-
}
1903-
|MOVEdirectionfetch_how_manyportal_name
1904-
{
1905-
$$ = cat_str(4, make_str("move"),$2,$3,$4);
1906-
}
1907-
|MOVEfetch_how_manyportal_name
1908-
{
1909-
$$ = cat_str(3, make_str("move"),$2,$3);
1910-
}
1911-
|MOVEportal_name
1912-
{
1913-
$$ = cat_str(2, make_str("move"),$2);
1939+
$$ = cat_str(4, make_str("fetch"),$2,$3,$4);
19141940
}
19151941
;
19161942

1917-
direction:FORWARD{$$ = make_str("forward"); }
1943+
opt_direction:FORWARD{$$ = make_str("forward"); }
19181944
|BACKWARD{$$ = make_str("backward"); }
19191945
|RELATIVE {$$ = make_str("relative"); }
19201946
|ABSOLUTE
19211947
{
19221948
mmerror(ET_WARN,"FETCH/ABSOLUTE not supported, backend will use RELATIVE");
19231949
$$ = make_str("absolute");
19241950
}
1951+
|/*EMPTY*/{$$ = EMPTY;/* default*/ }
19251952
;
19261953

19271954
fetch_how_many:Iconst {$$ =$1; }
19281955
|'-'Iconst {$$ = cat2_str(make_str("-"),$2); }
19291956
|ALL{$$ = make_str("all"); }
19301957
|NEXT{$$ = make_str("next"); }
19311958
|PRIOR{$$ = make_str("prior"); }
1959+
|/*EMPTY*/{$$ = EMPTY;/*default*/ }
19321960
;
19331961

1934-
portal_name:INname{$$ = cat2_str(make_str("in"),$2); }
1962+
opt_portal_name:INname{$$ = cat2_str(make_str("in"),$2); }
19351963
|FROMname{$$ = cat2_str(make_str("from"),$2); }
1936-
|name{$$ = cat2_str(make_str("in"),$1); }
1964+
/*| name{ $$ = cat2_str(make_str("in"), $1); }*/
1965+
|/*EMPTY*/{$$ = EMPTY; }
19371966
;
19381967

19391968
/*****************************************************************************
@@ -4503,6 +4532,7 @@ ECPGDeallocate:SQL_DEALLOCATE SQL_PREPARE ident{ $$ = cat_str(3, make_str("ECP
45034532
ECPGDeclaration:sql_startdeclare
45044533
{
45054534
fputs("/* exec sql begin declare section */", yyout);
4535+
output_line_number();
45064536
}
45074537
variable_declarationssql_enddeclare
45084538
{
@@ -4515,16 +4545,18 @@ sql_startdeclare : ecpgstart BEGIN_TRANS DECLARE SQL_SECTION ';' {}
45154545

45164546
sql_enddeclare:ecpgstartEND_TRANSDECLARESQL_SECTION';' {}
45174547

4518-
variable_declarations:/* empty*/ {$$ = EMPTY; }
4519-
|declarations {$$ =$1; }
4520-
4521-
declarations:declaration {$$ =$1; }
4522-
|declarationsdeclaration {$$ = cat2_str($1,$2); }
4548+
variable_declarations:/* empty*/
4549+
{
4550+
$$ = EMPTY;
4551+
}
4552+
|declarationvariable_declarations
4553+
{
4554+
$$ = cat2_str($1,$2);
4555+
}
45234556

45244557
declaration:storage_clause
45254558
{
45264559
actual_storage[struct_level] = mm_strdup($1);
4527-
actual_startline[struct_level] = hashline_number();
45284560
}
45294561
type
45304562
{
@@ -4534,7 +4566,7 @@ declaration: storage_clause
45344566
}
45354567
variable_list';'
45364568
{
4537-
$$ = cat_str(5, actual_startline[struct_level],$1,$3.type_str,$5, make_str(";\n"));
4569+
$$ = cat_str(4,$1,$3.type_str,$5, make_str(";\n"));
45384570
}
45394571

45404572
storage_clause :S_EXTERN{$$ = make_str("extern"); }
@@ -5441,7 +5473,7 @@ c_stuff: c_anything { $$ = $1; }
54415473
}
54425474

54435475
c_list:c_term{$$ =$1; }
5444-
|c_list','c_term{$$ = cat_str(3,$1, make_str(","),$3); }
5476+
|c_term','c_list{$$ = cat_str(3,$1, make_str(","),$3); }
54455477

54465478
c_term:c_stuff {$$ =$1; }
54475479
|'{'c_list'}'{$$ = cat_str(3, make_str("{"),$2, make_str("}")); }

‎src/interfaces/ecpg/test/test1.pgc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ exec sql end declare section;
8282
for (i=0, j=sqlca.sqlerrd[2]; i<j; i++)
8383
printf("name[%d]=%8.8s\tamount[%d]=%d\tletter[%d]=%c\n", i, name[i], i, amount[i],i, letter[i][0]);
8484

85-
exec sql at pm selectname, amount, letter into :name, :amount, :letter from "Test";
85+
exec sql at pm select* into :name, :amount, :letter from "Test";
8686

8787
for (i=0, j=sqlca.sqlerrd[2]; i<j; i++)
8888
printf("name[%d]=%8.8s\tamount[%d]=%d\tletter[%d]=%c\n", i, name[i], i, amount[i],i, letter[i][0]);

‎src/interfaces/ecpg/test/test3.pgc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ exec sql begin declare section;
1919
int ind_children;
2020
str *married = NULL;
2121
char *wifesname="Petra";
22-
char *query="selectname, born, age, married, children from meskes where name = :var1";
22+
char *query="select* from meskes where name = :var1";
2323
exec sql end declare section;
2424

2525
exec sql declare cur cursor for
@@ -41,8 +41,8 @@ exec sql end declare section;
4141
exec sql insert into meskes(name, married, children) values (:wifesname, '19900404', 3);
4242
exec sql insert into meskes(name, born, age, married, children) values ('Michael', 19660117, 33, '19900404', 3);
4343
exec sql insert into meskes(name, born, age) values ('Carsten', 19910103, 8);
44-
exec sql insert into meskes(name, born, age) values ('Marc', 19930907,5);
45-
exec sql insert into meskes(name, born, age) values ('Chris', 19970923,1);
44+
exec sql insert into meskes(name, born, age) values ('Marc', 19930907,6);
45+
exec sql insert into meskes(name, born, age) values ('Chris', 19970923,2);
4646

4747
strcpy(msg, "commit");
4848
exec sql commit;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp