On 2024-Jan-23, jian he wrote: > > + | FORMAT_LA copy_generic_opt_arg > > + { > > + $$ = makeDefElem("format", $2, @1); > > + } > > ; > > > > I think it's not necessary. "format" option is already handled in > > copy_generic_opt_elem. > > test it, I found out this part is necessary. > because a query with WITH like `copy (select 1) to stdout with > (format json, force_array false); ` will fail.
Right, because "FORMAT JSON" is turned into FORMAT_LA JSON by parser.c (see base_yylex there). I'm not really sure but I think it might be better to make it "| FORMAT_LA JSON" instead of invoking the whole copy_generic_opt_arg syntax. Not because of performance, but just because it's much clearer what's going on. -- Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/