> On Oct 30, 2026, at 12:40, Suraj Kharage <[email protected]>
> wrote:
>
> Hi,
>
> While browsing the code, found that tab completion for two COPY option values
> does not take the COPY direction into account, so it offers values the server
> rejects.
>
> 1. COPY ... FROM ... WITH (FORMAT <TAB> offers json, but COPY FROM does not
> support it:
>
> =# copy t from '/dev/null' with (format json);
> ERROR: COPY FORMAT JSON is not supported for COPY FROM
>
> 2. COPY ... TO ... WITH (HEADER <TAB> offers MATCH, but it is valid only for
> COPY FROM:
>
> =# copy t to '/dev/null' with (header match);
> ERROR: cannot use "match" with HEADER in COPY TO
>
Good catch.
> The option-name completion already distinguishes the two directions, using
> Copy_from_options and Copy_to_options selected by HeadMatches("COPY|\\copy",
> MatchAny, "FROM"). The value completions for FORMAT and HEADER sit in the
> same block.
>
> The attached patch applies that same HeadMatches check to the FORMAT and
> HEADER rules.
>
> --
>
> Thanks & Regards,
> Suraj kharage,
>
>
>
> enterprisedb.com
> <v1-0001-psql-Fix-tab-completion-of-COPY-FORMAT-and-HEADER.patch>
V1 looks good to me. And I tested it locally, it works for me as expected.
Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/