| From: | Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> |
|---|---|
| To: | shveta malik <shveta(dot)malik(at)gmail(dot)com> |
| Cc: | Dilip Kumar <dilipbalaut(at)gmail(dot)com>, vignesh C <vignesh21(at)gmail(dot)com>, Nisha Moond <nisha(dot)moond412(at)gmail(dot)com>, Peter Smith <smithpb2250(at)gmail(dot)com>, Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>, Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, shveta malik <shvetamalik(at)gmail(dot)com> |
| Subject: | Re: Proposal: Conflict log history table for Logical Replication |
| Date: | 2026-05-06 10:31:41 |
| Message-ID: | CAA4eK1+p+ChffNUiddh+Pk3O6o=k6XuFtG+pH13sqn7Dzh-3hQ@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Wed, May 6, 2026 at 3:06 PM shveta malik <shveta(dot)malik(at)gmail(dot)com> wrote:
>
> As a non super-user which does not have 'pg_create_subscription' privelege:
> postgres=> alter table pg_conflict.pg_conflict_16487 add column i int;
> ERROR: permission denied for schema pg_conflict
> <seems correct, as access is denied at schema level itself>
>
> As a non super-user which has 'pg_create_subscription' privelege, but
> does not own the respective sub:
> postgres=> alter table pg_conflict.pg_conflict_16487 add column i int;
> ERROR: must be owner of table pg_conflict_16487
> <Due to 'pg_create_subscription', it seems schema access is provided,
> so it goes to check table access now and gives above error. Not sure
> about this error, even if the user were the owner, they still wouldn't
> be able to perform this operation>
>
> As a non super-user which has 'pg_create_subscription' privilege and
> also owns the respective sub:
> postgres=> alter table pg_conflict.pg_conflict_16498 add column i int;
> ERROR: permission denied: "pg_conflict_16498" is a system catalog
> <okay>
>
> As a super-user, the error is same irrespective of fact whether it
> actually owns that table or not:
> postgres=# alter table pg_conflict.pg_conflict_16487 add column i int;
> ERROR: permission denied: "pg_conflict_16487" is a system catalog
> <okay>
>
> For second case, not a strong opinion, but can the better error be:
> ERROR: permission denied: "pg_conflict_16487" is a system catalog?
>
> I have not analyzed code myself for this yet.
>
I analyzed this case and think that the current behavior is okay. As
per RangeVarCallbackForAlterRelation(), we first ensure that the
current user is either a table owner or superuser and then check
actual permissions to perform the operations on the table. The same is
true for the DROP case. I don't see the need to change it.
Few cosmetic changes are attached in top-up patches. Dilip can include
these in the next version, if he is okay with them.
--
With Regards,
Amit Kapila.
| Attachment | Content-Type | Size |
|---|---|---|
| v29_amit_2.patch.txt | text/plain | 1.2 KB |
| v29_amit_1.txt.patch | application/octet-stream | 886 bytes |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | shveta malik | 2026-05-06 10:43:41 | Re: [PATCH] Preserve replication origin OIDs in pg_upgrade |
| Previous Message | Alexander Korotkov | 2026-05-06 10:31:28 | Re: race condition when writing pg_control |