Re: Improve tab completion for ALTER DEFAULT PRIVILEGE and ALTER TABLE

From: vignesh C <vignesh21(at)gmail(dot)com>
To: Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Improve tab completion for ALTER DEFAULT PRIVILEGE and ALTER TABLE
Date: 2024-04-08 06:40:02
Message-ID: CALDaNm17yvBiHQWQwY0+WNpty=GTXfSEdHCgvwvj3Q0G8eCqeA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, 8 Apr 2024 at 10:29, Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com> wrote:
>
> On Fri, Apr 5, 2024 at 1:18 AM vignesh C <vignesh21(at)gmail(dot)com> wrote:
> >
> > On Tue, 2 Apr 2024 at 13:08, Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com> wrote:
> > >
> > > On Mon, Apr 1, 2024 at 10:41 PM vignesh C <vignesh21(at)gmail(dot)com> wrote:
> > > >
> > > > On Thu, 28 Mar 2024 at 13:05, Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com> wrote:
> > > > >
> > > > > Hi,
> > > > >
> > > > > Thank you for the patch!
> > > > >
> > > > > On Mon, Jul 3, 2023 at 12:12 AM vignesh C <vignesh21(at)gmail(dot)com> wrote:
> > > > > >
> > > > > > Hi,
> > > > > >
> > > > > > Improved tab completion for "ALTER DEFAULT PRIVILEGE" and "ALTER TABLE":
> > > > > > 1) GRANT, REVOKE and FOR USER keyword was not displayed in tab
> > > > > > completion of alter default privileges like the below statement:
> > > > > > ALTER DEFAULT PRIVILEGES GRANT INSERT ON tables TO PUBLIC;
> > > > > > ALTER DEFAULT PRIVILEGES REVOKE INSERT ON tables FROM PUBLIC;
> > > > > > ALTER DEFAULT PRIVILEGES FOR USER vignesh revoke INSERT ON tables FROM dba1;
> > > > >
> > > > > +1
> > > > >
> > > > > >
> > > > > > 2) USER was not displayed for "ALTER DEFAULT PRIVILEGES IN SCHEMA
> > > > > > public FOR " like in below statement:
> > > > > > ALTER DEFAULT PRIVILEGES IN SCHEMA public FOR USER dba1 GRANT INSERT
> > > > > > ON TABLES TO PUBLIC;
> > > > >
> > > > > Since there is no difference FOR USER and FOR ROLE, I'm not sure we
> > > > > really want to support both in tab-completion.
> > > >
> > > > I have removed this change
> > > >
> > > > > >
> > > > > > 3) "FOR GRANT OPTION" was not display for "ALTER DEFAULT PRIVILEGES
> > > > > > REVOKE " like in below statement:
> > > > > > alter default privileges revoke grant option for select ON tables FROM dba1;
> > > > >
> > > > > +1. But the v3 patch doesn't cover the following case:
> > > > >
> > > > > =# alter default privileges for role masahiko revoke [tab]
> > > > > ALL CREATE DELETE EXECUTE INSERT MAINTAIN
> > > > > REFERENCES SELECT TRIGGER TRUNCATE UPDATE USAGE
> > > >
> > > > Modified in the updated patch
> > > >
> > > > > And it doesn't cover MAINTAIN neither:
> > > > >
> > > > > =# alter default privileges revoke [tab]
> > > > > ALL DELETE GRANT OPTION FOR REFERENCES
> > > > > TRIGGER UPDATE
> > > > > CREATE EXECUTE INSERT SELECT
> > > > > TRUNCATE USAGE
> > > >
> > > > Modified in the updated patch
> > > >
> > > > > The patch adds the completions for ALTER DEFAULT PRIVILEGES REVOKE,
> > > > > but we handle such case in GRANT and REVOKE part:
> > > > >
> > > > > (around L3958)
> > > > > /*
> > > > > * With ALTER DEFAULT PRIVILEGES, restrict completion to grantable
> > > > > * privileges (can't grant roles)
> > > > > */
> > > > > if (HeadMatches("ALTER", "DEFAULT", "PRIVILEGES"))
> > > > > COMPLETE_WITH("SELECT", "INSERT", "UPDATE",
> > > > > "DELETE", "TRUNCATE", "REFERENCES", "TRIGGER",
> > > > > "CREATE", "EXECUTE", "USAGE", "MAINTAIN", "ALL");
> > > >
> > > > The current patch handles the fix from here now.
> > > >
> > > > > Also, I think we can support WITH GRANT OPTION too. For example,
> > > > >
> > > > > =# alter default privileges for role masahiko grant all on tables to
> > > > > public [tab]
> > > >
> > > > I have handled this in the updated patch
> > > >
> > > > > It's already supported in the GRANT statement.
> > > > >
> > > > > >
> > > > > > 4) "DATA TYPE" was missing in "ALTER TABLE table-name ALTER COLUMN
> > > > > > column-name SET" like in:
> > > > > > ALTER TABLE t1 ALTER COLUMN c1 SET DATA TYPE text;
> > > > > >
> > > > >
> > > > > +1. The patch looks good to me, so pushed.
> > > >
> > > > Thanks for committing this.
> > > >
> > > > The updated patch has the changes for the above comments.
> > > >
> > >
> > > Thank you for updating the patch.
> > >
> > > I think it doesn't work well as "GRANT OPTION FOR" is complemented
> > > twice. For example,
> > >
> > > =# alter default privileges for user masahiko revoke [tab]
> > > ALL DELETE GRANT OPTION FOR MAINTAIN
> > > SELECT TRUNCATE USAGE
> > > CREATE EXECUTE INSERT REFERENCES
> > > TRIGGER UPDATE
> > > =# alter default privileges for user masahiko revoke grant option for [tab]
> > > ALL DELETE GRANT OPTION FOR MAINTAIN
> > > SELECT TRUNCATE USAGE
> > > CREATE EXECUTE INSERT REFERENCES
> > > TRIGGER UPDATE
> >
> > Thanks for finding this issue, the attached v5 version patch has the
> > fix for the same.
>
> Thank you for updating the patch! I've pushed with minor adjustments.

Thanks for pushing this patch.

Regards,
Vignesh

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Zhijie Hou (Fujitsu) 2024-04-08 06:48:57 RE: Synchronizing slots from primary to standby
Previous Message Dmitry Koval 2024-04-08 06:16:54 Re: Add SPLIT PARTITION/MERGE PARTITIONS commands