@@ -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" ); }