Thread: Improve tab completion for COPY

Improve tab completion for COPY

From
torikoshia
Date:
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.

Attached patch splits the tab completion rules between COPY FROM and 
COPY TO, so that only the appropriate options are suggested for each.

What do you think?


Regards,

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

Re: Improve tab completion for COPY

From
Yugo Nagata
Date:
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,
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.

Regards,
Yugo Nagata

> Attached patch splits the tab completion rules between COPY FROM and 
> COPY TO, so that only the appropriate options are suggested for each.
> 
> What do you think?
> 
> 
> Regards,
> 
> --
> Atsushi Torikoshi
> Seconded from NTT DATA GROUP CORPORATION to SRA OSS K.K.


-- 
Yugo Nagata <nagata@sraoss.co.jp>



Re: Improve tab completion for COPY

From
Yugo Nagata
Date:
On Thu, 8 May 2025 21:39:10 +0900
torikoshia <torikoshia@oss.nttdata.com> wrote:

> 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.

Thank you for updating the patch.
It looks good and I confirmed that this works as expected.

Regards,
Yugo Nagata

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


-- 
Yugo Nagata <nagata@sraoss.co.jp>