Re: Improve tab completion for COPY

Masahiko Sawada <sawada.mshk@gmail.com>

From: Masahiko Sawada <sawada.mshk@gmail.com>
To: Yugo Nagata <nagata@sraoss.co.jp>
Cc: torikoshia <torikoshia@oss.nttdata.com>, Pgsql Hackers <pgsql-hackers@postgresql.org>
Date: 2025-05-07T21:36:35Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix tab-completion for COPY and \copy options.

  2. Add tab completion for REJECT_LIMIT option.

  3. Allow "COPY table TO" command to copy rows from materialized views.

  4. Add REJECT_LIMIT option to the COPY command.

On Wed, May 7, 2025 at 6:23 AM Yugo Nagata <nagata@sraoss.co.jp> wrote:
>
> On Wed, 7 May 2025 15:39:26 +0900
> torikoshia <torikoshia@oss.nttdata.com> wrote:
>
> > Hi,
> >
> > I noticed that REJECT_LIMIT, an option available for COPY FROM, is not
> > currently supported in psql's tab completion.
> >
> > Additionally, some options are only valid for COPY FROM or COPY TO, i.e.
> > FREEZE, ON_ERROR, FORCE_QUOTE, but psql currently suggests them for both
> > COPY FROM and COPY TO.
> > As the number of COPY options continues to grow, I feel that having
> > irrelevant suggestions makes tab completion noisier.
>
> Indeed eliminating irrelevant suggestions would improve user experience,

+1

> but I think there is a drawback that it increases code maintenance for
> adding options used both in COPY FROM and TO. This might be trivial until
> the number of common options are small as now, though.
>
> Perhaps, the redundant code could be reduced by preparing a list (an array
> of const char*) containing common options part, then appending options
> specific to each mode using some function like kind of append_variable_names,
> and passing these lists to COMPLETE_WITH_LIST.

Or we can simply #define the common option list and #define two lists
for COPY TO and COPY FROM by concatenating the common option list,
like we do for ALTER PROCEDURE/ROUTINE/FUNCTION options.

Regards,

-- 
Masahiko Sawada
Amazon Web Services: https://aws.amazon.com