@@ -192,8 +192,8 @@ make_name(void)
192
192
PARTIAL , PATH_P , POSITION , PRECISION , PRIMARY , PRIOR , PRIVILEGES , PROCEDURE , PUBLIC ,
193
193
READ , REFERENCES , RELATIVE , REVOKE , RIGHT , ROLLBACK ,
194
194
SCHEMA , SCROLL , SECOND_P , SELECT , SESSION , SESSION_USER , SET , SOME , SUBSTRING ,
195
- TABLE , TEMPORARY , THEN , TIME , TIMESTAMP , TIMEZONE_HOUR ,
196
- TIMEZONE_MINUTE , TO , TRAILING , TRANSACTION , TRIM , TRUE_P ,
195
+ TABLE , TEMPORARY , THEN , TIME , TIMESTAMP
196
+ TO , TRAILING , TRANSACTION , TRIM , TRUE_P ,
197
197
UNENCRYPTED , UNION , UNIQUE , UNKNOWN , UPDATE , USER , USING ,
198
198
VALUES , VARCHAR , VARYING , VIEW ,
199
199
WHEN , WHERE , WITH , WITHOUT , WORK , YEAR_P , ZONE
@@ -335,7 +335,7 @@ make_name(void)
335
335
%type <str> opt_level opt_lock lock_type OptGroupList OptGroupElem
336
336
%type <str> OptConstrFromTable OptTempTableName StringConst
337
337
%type <str> constraints_set_list constraints_set_namelist
338
- %type <str> constraints_set_mode comment_type
338
+ %type <str> constraints_set_mode comment_type opt_empty_parentheses
339
339
%type <str> CreateGroupStmt AlterGroupStmt DropGroupStmt key_delete
340
340
%type <str> opt_force key_update CreateSchemaStmt PosIntStringConst
341
341
%type <str> IntConst PosIntConst grantee_list func_type opt_or_replace
@@ -1693,7 +1693,7 @@ comment_text: StringConst { $$ = $1; }
1693
1693
1694
1694
GrantStmt : GRANT privileges ON opt_table relation_name_list TO grantee_list opt_with_grant
1695
1695
{
1696
- $$ = cat_str(8 , make_str(" grant" ), $2 , make_str(" on" ), $4 , $5 , make_str(" to" ), $7 );
1696
+ $$ = cat_str(7 , make_str(" grant" ), $2 , make_str(" on" ), $4 , $5 , make_str(" to" ), $7 );
1697
1697
}
1698
1698
;
1699
1699
@@ -3064,19 +3064,19 @@ bit: BIT opt_varying
3064
3064
* The following implements CHAR() and VARCHAR().
3065
3065
* - ay 6/95
3066
3066
*/
3067
- Character : character ' (' PosIntConst ' )'
3067
+ Character : character ' (' PosIntConst ' )' opt_charset
3068
3068
{
3069
- $$ = cat_str(4 , $1 , make_str(" (" ), $3 , make_str(" )" ));
3069
+ $$ = cat_str(5 , $1 , make_str(" (" ), $3 , make_str(" )" ), $5 );
3070
3070
}
3071
- | character
3071
+ | character opt_charset
3072
3072
{
3073
- $$ = $1 ;
3073
+ $$ = cat2_str( $1 , $2 ) ;
3074
3074
}
3075
3075
;
3076
3076
3077
- character : CHARACTER opt_varying opt_charset
3077
+ character : CHARACTER opt_varying
3078
3078
{
3079
- $$ = cat_str( 3 , make_str(" character" ), $2 , $3 );
3079
+ $$ = cat2_str( make_str(" character" ), $2 );
3080
3080
}
3081
3081
| CHAR opt_varying { $$ = cat2_str(make_str(" char" ), $2 ); }
3082
3082
| VARCHAR { $$ = make_str(" varchar" ); }
@@ -3101,10 +3101,18 @@ ConstDatetime: datetime
3101
3101
{
3102
3102
$$ = $1 ;
3103
3103
}
3104
+ | TIMESTAMP ' (' PosIntConst ' )' opt_timezone
3105
+ {
3106
+ $$ = cat_str(4 , make_str(" timestamp(" ), $3 , make_str(" )" ), $5 );
3107
+ }
3104
3108
| TIMESTAMP opt_timezone
3105
3109
{
3106
3110
$$ = cat2_str(make_str(" timestamp" ), $2 );
3107
3111
}
3112
+ | TIME ' (' PosIntConst ' )' opt_timezone
3113
+ {
3114
+ $$ = cat_str(4 , make_str(" time(" ), $3 , make_str(" )" ), $5 );
3115
+ }
3108
3116
| TIME opt_timezone
3109
3117
{
3110
3118
$$ = cat2_str(make_str(" time" ), $2 );
@@ -3439,36 +3447,24 @@ c_expr: attr
3439
3447
{ $$ = cat2_str($1 , make_str(" (*)" )); }
3440
3448
| CURRENT_DATE
3441
3449
{ $$ = make_str(" current_date" ); }
3442
- | CURRENT_TIME
3443
- { $$ = make_str(" current_time" ); }
3450
+ | CURRENT_TIME opt_empty_parentheses
3451
+ { $$ = cat2_str( make_str(" current_time" ), $2 ); }
3444
3452
| CURRENT_TIME ' (' PosIntConst ' )'
3445
3453
{
3446
- if (atol($3 ) != 0 )
3447
- {
3448
- sprintf (errortext, " CURRENT_TIME(%s) precision not implemented; backend will use zero instead" , $3 );
3449
- mmerror (ET_NOTICE, errortext);
3450
- }
3451
-
3452
3454
$$ = make_str(" current_time" );
3453
3455
}
3454
- | CURRENT_TIMESTAMP
3455
- { $$ = make_str(" current_timestamp" ); }
3456
+ | CURRENT_TIMESTAMP opt_empty_parentheses
3457
+ { $$ = cat2_str( make_str(" current_timestamp" ), $2 ); }
3456
3458
| CURRENT_TIMESTAMP ' (' PosIntConst ' )'
3457
3459
{
3458
- if (atol($3 ) != 0 )
3459
- {
3460
- sprintf (errortext, " CURRENT_TIMESTAMP(%s) precision not implemented; backend will use zero instead" , $3 );
3461
- mmerror (ET_NOTICE, errortext);
3462
- }
3463
-
3464
3460
$$ = make_str(" current_timestamp" );
3465
3461
}
3466
- | CURRENT_USER
3467
- { $$ = make_str(" current_user" ); }
3468
- | SESSION_USER
3469
- { $$ = make_str(" session_user" ); }
3470
- | USER
3471
- { $$ = make_str(" user" ); }
3462
+ | CURRENT_USER opt_empty_parentheses
3463
+ { $$ = cat2_str( make_str(" current_user" ), $2 ); }
3464
+ | SESSION_USER opt_empty_parentheses
3465
+ { $$ = cat2_str( make_str(" session_user" ), $2 ); }
3466
+ | USER opt_empty_parentheses
3467
+ { $$ = cat2_str( make_str(" user" ), $2 ); }
3472
3468
| EXTRACT ' (' extract_list ' )'
3473
3469
{ $$ = cat_str(3 , make_str(" extract(" ), $3 , make_str(" )" )); }
3474
3470
| POSITION ' (' position_list ' )'
@@ -3528,8 +3524,6 @@ extract_list: extract_arg FROM a_expr
3528
3524
extract_arg : datetime { $$ = $1 ; }
3529
3525
| SCONST { $$ = $1 ; }
3530
3526
| IDENT { $$ = $1 ; }
3531
- | TIMEZONE_HOUR { $$ = make_str(" timezone_hour" ); }
3532
- | TIMEZONE_MINUTE { $$ = make_str(" timezone_minute" ); }
3533
3527
;
3534
3528
3535
3529
/* position_list uses b_expr not a_expr to avoid conflict with general IN */
@@ -3663,6 +3657,8 @@ attrs: attr_name
3663
3657
{ $$ = make2_str($1 , make_str(" .*" )); }
3664
3658
;
3665
3659
3660
+ opt_empty_parentheses : ' (' ' )' { $$ = make_str(" ()" ); }
3661
+ | /* EMPTY*/ { $$ = EMPTY; }
3666
3662
3667
3663
/* ****************************************************************************
3668
3664
*
@@ -5063,8 +5059,6 @@ TokenId: ABSOLUTE { $$ = make_str("absolute"); }
5063
5059
| TEMP { $$ = make_str(" temp" ); }
5064
5060
| TEMPLATE { $$ = make_str(" template" ); }
5065
5061
| TEMPORARY { $$ = make_str(" temporary" ); }
5066
- | TIMEZONE_HOUR { $$ = make_str(" timezone_hour" ); }
5067
- | TIMEZONE_MINUTE { $$ = make_str(" timezone_minute" ); }
5068
5062
| TOAST { $$ = make_str(" toast" ); }
5069
5063
| TRIGGER { $$ = make_str(" trigger" ); }
5070
5064
| TRUNCATE { $$ = make_str(" truncate" ); }
@@ -5092,8 +5086,6 @@ ECPGColId: ident { $$ = $1; }
5092
5086
| NATIONAL { $$ = make_str(" national" ); }
5093
5087
| NONE { $$ = make_str(" none" ); }
5094
5088
| PATH_P { $$ = make_str(" path_p" ); }
5095
- | TIME { $$ = make_str(" time" ); }
5096
- | TIMESTAMP { $$ = make_str(" timestamp" ); }
5097
5089
| ECPGKeywords { $$ = $1 ; }
5098
5090
;
5099
5091
@@ -5195,6 +5187,8 @@ ECPGColLabel: ECPGColId { $$ = $1; }
5195
5187
| SUBSTRING { $$ = make_str(" substring" ); }
5196
5188
| TABLE { $$ = make_str(" table" ); }
5197
5189
| THEN { $$ = make_str(" then" ); }
5190
+ | TIME { $$ = make_str(" time" ); }
5191
+ | TIMESTAMP { $$ = make_str(" timestamp" ); }
5198
5192
| TO { $$ = make_str(" to" ); }
5199
5193
| TRANSACTION { $$ = make_str(" transaction" ); }
5200
5194
| TRIM { $$ = make_str(" trim" ); }
0 commit comments