@@ -402,7 +402,7 @@ static RangeVar *makeRangeVarFromAnyName(List *names, int position, core_yyscan_
402
402
403
403
%type <ival> Iconst SignedIconst
404
404
%type <str> Sconst comment_text notify_payload
405
- %type <str> RoleId opt_granted_by opt_boolean ColId_or_Sconst
405
+ %type <str> RoleId opt_granted_by opt_boolean_or_string ColId_or_Sconst
406
406
%type <list> var_list
407
407
%type <str> ColId ColLabel var_name type_function_name param_name
408
408
%type <node> var_value zone_value
@@ -1326,9 +1326,7 @@ var_list: var_value { $$ = list_make1($1); }
1326
1326
| var_list ' ,' var_value { $$ = lappend($1 , $3 ); }
1327
1327
;
1328
1328
1329
- var_value : opt_boolean
1330
- { $$ = makeStringConst($1 , @1 ); }
1331
- | ColId_or_Sconst
1329
+ var_value : opt_boolean_or_string
1332
1330
{ $$ = makeStringConst($1 , @1 ); }
1333
1331
| NumericOnly
1334
1332
{ $$ = makeAConst($1 , @1 ); }
@@ -1340,11 +1338,16 @@ iso_level: READ UNCOMMITTED { $$ = "read uncommitted"; }
1340
1338
| SERIALIZABLE { $$ = " serializable" ; }
1341
1339
;
1342
1340
1343
- opt_boolean :
1341
+ opt_boolean_or_string :
1344
1342
TRUE_P { $$ = " true" ; }
1345
1343
| FALSE_P { $$ = " false" ; }
1346
1344
| ON { $$ = " on" ; }
1347
- | OFF { $$ = " off" ; }
1345
+ /*
1346
+ * OFF is also accepted as a boolean value, but is handled
1347
+ * by the ColId rule below. The action for booleans and strings
1348
+ * is the same, so we don't need to distinguish them here.
1349
+ */
1350
+ | ColId_or_Sconst { $$ = $1 }
1348
1351
;
1349
1352
1350
1353
/* Timezone values can be:
@@ -2239,8 +2242,7 @@ copy_generic_opt_elem:
2239
2242
;
2240
2243
2241
2244
copy_generic_opt_arg :
2242
- opt_boolean { $$ = (Node *) makeString($1 ); }
2243
- | ColId_or_Sconst { $$ = (Node *) makeString($1 ); }
2245
+ opt_boolean_or_string { $$ = (Node *) makeString($1 ); }
2244
2246
| NumericOnly { $$ = (Node *) $1 ; }
2245
2247
| ' *' { $$ = (Node *) makeNode(A_Star); }
2246
2248
| ' (' copy_generic_opt_arg_list ' )' { $$ = (Node *) $2 ; }
@@ -2260,8 +2262,7 @@ copy_generic_opt_arg_list:
2260
2262
2261
2263
/* beware of emitting non-string list elements here; see commands/define.c */
2262
2264
copy_generic_opt_arg_list_item :
2263
- opt_boolean { $$ = (Node *) makeString($1 ); }
2264
- | ColId_or_Sconst { $$ = (Node *) makeString($1 ); }
2265
+ opt_boolean_or_string { $$ = (Node *) makeString($1 ); }
2265
2266
;
2266
2267
2267
2268
@@ -7158,8 +7159,7 @@ explain_option_name:
7158
7159
;
7159
7160
7160
7161
explain_option_arg :
7161
- opt_boolean { $$ = (Node *) makeString($1 ); }
7162
- | ColId_or_Sconst { $$ = (Node *) makeString($1 ); }
7162
+ opt_boolean_or_string { $$ = (Node *) makeString($1 ); }
7163
7163
| NumericOnly { $$ = (Node *) $1 ; }
7164
7164
| /* EMPTY */ { $$ = NULL ; }
7165
7165
;
@@ -11184,6 +11184,7 @@ unreserved_keyword:
11184
11184
| NULLS_P
11185
11185
| OBJECT_P
11186
11186
| OF
11187
+ | OFF
11187
11188
| OIDS
11188
11189
| OPERATOR
11189
11190
| OPTION
@@ -11443,7 +11444,6 @@ reserved_keyword:
11443
11444
| LOCALTIMESTAMP
11444
11445
| NOT
11445
11446
| NULL_P
11446
- | OFF
11447
11447
| OFFSET
11448
11448
| ON
11449
11449
| ONLY
0 commit comments