Re: Add missing tab completion for ALTER TABLE ADD COLUMN IF NOT EXISTS

Kirill Reshke <reshkekirill@gmail.com>

From: Kirill Reshke <reshkekirill@gmail.com>
To: Karina Litskevich <litskevichkarina@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-11-07T11:42:30Z
Lists: pgsql-hackers

Attachments

Hi, thank you for your feedback.

On Wed, 6 Nov 2024 at 20:09, Karina Litskevich
<litskevichkarina@gmail.com> wrote:
>
> Hi Kirill,
>
> I looked through your patches. First of all, please note that TAB
> completion doesn't have to complete all valid grammatical
> constructions. See the comment on the top of tab-complete.in.c:
>
>  * This file implements a somewhat more sophisticated readline "TAB
>  * completion" in psql. It is not intended to be AI, to replace
>  * learning SQL, or to relieve you from thinking about what you're
>  * doing. Also it does not always give you all the syntactically legal
>  * completions, only those that are the most common or the ones that
>  * the programmer felt most like implementing.
>
> Considering this, I don't think 0001 should be accepted as is. Neither
> "IF NOT EXIST" nor "IF EXISTS" appears anywhere in tab-complete.in.c.
> Adding it for the only "ALTER TABLE ... ADD COLUMN" case doesn't seem
> right. Adding it everywhere looks like lots of work of questionable
> utility.

Ok. I dropped this patch from v4.

> 0003 looks good to me. Considering that we already have a completion of
> "CREATE TEMP TABLE ... USING" with table access methods, completion of
> "CREATE TABLE ..." with USING seems reasonable. It’s strange we didn’t
> have this before. Good catch!

Cool.


> I can't judge if 0002 adds useful completion cases, but I noticed that
> you add completion of "DROP/ADD ATTRIBUTE ..." with CASCADE/RESRTICT
> while ignoring "ALTER/RENAME ATTRIBUTE ..." that also can be followed
> by CASCADE/RESRTICT according to the documentation. Is it intentional?


v3-0002 patch actually mixes two types of completion. First one, which
adds a data type completion for ADD ATTRIBUTE, is pretty useful.
similar to existing tab completion for `ALTER TABLE xxx ADD [IF NOT
EXISTS] [COLUMN] yyy `.
The second one (CASCADE/RESTRICT) is dubious, and I'm also not sure if
we really need it, so perhaps we should wait for some other views..
For this reason, I split v3-0002 into two separate patches.


I also want to propose an Access method completion for create M.V.
<foo> using. This is a patch I forgot to attach in my last email.
Please, see v4-0004

-- 
Best regards,
Kirill Reshke

Commits

  1. psql: Tab completion for CREATE MATERIALIZED VIEW ... USING

  2. psql: Tab completion for CREATE TEMP TABLE ... USING

  3. psql: Tab completion for ALTER TYPE ... CASCADE/RESTRICT

  4. psql: Tab completion for ALTER TYPE ... ADD ATTRIBUTE

  5. Add more tab completion for CREATE TABLE in psql