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

Commit e97fe98

Browse files
author
Michael Meskes
committed
synced preproc.y with gram.y
1 parent 6ec5eaa commit e97fe98

File tree

2 files changed

+47
-18
lines changed

2 files changed

+47
-18
lines changed

src/interfaces/ecpg/ChangeLog

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1138,5 +1138,9 @@ Thu Oct 18 12:57:04 CEST 2001
11381138
Fri Oct 19 16:32:06 CEST 2001
11391139

11401140
- Removed "not yet fully implemented" warnig for nullif.
1141+
1142+
Sun Oct 21 14:19:42 CEST 2001
1143+
1144+
- Synced preproc.y with gram.y.
11411145
- Set ecpg version to 2.9.0.
11421146
- Set library version to 3.3.0.

src/interfaces/ecpg/preproc/preproc.y

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -833,7 +833,21 @@ opt_boolean: TRUE_P { $$ = make_str("true"); }
833833
| OFF { $$ = make_str("off"); }
834834
;
835835

836-
zone_value: StringConst { $$ = $1; }
836+
/* Timezone values can be:
837+
* - a string such as 'pst8pdt'
838+
* - an integer or floating point number
839+
* - a time interval per SQL99
840+
*/
841+
zone_value: StringConst { $$ = $1; }
842+
| ConstInterval StringConst opt_interval
843+
{
844+
$$ = cat_str(3, $1, $2, $3);
845+
}
846+
| ConstInterval '(' PosIntConst ')' StringConst opt_interval
847+
{
848+
$$ = cat_str(6, $1, make_str("("), $3, make_str(")"), $5, $6);
849+
}
850+
| NumConst { $$ = $1; }
837851
| DEFAULT { $$ = make_str("default"); }
838852
| LOCAL { $$ = make_str("local"); }
839853
;
@@ -844,7 +858,7 @@ opt_encoding: StringConst { $$ = $1; }
844858
;
845859

846860
ColId_or_Sconst: ColId { $$ = $1; }
847-
| SCONST { $$ = $1; }
861+
| StringConst { $$ = $1; }
848862
;
849863

850864
VariableShowStmt: SHOW ColId
@@ -2950,8 +2964,9 @@ Iresult: PosIntConst { $$ = atol($1); }
29502964
| Iresult '%' Iresult { $$ = $1 % $3; }
29512965
;
29522966

2953-
SimpleTypename: ConstTypename { $$ = $1; }
2954-
| ConstInterval { $$ = $1; }
2967+
SimpleTypename: ConstTypename { $$ = $1; }
2968+
| ConstInterval opt_interval { $$ = cat2_str($1, $2); }
2969+
| ConstInterval '(' PosIntConst ')' opt_interval { $$ = cat_str(5, $1, make_str("("), $3, make_str(")"), $5); }
29552970
;
29562971

29572972
ConstTypename: Generic { $$ = $1; }
@@ -3120,9 +3135,9 @@ ConstDatetime: datetime
31203135
}
31213136
;
31223137

3123-
ConstInterval: INTERVAL opt_interval
3138+
ConstInterval: INTERVAL
31243139
{
3125-
$$ = cat2_str(make_str("interval"), $2);
3140+
$$ = make_str("interval");
31263141
}
31273142
;
31283143

@@ -3139,15 +3154,20 @@ opt_timezone: WITH TIME ZONE { $$ = make_str("with time zone"); }
31393154
| /*EMPTY*/ { $$ = EMPTY; }
31403155
;
31413156

3142-
opt_interval: datetime { $$ = $1; }
3143-
| YEAR_P TO MONTH_P { $$ = make_str("year to #month"); }
3144-
| DAY_P TO HOUR_P { $$ = make_str("day to hour"); }
3145-
| DAY_P TO MINUTE_P { $$ = make_str("day to minute"); }
3146-
| DAY_P TO SECOND_P { $$ = make_str("day to second"); }
3147-
| HOUR_P TO MINUTE_P { $$ = make_str("hour to minute"); }
3148-
| MINUTE_P TO SECOND_P { $$ = make_str("minute to second"); }
3149-
| HOUR_P TO SECOND_P { $$ = make_str("hour to second"); }
3150-
| /*EMPTY*/ { $$ = EMPTY; }
3157+
opt_interval: YEAR_P { $$ = make_str("year"); }
3158+
| MONTH_P { $$ = make_str("month"); }
3159+
| DAY_P { $$ = make_str("day"); }
3160+
| HOUR_P { $$ = make_str("hour"); }
3161+
| MINUTE_P { $$ = make_str("minute"); }
3162+
| SECOND_P { $$ = make_str("second"); }
3163+
| YEAR_P TO MONTH_P { $$ = make_str("year to month"); }
3164+
| DAY_P TO HOUR_P { $$ = make_str("day to hour"); }
3165+
| DAY_P TO MINUTE_P { $$ = make_str("day to minute"); }
3166+
| DAY_P TO SECOND_P { $$ = make_str("day to second"); }
3167+
| HOUR_P TO MINUTE_P { $$ = make_str("hour to minute"); }
3168+
| MINUTE_P TO SECOND_P { $$ = make_str("minute to second"); }
3169+
| HOUR_P TO SECOND_P { $$ = make_str("hour to second"); }
3170+
| /*EMPTY*/ { $$ = EMPTY; }
31513171
;
31523172

31533173

@@ -3523,7 +3543,7 @@ extract_list: extract_arg FROM a_expr
35233543
*/
35243544

35253545
extract_arg: datetime { $$ = $1; }
3526-
| SCONST { $$ = $1; }
3546+
| StringConst { $$ = $1; }
35273547
| IDENT { $$ = $1; }
35283548
;
35293549

@@ -3761,6 +3781,10 @@ AexprConst: PosAllConst
37613781
{
37623782
$$ = cat_str(3, $1, $2, $3);
37633783
}
3784+
| ConstInterval '(' PosIntConst ')' StringConst opt_interval
3785+
{
3786+
$$ = cat_str(6, $1, make_str("("), $3, make_str(")"), $5, $6);
3787+
}
37643788
| ParamNo
37653789
{ $$ = $1; }
37663790
| TRUE_P
@@ -5081,7 +5105,6 @@ ECPGColId: ident { $$ = $1; }
50815105
| TYPE_P { $$ = make_str("type"); }
50825106
| datetime { $$ = $1; }
50835107
| TokenId { $$ = $1; }
5084-
| INTERVAL { $$ = make_str("interval"); }
50855108
| NATIONAL { $$ = make_str("national"); }
50865109
| NONE { $$ = make_str("none"); }
50875110
| PATH_P { $$ = make_str("path_p"); }
@@ -5140,11 +5163,13 @@ ECPGColLabel: ECPGColId { $$ = $1; }
51405163
| GROUP { $$ = make_str("group"); }
51415164
| HAVING { $$ = make_str("having"); }
51425165
| ILIKE { $$ = make_str("ilike"); }
5166+
| IN { $$ = make_str("in"); }
51435167
| INITIALLY { $$ = make_str("initially"); }
51445168
| INNER_P { $$ = make_str("inner"); }
5169+
| INOUT { $$ = make_str("inout"); }
51455170
| INTERSECT { $$ = make_str("intersect"); }
5171+
| INTERVAL { $$ = make_str("interval"); }
51465172
| INTO { $$ = make_str("into"); }
5147-
| INOUT { $$ = make_str("inout"); }
51485173
| JOIN { $$ = make_str("join"); }
51495174
| LEADING { $$ = make_str("leading"); }
51505175
| LEFT { $$ = make_str("left"); }

0 commit comments

Comments
 (0)