@@ -401,7 +401,7 @@ static TypeName *TableFuncTypeName(List *columns);
401
401
402
402
%type <ival> Iconst SignedIconst
403
403
%type <str> Sconst comment_text notify_payload
404
- %type <str> RoleId opt_granted_by opt_boolean ColId_or_Sconst
404
+ %type <str> RoleId opt_granted_by opt_boolean_or_string ColId_or_Sconst
405
405
%type <list> var_list
406
406
%type <str> ColId ColLabel var_name type_function_name param_name
407
407
%type <node> var_value zone_value
@@ -1320,9 +1320,7 @@ var_list: var_value { $$ = list_make1($1); }
1320
1320
| var_list ' ,' var_value { $$ = lappend($1 , $3 ); }
1321
1321
;
1322
1322
1323
- var_value : opt_boolean
1324
- { $$ = makeStringConst($1 , @1 ); }
1325
- | ColId_or_Sconst
1323
+ var_value : opt_boolean_or_string
1326
1324
{ $$ = makeStringConst($1 , @1 ); }
1327
1325
| NumericOnly
1328
1326
{ $$ = makeAConst($1 , @1 ); }
@@ -1334,11 +1332,16 @@ iso_level: READ UNCOMMITTED { $$ = "read uncommitted"; }
1334
1332
| SERIALIZABLE { $$ = " serializable" ; }
1335
1333
;
1336
1334
1337
- opt_boolean :
1335
+ opt_boolean_or_string :
1338
1336
TRUE_P { $$ = " true" ; }
1339
1337
| FALSE_P { $$ = " false" ; }
1340
1338
| ON { $$ = " on" ; }
1341
- | OFF { $$ = " off" ; }
1339
+ /*
1340
+ * OFF is also accepted as a boolean value, but is handled
1341
+ * by the ColId rule below. The action for booleans and strings
1342
+ * is the same, so we don't need to distinguish them here.
1343
+ */
1344
+ | ColId_or_Sconst { $$ = $1 }
1342
1345
;
1343
1346
1344
1347
/* Timezone values can be:
@@ -2167,8 +2170,7 @@ copy_generic_opt_elem:
2167
2170
;
2168
2171
2169
2172
copy_generic_opt_arg :
2170
- opt_boolean { $$ = (Node *) makeString($1 ); }
2171
- | ColId_or_Sconst { $$ = (Node *) makeString($1 ); }
2173
+ opt_boolean_or_string { $$ = (Node *) makeString($1 ); }
2172
2174
| NumericOnly { $$ = (Node *) $1 ; }
2173
2175
| ' *' { $$ = (Node *) makeNode(A_Star); }
2174
2176
| ' (' copy_generic_opt_arg_list ' )' { $$ = (Node *) $2 ; }
@@ -2188,8 +2190,7 @@ copy_generic_opt_arg_list:
2188
2190
2189
2191
/* beware of emitting non-string list elements here; see commands/define.c */
2190
2192
copy_generic_opt_arg_list_item :
2191
- opt_boolean { $$ = (Node *) makeString($1 ); }
2192
- | ColId_or_Sconst { $$ = (Node *) makeString($1 ); }
2193
+ opt_boolean_or_string { $$ = (Node *) makeString($1 ); }
2193
2194
;
2194
2195
2195
2196
@@ -6983,8 +6984,7 @@ explain_option_name:
6983
6984
;
6984
6985
6985
6986
explain_option_arg:
6986
- opt_boolean { $$ = (Node *) makeString($1 ); }
6987
- | ColId_or_Sconst { $$ = (Node *) makeString($1 ); }
6987
+ opt_boolean_or_string { $$ = (Node *) makeString($1 ); }
6988
6988
| NumericOnly { $$ = (Node *) $1 ; }
6989
6989
| /* EMPTY */ { $$ = NULL ; }
6990
6990
;
@@ -10958,6 +10958,7 @@ unreserved_keyword:
10958
10958
| NULLS_P
10959
10959
| OBJECT_P
10960
10960
| OF
10961
+ | OFF
10961
10962
| OIDS
10962
10963
| OPERATOR
10963
10964
| OPTION
@@ -11214,7 +11215,6 @@ reserved_keyword:
11214
11215
| LOCALTIMESTAMP
11215
11216
| NOT
11216
11217
| NULL_P
11217
- | OFF
11218
11218
| OFFSET
11219
11219
| ON
11220
11220
| ONLY
0 commit comments