On 27.03.23 20:54, Alvaro Herrera wrote:
Even so, I was unable to get bison
to accept the 'KEY name VALUES blah' syntax; it might be a
fun/challenging project to change the productions that we use for JSON
names and values:

+json_name_and_value:
+/* Supporting this syntax seems to require major surgery
+           KEY c_expr VALUE_P json_value_expr
+               { $$ = makeJsonKeyValue($2, $4); }
+           |
+*/
+           c_expr VALUE_P json_value_expr
+               { $$ = makeJsonKeyValue($1, $3); }
+           |
+           a_expr ':' json_value_expr
+               { $$ = makeJsonKeyValue($1, $3); }
+       ;

If we uncomment the KEY bit there, a bunch of conflicts emerge.

This is a known bug in the SQL standard. Because KEY is a non-reserved keyword, writing

    KEY (x) VALUE y

is ambiguous because KEY could be the keyword for this clause or a function call key(x).

It's ok to leave it like this for now.



Reply via email to