Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit d78feff

Browse files
author
Michael Meskes
committed
*** empty log message ***
1 parent 607c6d2 commit d78feff

File tree

3 files changed

+69
-40
lines changed

3 files changed

+69
-40
lines changed

src/interfaces/ecpg/ChangeLog

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -906,5 +906,10 @@ Wed Apr 5 07:54:56 CEST 2000
906906
Wed Apr 5 17:35:53 CEST 2000
907907

908908
- Fixed handling of bool variables.
909+
910+
Sat Apr 8 13:10:12 CEST 2000
911+
912+
- Synced preproc.y with gram.y.
913+
- Synced keyword.c.
909914
- Set library version to 3.1.0.
910915
- Set ecpg version to 2.7.0.

src/interfaces/ecpg/preproc/keywords.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/keywords.c,v 1.25 2000/03/23 07:53:48 meskes Exp $
11+
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/keywords.c,v 1.26 2000/04/08 12:20:27 meskes Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -222,6 +222,7 @@ static ScanKeyword ScanKeywords[] = {
222222
{"setof", SETOF},
223223
{"share", SHARE},
224224
{"show", SHOW},
225+
{"some", SOME},
225226
{"start", START},
226227
{"statement", STATEMENT},
227228
{"stdin", STDIN},

src/interfaces/ecpg/preproc/preproc.y

Lines changed: 62 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ make_name(void)
199199
OF, ON, ONLY, OPTION, OR, ORDER, OUTER_P, OVERLAPS,
200200
PARTIAL, POSITION, PRECISION, PRIMARY, PRIOR, PRIVILEGES, PROCEDURE, PUBLIC,
201201
READ, REFERENCES, RELATIVE, REVOKE, RIGHT, ROLLBACK,
202-
SCROLL, SECOND_P, SELECT, SESSION_USER, SET, SUBSTRING,
202+
SCROLL, SECOND_P, SELECT, SESSION_USER, SET, SOME, SUBSTRING,
203203
TABLE, TEMPORARY, THEN, TIME, TIMESTAMP, TIMEZONE_HOUR,
204204
TIMEZONE_MINUTE, TO, TRAILING, TRANSACTION, TRIM, TRUE_P,
205205
UNION, UNIQUE, UPDATE, USER, USING,
@@ -280,7 +280,7 @@ make_name(void)
280280
%type <str> key_match ColLabel SpecialRuleRelation ColId columnDef
281281
%type <str> ColConstraint ColConstraintElem NumericOnly FloatOnly
282282
%type <str> OptTableElementList OptTableElement TableConstraint
283-
%type <str> ConstraintElem key_actions ColQualList
283+
%type <str> ConstraintElem key_actions ColQualList TokenId
284284
%type <str> target_list target_el update_target_list alias_clause
285285
%type <str> update_target_el opt_id relation_name database_name
286286
%type <str> access_method attr_name class index_name name func_name
@@ -292,7 +292,7 @@ make_name(void)
292292
%type <str> Typename SimpleTypename Generic Numeric generic opt_float opt_numeric
293293
%type <str> opt_decimal Character character opt_varying opt_charset
294294
%type <str> opt_collate Datetime datetime opt_timezone opt_interval
295-
%type <str> row_expr row_descriptor row_list
295+
%type <str> row_expr row_descriptor row_list typename numeric
296296
%type <str> SelectStmt SubSelect result OptTemp ConstraintAttributeSpec
297297
%type <str> opt_table opt_all sort_clause sortby_list ConstraintAttr
298298
%type <str> sortby OptUseOp opt_inh_star relation_name_list name_list
@@ -306,7 +306,7 @@ make_name(void)
306306
%type <str> ClosePortalStmt DropStmt VacuumStmt opt_verbose func_arg
307307
%type <str> opt_analyze opt_va_list va_list ExplainStmt index_params
308308
%type <str> index_list func_index index_elem opt_type opt_class access_method_clause
309-
%type <str> index_opt_unique IndexStmt func_return def_rest
309+
%type <str> index_opt_unique IndexStmt func_return
310310
%type <str> func_args_list func_args opt_with ProcedureStmt def_arg
311311
%type <str> def_elem def_list definition def_name def_type DefineStmt
312312
%type <str> opt_instead event event_object RuleActionList opt_using
@@ -790,6 +790,8 @@ var_value: Sconst { $$ = $1; }
790790

791791
$$ = $1;
792792
}
793+
/* "OFF" is not a token, so it is handled by the name_list production */
794+
| ON { $$ = make_str("on"); }
793795
| DEFAULT { $$ = make_str("default"); }
794796
;
795797

