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

Commitc8bd630

Browse files
author
Michael Meskes
committed
*** empty log message ***
1 parent564842a commitc8bd630

File tree

3 files changed

+57
-102
lines changed

3 files changed

+57
-102
lines changed

‎src/interfaces/ecpg/ChangeLog

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -574,6 +574,10 @@ Fri Mai 7 07:11:38 CEST 1999
574574

575575
- Synced preproc.y with gram.y.
576576
- Fixed small bug in parser.
577+
578+
Thu Mai 13 13:51:26 CEST 1999
579+
580+
- Synced preproc.y with gram.y.
577581
- Set library version to 3.0.0
578582
- Set ecpg version to 2.6.0
579583

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

Lines changed: 52 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -683,7 +683,7 @@ adjust_array(enum ECPGttype type_enum, int *dimension, int *length, int type_dim
683683
DAY_P,DECIMAL,DECLARE,DEFAULT,DELETE,DESC,DISTINCT,DOUBLE,DROP,
684684
ELSE,END_TRANS,EXCEPT,EXECUTE,EXISTS,EXTRACT,
685685
FALSE_P,FETCH,FLOAT,FOR,FOREIGN,FROM,FULL,
686-
GRANT,GROUP,HAVING,HOUR_P,
686+
GLOBAL,GRANT,GROUP,HAVING,HOUR_P,
687687
IN,INNER_P,INSENSITIVE,INSERT,INTERSECT,INTERVAL,INTO,IS,
688688
ISOLATION,JOIN,KEY,LANGUAGE,LEADING,LEFT,LEVEL,LIKE,LOCAL,
689689
MATCH,MINUTE_P,MONTH_P,NAMES,
@@ -702,24 +702,28 @@ adjust_array(enum ECPGttype type_enum, int *dimension, int *length, int type_dim
702702
%tokenTRIGGER
703703

704704
/* Keywords (in SQL92 non-reserved words)*/
705-
%tokenTYPE_P
705+
%tokenCOMMITTED,SERIALIZABLE,TYPE_P
706706

707707
/* Keywords for Postgres support (not in SQL92 reserved words)
708708
*
709709
* The CREATEDB and CREATEUSER tokens should go away
710710
* when some sort of pg_privileges relation is introduced.
711711
* - Todd A. Brandys 1998-01-01?
712712
*/
713-
%tokenABORT_TRANS,AFTER,AGGREGATE,ANALYZE,BACKWARD,BEFORE,BINARY,
713+
%tokenABORT_TRANS,ACCESS,AFTER,AGGREGATE,ANALYZE,
714+
BACKWARD,BEFORE,BINARY,
714715
CACHE,CLUSTER,COPY,CREATEDB,CREATEUSER,CYCLE,
715-
DATABASE,DELIMITERS,DO,EACH,ENCODING,EXPLAIN,EXTEND,
716+
DATABASE,DELIMITERS,DO,
717+
EACH,ENCODING,EXCLUSIVE,EXPLAIN,EXTEND,
716718
FORWARD,FUNCTION,HANDLER,
717719
INCREMENT,INDEX,INHERITS,INSTEAD,ISNULL,
718-
LANCOMPILER,LIMIT,LISTEN,UNLISTEN,LOAD,LOCATION,LOCK_P,MAXVALUE,MINVALUE,MOVE,
720+
LANCOMPILER,LIMIT,LISTEN,UNLISTEN,LOAD,LOCATION,LOCK_P,
721+
MAXVALUE,MINVALUE,MODE,MOVE,
719722
NEW,NOCREATEDB,NOCREATEUSER,NONE,NOTHING,NOTIFY,NOTNULL,
720723
OFFSET,OIDS,OPERATOR,PASSWORD,PROCEDURAL,
721724
RENAME,RESET,RETURNS,ROW,RULE,
722-
SERIAL,SEQUENCE,SETOF,SHOW,START,STATEMENT,STDIN,STDOUT,TRUSTED,
725+
SERIAL,SEQUENCE,SETOF,SHARE,SHOW,START,STATEMENT,STDIN,STDOUT,
726+
TRUSTED,
723727
UNLISTEN,UNTIL,VACUUM,VALID,VERBOSE,VERSION
724728

725729
/* Special keywords, not in the query language - see the "lex" file*/
@@ -776,7 +780,7 @@ adjust_array(enum ECPGttype type_enum, int *dimension, int *length, int type_dim
776780
%type<str>opt_decimalCharactercharacteropt_varyingopt_charset
777781
%type<str>opt_collateDatetimedatetimeopt_timezoneopt_interval
778782
%type<str>numerica_expr_or_nullrow_exprrow_descriptorrow_list
779-
%type<str>SelectStmtSubSelectresultOptTemp
783+
%type<str>SelectStmtSubSelectresultOptTempOptTempTypeOptTempScope
780784
%type<str>opt_tableopt_unionopt_uniquesort_clausesortby_list
781785
%type<str>sortbyOptUseOpopt_inh_starrelation_name_listname_list
782786
%type<str>group_clausehaving_clausefrom_clausec_list
@@ -812,10 +816,11 @@ adjust_array(enum ECPGttype type_enum, int *dimension, int *length, int type_dim
812816
%type<str>GrantStmtprivilegesoperation_commalistoperation
813817
%type<str>cursor_clauseopt_cursoropt_readonlyopt_ofopt_lmode
814818
%type<str>case_exprwhen_clause_listcase_defaultcase_argwhen_clause
815-
%type<str>select_clauseopt_select_limitselect_limit_value,
819+
%type<str>select_clauseopt_select_limitselect_limit_value
816820
%type<str>select_offset_valuetable_listusing_exprjoin_expr
817821
%type<str>using_listfrom_exprtable_exprjoin_clausejoin_type
818822
%type<str>join_qualupdate_listjoin_clausejoin_clause_with_union
823+
%type<str>opt_levelopt_locklock_type
819824

820825
%type<str>ECPGWheneverECPGConnectconnection_targetECPGOpenopt_using
821826
%type<str>indicatorECPGExecuteecpg_exprdotextECPGPrepare
@@ -1126,25 +1131,9 @@ VariableSetStmt: SET ColId TO var_value
11261131
{
11271132
$$ = cat2_str(make1_str("set time zone"),$4);
11281133
}
1129-
|SETTRANSACTIONISOLATIONLEVELREADColId
1134+
|SETTRANSACTIONISOLATIONLEVELopt_level
11301135
{
1131-
if (strcasecmp($6,"COMMITTED"))
1132-
{
1133-
sprintf(errortext,"syntax error at or near\"%s\"", $6);
1134-
yyerror(errortext);
1135-
}
1136-
1137-
$$ = cat2_str(make1_str("set transaction isolation level read"),$6);
1138-
}
1139-
|SETTRANSACTIONISOLATIONLEVELColId
1140-
{
1141-
if (strcasecmp($5,"SERIALIZABLE"))
1142-
{
1143-
sprintf(errortext,"syntax error at or near\"%s\"", $5);
1144-
yyerror(errortext);
1145-
}
1146-
1147-
$$ = cat2_str(make1_str("set transaction isolation level read"),$5);
1136+
$$ = cat2_str(make1_str("set transaction isolation level"),$5);
11481137
}
11491138
|SETNAMESencoding
11501139
{
@@ -1156,6 +1145,11 @@ VariableSetStmt: SET ColId TO var_value
11561145
}
11571146
;
11581147

1148+
opt_level:READCOMMITTED {$$ = make1_str("read committed"); }
1149+
|SERIALIZABLE {$$ = make1_str("serializable"); }
1150+
;
1151+
1152+
11591153
var_value:Sconst{$$ =$1; }
11601154
|DEFAULT{$$ = make1_str("default"); }
11611155
;
@@ -1300,11 +1294,24 @@ CreateStmt: CREATE OptTemp TABLE relation_name '(' OptTableElementList ')'
13001294
}
13011295
;
13021296

1303-
OptTemp:TEMP{$$ = make1_str("temp"); }
1297+
OptTemp:OptTempType {$$ =$1; }
1298+
|OptTempScopeOptTempType{$$ = cat2_str($1,$2); }
1299+
;
1300+
1301+
OptTempType:TEMP{$$ = make1_str("temp"); }
13041302
|TEMPORARY{$$ = make1_str("temporary"); }
13051303
|/* EMPTY*/{$$ = make1_str(""); }
13061304
;
13071305

1306+
OptTempScope:GLOBAL
1307+
{
1308+
yyerror("GLOBAL TEMPORARY TABLE is not currently supported");
1309+
$$ = make1_str("global");
1310+
}
1311+
|LOCAL {$$ = make1_str("local"); }
1312+
;
1313+
1314+
13081315
OptTableElementList:OptTableElementList','OptTableElement
13091316
{
13101317
$$ = cat3_str($1, make1_str(","),$3);
@@ -2674,84 +2681,25 @@ DeleteStmt: DELETE FROM relation_name
26742681
}
26752682
;
26762683

2677-
LockStmt:LOCK_Popt_tablerelation_name
2678-
{
2679-
$$ = cat3_str(make1_str("lock"),$2,$3);
2680-
}
2681-
|LOCK_Popt_tablerelation_nameINopt_lmodeROWIDENTIDENT
2682-
{
2683-
if (strcasecmp($8,"MODE"))
2684-
{
2685-
sprintf(errortext,"syntax error at or near\"%s\"", $8);
2686-
yyerror(errortext);
2687-
}
2688-
if ($5 !=NULL)
2689-
{
2690-
if (strcasecmp($5,"SHARE"))
2691-
{
2692-
sprintf(errortext,"syntax error at or near\"%s\"", $5);
2693-
yyerror(errortext);
2694-
}
2695-
if (strcasecmp($7,"EXCLUSIVE"))
2696-
{
2697-
sprintf(errortext,"syntax error at or near\"%s\"", $7);
2698-
yyerror(errortext);
2699-
}
2700-
}
2701-
else
2702-
{
2703-
if (strcasecmp($7,"SHARE") && strcasecmp($7,"EXCLUSIVE"))
2704-
{
2705-
sprintf(errortext,"syntax error at or near\"%s\"", $7);
2706-
yyerror(errortext);
2707-
}
2708-
}
2709-
2710-
$$=cat4_str(cat5_str(make1_str("lock"),$2,$3, make1_str("in"),$5), make1_str("row"),$7,$8);
2711-
}
2712-
|LOCK_Popt_tablerelation_nameINIDENTIDENTIDENT
2713-
{
2714-
if (strcasecmp($7,"MODE"))
2715-
{
2716-
sprintf(errortext,"syntax error at or near\"%s\"", $7);
2717-
yyerror(errortext);
2718-
}
2719-
if (strcasecmp($5,"ACCESS"))
2720-
{
2721-
sprintf(errortext,"syntax error at or near\"%s\"", $5);
2722-
yyerror(errortext);
2723-
}
2724-
if (strcasecmp($6,"SHARE") && strcasecmp($6,"EXCLUSIVE"))
2725-
{
2726-
sprintf(errortext,"syntax error at or near\"%s\"", $6);
2727-
yyerror(errortext);
2728-
}
2729-
2730-
$$=cat3_str(cat5_str(make1_str("lock"),$2,$3, make1_str("in"),$5),$6,$7);
2731-
}
2732-
|LOCK_Popt_tablerelation_nameINIDENTIDENT
2684+
LockStmt:LOCK_Popt_tablerelation_nameopt_lock
27332685
{
2734-
if (strcasecmp($6,"MODE"))
2735-
{
2736-
sprintf(errortext,"syntax error at or near\"%s\"", $6);
2737-
yyerror(errortext);
2738-
}
2739-
if (strcasecmp($5,"SHARE") && strcasecmp($5,"EXCLUSIVE"))
2740-
{
2741-
sprintf(errortext,"syntax error at or near\"%s\"", $5);
2742-
yyerror(errortext);
2743-
}
2744-
2745-
$$=cat2_str(cat5_str(make1_str("lock"),$2,$3, make1_str("in"),$5),$6);
2686+
$$ = cat4_str(make1_str("lock"),$2,$3,$4);
27462687
}
27472688
;
27482689

2749-
opt_lmode:IDENT {$$ =$1; }
2750-
|/*EMPTY*/ {$$ = make1_str("");}
2690+
opt_lock:lock_typeMODE{$$ =cat2_str($1, make1_str("mode")); }
2691+
|/*EMPTY*/{$$ = make1_str("");}
27512692
;
27522693

2694+
lock_type:SHAREROWEXCLUSIVE {$$ = make1_str("share row exclusive"); }
2695+
|ROWopt_lmode {$$ = cat2_str(make1_str("row"),$2);}
2696+
|ACCESSopt_lmode {$$ = cat2_str(make1_str("access"),$2);}
2697+
|opt_lmode {$$ =$1; }
2698+
;
27532699

2754-
2700+
opt_lmode:SHARE {$$ = make1_str("share"); }
2701+
|EXCLUSIVE {$$ = make1_str("exclusive"); }
2702+
;
27552703

27562704
/*****************************************************************************
27572705
*
@@ -3397,9 +3345,6 @@ opt_decimal: '(' Iconst ',' Iconst ')'
33973345

33983346
/* SQL92 character data types
33993347
* The following implements CHAR() and VARCHAR().
3400-
* We do it here instead of the 'Generic' production
3401-
* because we don't want to allow arrays of VARCHAR().
3402-
* I haven't thought about whether that will work or not.
34033348
*- ay 6/95
34043349
*/
34053350
Character:character'('Iconst')'
@@ -4427,12 +4372,14 @@ TypeId: ColId
44274372
ColId:ident{$$ =$1; }
44284373
|datetime{$$ =$1; }
44294374
|ABSOLUTE{$$ = make1_str("absolute"); }
4375+
|ACCESS{$$ = make1_str("access"); }
44304376
|ACTION{$$ = make1_str("action"); }
44314377
|AFTER{$$ = make1_str("after"); }
44324378
|AGGREGATE{$$ = make1_str("aggregate"); }
44334379
|BACKWARD{$$ = make1_str("backward"); }
44344380
|BEFORE{$$ = make1_str("before"); }
44354381
|CACHE{$$ = make1_str("cache"); }
4382+
|COMMITTED{$$ = make1_str("committed"); }
44364383
|CREATEDB{$$ = make1_str("createdb"); }
44374384
|CREATEUSER{$$ = make1_str("createuser"); }
44384385
|CYCLE{$$ = make1_str("cycle"); }
@@ -4441,6 +4388,7 @@ ColId: ident{ $$ = $1; }
44414388
|DOUBLE{$$ = make1_str("double"); }
44424389
|EACH{$$ = make1_str("each"); }
44434390
|ENCODING{$$ = make1_str("encoding"); }
4391+
|EXCLUSIVE{$$ = make1_str("exclusive"); }
44444392
|FORWARD{$$ = make1_str("forward"); }
44454393
|FUNCTION{$$ = make1_str("function"); }
44464394
|HANDLER{$$ = make1_str("handler"); }
@@ -4457,6 +4405,7 @@ ColId: ident{ $$ = $1; }
44574405
|MATCH{$$ = make1_str("match"); }
44584406
|MAXVALUE{$$ = make1_str("maxvalue"); }
44594407
|MINVALUE{$$ = make1_str("minvalue"); }
4408+
|MODE{$$ = make1_str("mode"); }
44604409
|NEXT{$$ = make1_str("next"); }
44614410
|NOCREATEDB{$$ = make1_str("nocreatedb"); }
44624411
|NOCREATEUSER{$$ = make1_str("nocreateuser"); }
@@ -4481,6 +4430,8 @@ ColId: ident{ $$ = $1; }
44814430
|SCROLL{$$ = make1_str("scroll"); }
44824431
|SEQUENCE {$$ = make1_str("sequence"); }
44834432
|SERIAL{$$ = make1_str("serial"); }
4433+
|SERIALIZABLE{$$ = make1_str("serializable"); }
4434+
|SHARE{$$ = make1_str("share"); }
44844435
|START{$$ = make1_str("start"); }
44854436
|STATEMENT{$$ = make1_str("statement"); }
44864437
|STDIN {$$ = make1_str("stdin"); }

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ exec sql end declare section;
7474
exec sql close cur;
7575

7676
/* and now the same query with prepare */
77-
exec sql prepare MM from:query;
77+
exec sql prepare MM from"select name, born, age, married, children from meskes where name = ?";
7878
exec sql declare prep cursor for MM;
7979

8080
strcpy(msg, "open");

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp