Re: Extend ALTER DEFAULT PRIVILEGES for large objects
Yugo Nagata <nagata@sraoss.co.jp>
From: Yugo Nagata <nagata@sraoss.co.jp>
To: Fujii Masao <masao.fujii@oss.nttdata.com>
Cc: Laurenz Albe <laurenz.albe@cybertec.at>, Nathan Bossart
<nathandbossart@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>,
<pgsql-hackers@postgresql.org>
Date: 2025-07-10T05:11:29Z
Lists: pgsql-hackers
Attachments
On Thu, 10 Jul 2025 13:23:47 +0900
Fujii Masao <masao.fujii@oss.nttdata.com> wrote:
>
>
> On 2025/07/10 10:30, Yugo Nagata wrote:
> > You're right. I must have overlooked something. I think I saw "TO" being
> > suggested after "FOREIGN SERVER" when no foreign servers were defined.
> >
> > The attached patch still prevents "TO/FROM" from being suggested after
> > "FOREIGN SERVER" in such cases.
>
> Based on your patch, I'm thinking of simplifying the code like this:
>
> - else if (Matches("GRANT", MatchAnyN, "ON", MatchAny, MatchAny))
> - COMPLETE_WITH("TO");
> - else if (Matches("REVOKE", MatchAnyN, "ON", MatchAny, MatchAny))
> - COMPLETE_WITH("FROM");
> + else if (Matches("GRANT|REVOKE", MatchAnyN, "ON", MatchAny, MatchAny) &&
> + !TailMatches("FOREIGN", "SERVER") && !TailMatches("LARGE", "OBJECT"))
> + {
> + if (Matches("GRANT", MatchAnyN, "ON", MatchAny, MatchAny))
> + COMPLETE_WITH("TO");
> + else
> + COMPLETE_WITH("FROM");
> + }
Thank you for your review!
I agree with your suggestion and have updated the patch accordingly.
>
> > But perhaps this corner case doesn't really
> > need to be handled?
>
> Probably I failed to get your point here. Could you clarify what you meant?
I'm sorry for not explaining it clearly.
Currently, TO or FROM could be suggested immediately after FOREIGN SERVER, but
only when no foreign servers are defined. When foreign servers do exist,
their names are correctly suggested instead, as expected.
The patch fixed the behavior so that TO or FROM are not suggested after FOREIGN SERVER,
even when no foreign servers are defined. However, I've started to wonder if it's worth
fixing such a corner case. What do you think?
Regards,
Yugo Nagata
--
Yugo Nagata <nagata@sraoss.co.jp>
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
psql: Fix tab-completion after GRANT/REVOKE on LARGE OBJECT and FOREIGN SERVER.
- ff0bcb248e6e 19 (unreleased) landed
-
psql: Improve psql tab completion for GRANT/REVOKE on large objects.
- 86c539c5af14 19 (unreleased) landed
-
Extend ALTER DEFAULT PRIVILEGES to define default privileges for large objects.
- 0d6c4776647f 18.0 landed
-
Convert tab-complete's long else-if chain to a switch statement.
- f391d9dc93a2 18.0 cited