Re: why can't a table be part of the same publication as its schema

From: "Jonathan S(dot) Katz" <jkatz(at)postgresql(dot)org>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, "houzj(dot)fnst(at)fujitsu(dot)com" <houzj(dot)fnst(at)fujitsu(dot)com>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, vignesh C <vignesh21(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com>
Subject: Re: why can't a table be part of the same publication as its schema
Date: 2022-09-20 19:45:37
Message-ID: 93d52613-11d9-7fc7-d2b1-856205b8d6b6@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

(RMT hat on, unless otherwise noted)

On 9/20/22 9:42 AM, Robert Haas wrote:
> On Mon, Sep 19, 2022 at 11:03 PM Jonathan S. Katz <jkatz(at)postgresql(dot)org> wrote:
>> For #1 (allowing calls that have schema/table overlap...), there appears
>> to be both a patch that allows this (reversing[8]), and a suggestion for
>> dealing with a corner-case that is reasonable, i.e. disallowing adding
>> schemas to a publication when specifying column-lists. Do we think we
>> can have consensus on this prior to the RC1 freeze?
>
> I am not sure whether we can or should rush a fix in that fast, but I
> agree with this direction.

The RMT met today to discuss this.

We did agree that the above is an open item that should be resolved
before this release. While it is an accepted pattern for us to "ERROR"
on unsupported behavior and then later introduce said behavior, we do
agree with Peter's original post in this thread and would like it resolved.

As for the state of the fix, the patch has been iterated on and Amit
felt ready to commit it[1]. We do want to hear how others feel about
this, but the folks behind this feature have been working on this patch
since this was reported.

>> For #2 ("ALL TABLES IN SCHEMA" syntax), this was heavily discussed on
>> the original thread[1][3][4][5][7]. I thought Tom's proposal on the
>> syntax[3] was reasonable as it "future proofs" for when we allow other
>> schema-scoped objects to be published and give control over which ones
>> can be published.
>
> All right, well, I still don't like it and think it's confusing, but
> perhaps I'm in the minority.

The RMT discussed this as well. The RMT feels that there should not be
any changes to syntax/behavior for this release. This doesn't preclude
future work in this area (e.g. having a toggle for "all future
behavior"), but based on all the discussions and existing behavior in
this feature, we do not see a need to make changes or delay the release
on this.

>> I don't think we should change this behavior that's already in logical
>> replication. While I understand the reasons why "GRANT ... ALL TABLES IN
>> SCHEMA" has a different behavior (i.e. it's not applied to future
>> objects) and do not advocate to change it, I have personally been
>> affected where I thought a permission would be applied to all future
>> objects, only to discover otherwise. I believe it's more intuitive to
>> think that "ALL" applies to "everything, always."
>
> Nah, there's room for multiple behaviors here. It's reasonable to want
> to add all the tables currently in the schema to a publication (or
> grant permissions on them) and it's reasonable to want to include all
> current and future tables in the schema in a publication (or grant
> permissions on them) too. The reason I don't like the ALL TABLES IN
> SCHEMA syntax is that it sounds like the former, but actually is the
> latter. Based on your link to the email from Tom, I understand now the
> reason why it's like that, but it's still counterintuitive to me.

<PersonalOpinion>
I understand your view on "multiple behaviors" and I do agree with your
reasoning. I still think we should leave this as is, but perhaps this
opens up an option we add later to specify the behavior.
</PersonalOpinion>

>
>> For #3 (more superuser-only), in general I do agree that we shouldn't be
>> adding more of these. However, we have in this release, and not just to
>> this feature. ALTER SUBSCRIPTION ... SKIP[11] requires superuser. I
>> think it's easier for us to "relax" privileges (e.g. w/predefined roles)
>> than to make something "superuser-only" in the future, so I don't see
>> this being a blocker for v15. The feature will continue to work for
>> users even if we remove "superuser-only" in the future.
>
> Yeah, this is clearly not a release blocker, I think.

The RMT concurs. We do recommend future work on "relaxing" the
superuser-only requirement.

Thanks,

Jonathan

[1]
https://www.postgresql.org/message-id/CAA4eK1LDhoBM8K5uVme8PZ%2BkxNOfVpRh%3DoO42JtFdqBgBuj1bA%40mail.gmail.com

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Mark Dilger 2022-09-20 20:06:23 Re: why can't a table be part of the same publication as its schema
Previous Message Jonathan S. Katz 2022-09-20 19:36:28 Re: why can't a table be part of the same publication as its schema