@@ -1443,17 +1445,18 @@ DropTrigStmt: DROP TRIGGER name ON relation_name
14431445
*
14441446
*****************************************************************************/
14451447

1446-
DefineStmt: CREATE def_type def_rest
1448+
DefineStmt: CREATE def_type def_name definition
14471449
{
1448-
$$ = cat_str(3, make_str("create"), $2, $3);
1450+
$$ = cat_str(3, make_str("create"), $2, $3, $4);
14491451
}
14501452
;
1451-
1453+
/*
14521454
def_rest: def_name definition
14531455
{
14541456
$$ = cat2_str($1, $2);
14551457
}
14561458
;
1459+
*/
14571460

14581461
def_type: OPERATOR { $$ = make_str("operator"); }
14591462
| TYPE_P { $$ = make_str("type"); }
@@ -1462,8 +1465,12 @@ def_type: OPERATOR { $$ = make_str("operator"); }
14621465

14631466
def_name: PROCEDURE { $$ = make_str("procedure"); }
14641467
| JOIN { $$ = make_str("join"); }
1465-
| ColId { $$ = $1; }
14661468
| all_Op { $$ = $1; }
1469+
| typename { $$ = $1; }
1470+
| TokenId { $$ = $1; }
1471+
| INTERVAL { $$ = make_str("interval"); }
1472+
| TIME { $$ = make_str("time"); }
1473+
| TIMESTAMP { $$ = make_str("timestamp"); }
14671474
;
14681475

14691476
definition: '(' def_list ')' { $$ = cat_str(3, make_str("("), $2, make_str(")")); }
@@ -1486,14 +1493,11 @@ def_elem: def_name '=' def_arg {
14861493
}
14871494
;
14881495

1489-
def_arg: ColId { $$ = $1; }
1496+
def_arg: func_return { $$ = $1; }
1497+
| TokenId { $$ = $1; }
14901498
| all_Op { $$ = $1; }
14911499
| NumericOnly { $$ = $1; }
14921500
| Sconst { $$ = $1; }
1493-
| SETOF ColId
1494-
{
1495-
$$ = cat2_str(make_str("setof"), $2);
1496-
}
14971501
;
14981502

