Re: Improve tab completion for COPY

torikoshia <torikoshia@oss.nttdata.com>

From: torikoshia <torikoshia@oss.nttdata.com>
To: Yugo Nagata <nagata@sraoss.co.jp>, sawada.mshk@gmail.com
Cc: Pgsql Hackers <pgsql-hackers@postgresql.org>
Date: 2025-05-08T12:39:10Z
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.

Attachments

Thanks for your comments!

On 2025-05-08 08:53, Yugo Nagata wrote:
> On Wed, 7 May 2025 14:36:35 -0700
> Masahiko Sawada <sawada.mshk@gmail.com> wrote:
> 
>> 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.
> 
> +1

Agreed.
I think attached patch implemented the suggested way.

-- 
Regards,

--
Atsushi Torikoshi
Seconded from NTT DATA GROUP CORPORATION to SRA OSS K.K.