@@ -223,7 +223,7 @@ make_name(void)
223
223
* - Todd A. Brandys 1998-01-01?
224
224
*/
225
225
%token ABORT_TRANS , ACCESS , AFTER , AGGREGATE , ANALYZE ,
226
- BACKWARD , BEFORE , BINARY ,
226
+ BACKWARD , BEFORE , BINARY , BIT
227
227
CACHE , CLUSTER , COMMENT , COPY , CREATEDB , CREATEUSER , CYCLE ,
228
228
DATABASE , DELIMITERS , DO ,
229
229
EACH , ENCODING , EXCLUSIVE , EXPLAIN , EXTEND ,
@@ -326,7 +326,7 @@ make_name(void)
326
326
%type <str> CreatePLangStmt IntegerOnly TriggerFuncArgs TriggerFuncArg
327
327
%type <str> ViewStmt LoadStmt CreatedbStmt createdb_opt_encoding
328
328
%type <str> createdb_opt_location opt_encoding AlterTableStmt
329
- %type <str> DropdbStmt ClusterStmt grantee RevokeStmt table_expr
329
+ %type <str> DropdbStmt ClusterStmt grantee RevokeStmt table_expr Bit bit
330
330
%type <str> GrantStmt privileges operation_commalist operation
331
331
%type <str> opt_cursor opt_lmode ConstraintsSetStmt comment_tg
332
332
%type <str> case_expr when_clause_list case_default case_arg when_clause
@@ -2899,6 +2899,7 @@ Typename: SimpleTypename opt_array_bounds
2899
2899
SimpleTypename : Generic { $$ = $1 ; }
2900
2900
| Datetime { $$ = $1 ; }
2901
2901
| Numeric { $$ = $1 ; }
2902
+ | Bit { $$ = $1 ; }
2902
2903
| Character { $$ = $1 ; }
2903
2904
;
2904
2905
@@ -3059,6 +3060,35 @@ opt_decimal: '(' Iconst ',' Iconst ')'
3059
3060
}
3060
3061
;
3061
3062
3063
+ /*
3064
+ * SQL92 bit-field data types
3065
+ * The following implements BIT() and BIT VARYING().
3066
+ */
3067
+ Bit : bit ' (' Iconst ' )'
3068
+ {
3069
+ $$ = cat_str(4 , $1 , make_str(" (" ), $3 , make_str(" )" ));
3070
+ if (atol($3 ) < 1 )
3071
+ {
3072
+ sprintf (errortext," length for type '%s' must be at least 1" ,$1 );
3073
+ mmerror (ET_ERROR, errortext);
3074
+ }
3075
+ else if (atol($3 ) > (MaxAttrSize *sizeof (char )))
3076
+ {
3077
+ sprintf (errortext, " length for type '%s' cannot exceed %ld" , $1 ,
3078
+ (MaxAttrSize * sizeof (char )));
3079
+ }
3080
+ }
3081
+ | bit
3082
+ {
3083
+ $$ = $1 ;
3084
+ }
3085
+ ;
3086
+
3087
+ bit : BIT opt_varying
3088
+ {
3089
+ $$ = cat2_str(make_str(" bit" ), $2 );
3090
+ }
3091
+
3062
3092
/*
3063
3093
* SQL92 character data types
3064
3094
* The following implements CHAR() and VARCHAR().
@@ -3250,6 +3280,8 @@ a_expr: c_expr
3250
3280
* If you add more explicitly-known operators, be sure to add them
3251
3281
* also to b_expr and to the MathOp list above.
3252
3282
*/
3283
+ | ' +' a_expr %prec UMINUS
3284
+ { $$ = cat2_str(make_str(" +" ), $2 ); }
3253
3285
| ' -' a_expr %prec UMINUS
3254
3286
{ $$ = cat2_str(make_str(" -" ), $2 ); }
3255
3287
| ' %' a_expr
@@ -3262,7 +3294,10 @@ a_expr: c_expr
3262
3294
{ $$ = cat2_str(make_str(":"), $2); }
3263
3295
*/
3264
3296
| ' ;' a_expr
3265
- { $$ = cat2_str(make_str(" ;" ), $2 ); }
3297
+ { $$ = cat2_str(make_str(" ;" ), $2 );
3298
+ mmerror (ET_WARN, " The ';' operator is deprecated. Use ln(x) instead."
3299
+ " \n\t This operator will be removed in a future release." );
3300
+ }
3266
3301
| a_expr ' %'
3267
3302
{ $$ = cat2_str($1 , make_str(" %" )); }
3268
3303
| a_expr ' ^'
@@ -3380,7 +3415,10 @@ b_expr: c_expr
3380
3415
{ $$ = cat2_str(make_str(":"), $2); }
3381
3416
*/
3382
3417
| ' ;' b_expr
3383
- { $$ = cat2_str(make_str(" ;" ), $2 ); }
3418
+ { $$ = cat2_str(make_str(" ;" ), $2 );
3419
+ mmerror (ET_WARN, " The ';' operator is deprecated. Use ln(x) instead."
3420
+ " \n\t This operator will be removed in a future release." );
3421
+ }
3384
3422
| b_expr ' %'
3385
3423
{ $$ = cat2_str($1 , make_str(" %" )); }
3386
3424
| b_expr ' ^'
@@ -3810,6 +3848,8 @@ TypeId: ColId
3810
3848
{ $$ = $1 ; }
3811
3849
| numeric
3812
3850
{ $$ = $1 ; }
3851
+ | bit
3852
+ { $$ = $1 ; }
3813
3853
| character
3814
3854
{ $$ = $1 ; }
3815
3855
;
@@ -4884,6 +4924,7 @@ ECPGColId: /* to be used instead of ColId */
4884
4924
| EACH { $$ = make_str(" each" ); }
4885
4925
| ENCODING { $$ = make_str(" encoding" ); }
4886
4926
| EXCLUSIVE { $$ = make_str(" exclusive" ); }
4927
+ | FORCE { $$ = make_str(" force" ); }
4887
4928
| FORWARD { $$ = make_str(" forward" ); }
4888
4929
| FUNCTION { $$ = make_str(" function" ); }
4889
4930
| HANDLER { $$ = make_str(" handler" ); }
@@ -4957,7 +4998,9 @@ ECPGColLabel: ECPGColId { $$ = $1; }
4957
4998
| ABORT_TRANS { $$ = make_str(" abort" ); }
4958
4999
| ANALYZE { $$ = make_str(" analyze" ); }
4959
5000
| BINARY { $$ = make_str(" binary" ); }
5001
+ | BIT { $$ = make_str(" bit" ); }
4960
5002
| CASE { $$ = make_str(" case" ); }
5003
+ | CHARACTER { $$ = make_str(" character" ); }
4961
5004
| CLUSTER { $$ = make_str(" cluster" ); }
4962
5005
| COALESCE { $$ = make_str(" coalesce" ); }
4963
5006
| CONSTRAINT { $$ = make_str(" constraint" ); }
0 commit comments