14991503
/*****************************************************************************
@@ -2934,6 +2938,13 @@ SimpleTypename: Generic { $$ = $1; }
29342938
| Character { $$ = $1; }
29352939
;
29362940

2941+
typename: generic { $$ = $1; }
2942+
| numeric { $$ = $1; }
2943+
| bit { $$ = $1; }
2944+
| character { $$ = $1; }
2945+
| datetime { $$ = $1; }
2946+
;
2947+
29372948
Generic: generic
29382949
{
29392950
$$ = $1;
@@ -3015,6 +3026,13 @@ Numeric: FLOAT opt_float
30153026
}
30163027
;
30173028

3029+
numeric: FLOAT { $$ = make_str("float"); }
3030+
| DOUBLE PRECISION { $$ = make_str("double precision"); }
3031+
| DECIMAL { $$ = make_str("decimal"); }
3032+
| DEC { $$ = make_str("dec"); }
3033+
| NUMERIC { $$ = make_str("numeric"); }
3034+
;
3035+
30183036
opt_float: '(' Iconst ')'
30193037
{
30203038
if (atol($2) < 1)
@@ -3244,6 +3262,7 @@ row_descriptor: row_list ',' a_expr
32443262
;
32453263

32463264
sub_type: ANY { $$ = make_str("ANY"); }
3265+
| SOME { $$ = make_str("SOME"); }
32473266
| ALL { $$ = make_str("ALL"); }
32483267
;
32493268

@@ -4942,21 +4961,27 @@ opt_symbol: symbol { $$ = $1; }
49424961

49434962
symbol: ColLabel { $$ = $1; };
49444963

4945-
/* These show up as operators, and will screw up the parsing if
4946-
* allowed as identifiers or labels.
4964+
/* Any tokens which show up as operators will screw up the parsing if
4965+
* allowed as identifiers, but are acceptable as ColLabels:
4966+
* BETWEEN, IN, IS, ISNULL, NOTNULL, OVERLAPS
49474967
* Thanks to Tom Lane for pointing this out. - thomas 2000-03-29
4948-
| BETWEEN { $$ = make_str("between"); }
4949-
| IN { $$ = make_str("in"); }
4950-
| IS { $$ = make_str("is"); }
4951-
| ISNULL { $$ = make_str("isnull"); }
4952-
| NOTNULL { $$ = make_str("notnull"); }
4953-
| OVERLAPS { $$ = make_str("overlaps"); }
49544968
*/
49554969
ECPGColId: /* to be used instead of ColId */
49564970
ECPGKeywords { $$ = $1; }
49574971
| ident { $$ = $1; }
4972+
| TokenId { $$ = $1; }
49584973
| datetime { $$ = $1; }
4959-
| ABSOLUTE { $$ = make_str("absolute"); }
4974+
| INTERVAL { $$ = make_str("interval"); }
4975+
| TIME { $$ = make_str("time"); }
4976+
| TIMESTAMP { $$ = make_str("timestamp"); }
4977+
| TYPE_P { $$ = make_str("type"); }
4978+
;
4979+
4980+
/* Parser tokens to be used as identifiers.
4981+
* Tokens involving data types should appear in ColId only,
4982+
* since they will conflict with real TypeName productions.
4983+
*/
4984+
TokenId: ABSOLUTE { $$ = make_str("absolute"); }
49604985
| ACCESS { $$ = make_str("access"); }
49614986
| ACTION { $$ = make_str("action"); }
49624987
| ADD { $$ = make_str("add"); }
@@ -4999,7 +5024,6 @@ ECPGColId: /* to be used instead of ColId */
49995024
| INSENSITIVE { $$ = make_str("insensitive"); }
50005025
| INSERT { $$ = make_str("insert"); }
50015026
| INSTEAD { $$ = make_str("instead"); }
5002-
| INTERVAL { $$ = make_str("interval"); }
50035027
| ISOLATION { $$ = make_str("isolation"); }
50045028
| KEY { $$ = make_str("key"); }
50055029
| LANGUAGE { $$ = make_str("language"); }
@@ -5052,14 +5076,11 @@ ECPGColId: /* to be used instead of ColId */
50525076
| SYSID { $$ = make_str("sysid"); }
50535077
| TEMP { $$ = make_str("temp"); }
50545078
| TEMPORARY { $$ = make_str("temporary"); }
5055-
| TIME { $$ = make_str("time"); }
5056-
| TIMESTAMP { $$ = make_str("timestamp"); }
50575079
| TIMEZONE_HOUR { $$ = make_str("timezone_hour"); }
50585080
| TIMEZONE_MINUTE { $$ = make_str("timezone_minute"); }
50595081
| TRIGGER { $$ = make_str("trigger"); }
50605082
| TRUNCATE { $$ = make_str("truncate"); }
50615083
| TRUSTED { $$ = make_str("trusted"); }
5062-
| TYPE_P { $$ = make_str("type"); }
50635084
| UNLISTEN { $$ = make_str("unlisten"); }
50645085
| UNTIL { $$ = make_str("until"); }
50655086
| UPDATE { $$ = make_str("update"); }
@@ -5073,23 +5094,13 @@ ECPGColId: /* to be used instead of ColId */
50735094
| ZONE { $$ = make_str("zone"); }
50745095
;
50755096

5076-
/* These show up as operators, and will screw up the parsing if
5077-
* allowed as identifiers or labels.
5078-
* Thanks to Tom Lane for pointing this out. - thomas 2000-03-29
5079-
| ALL { $$ = make_str("all"); }
5080-
| ANY { $$ = make_str("any"); }
5081-
| EXCEPT { $$ = make_str("except"); }
5082-
| INTERSECT { $$ = make_str("intersect"); }
5083-
| LIKE { $$ = make_str("like"); }
5084-
| NOT { $$ = make_str("not"); }
5085-
| NULLIF { $$ = make_str("nullif"); }
5086-
| NULL_P { $$ = make_str("null"); }
5087-
| OR { $$ = make_str("or"); }
5088-
*/
50895097
ECPGColLabel: ECPGColId { $$ = $1; }
50905098
| ABORT_TRANS { $$ = make_str("abort"); }
5099+
| ALL { $$ = make_str("all"); }
50915100
| ANALYZE { $$ = make_str("analyze"); }
5101+
| ANY { $$ = make_str("any"); }
50925102
| ASC { $$ = make_str("asc"); }
5103+
| BETWEEN { $$ = make_str("between"); }
50935104
| BINARY { $$ = make_str("binary"); }
50945105
| BIT { $$ = make_str("bit"); }
50955106
| BOTH { $$ = make_str("both"); }
@@ -5118,6 +5129,7 @@ ECPGColLabel: ECPGColId { $$ = $1; }
51185129
| DO { $$ = make_str("do"); }
51195130
| ELSE { $$ = make_str("else"); }
51205131
| END_TRANS { $$ = make_str("end"); }
5132+
| EXCEPT { $$ = make_str("except"); }
51215133
| EXISTS { $$ = make_str("exists"); }
51225134
| EXPLAIN { $$ = make_str("explain"); }
51235135
| EXTEND { $$ = make_str("extend"); }
@@ -5127,15 +5139,20 @@ ECPGColLabel: ECPGColId { $$ = $1; }
51275139
| FOREIGN { $$ = make_str("foreign"); }
51285140
| FROM { $$ = make_str("from"); }
51295141
| FULL { $$ = make_str("full"); }
5142+
| IN { $$ = make_str("in"); }
5143+
| IS { $$ = make_str("is"); }
5144+
| ISNULL { $$ = make_str("isnull"); }
51305145
| GLOBAL { $$ = make_str("global"); }
51315146
| GROUP { $$ = make_str("group"); }
51325147
| HAVING { $$ = make_str("having"); }
51335148
| INITIALLY { $$ = make_str("initially"); }
51345149
| INNER_P { $$ = make_str("inner"); }
5150+
| INTERSECT { $$ = make_str("intersect"); }
51355151
| INTO { $$ = make_str("into"); }
51365152
| JOIN { $$ = make_str("join"); }
51375153
| LEADING { $$ = make_str("leading"); }
51385154
| LEFT { $$ = make_str("left"); }
5155+
| LIKE { $$ = make_str("like"); }
51395156
| LISTEN { $$ = make_str("listen"); }
51405157
| LOAD { $$ = make_str("load"); }
51415158
| LOCK_P { $$ = make_str("lock"); }
@@ -5144,11 +5161,17 @@ ECPGColLabel: ECPGColId { $$ = $1; }
51445161
| NCHAR { $$ = make_str("nchar"); }
51455162
| NEW { $$ = make_str("new"); }
51465163
| NONE { $$ = make_str("none"); }
5164+
| NOT { $$ = make_str("not"); }
5165+
| NOTNULL { $$ = make_str("notnull"); }
5166+
| NULLIF { $$ = make_str("nullif"); }
5167+
| NULL_P { $$ = make_str("null"); }
51475168
| NUMERIC { $$ = make_str("numeric"); }
51485169
| OFFSET { $$ = make_str("offset"); }
51495170
| ON { $$ = make_str("on"); }
5171+
| OR { $$ = make_str("or"); }
51505172
| ORDER { $$ = make_str("order"); }
51515173
| OUTER_P { $$ = make_str("outer"); }
5174+
| OVERLAPS { $$ = make_str("overlaps"); }
51525175
| POSITION { $$ = make_str("position"); }
51535176
| PRECISION { $$ = make_str("precision"); }
51545177
| PRIMARY { $$ = make_str("primary"); }

0 commit comments

Comments
 (0)