Re: Handle infinite recursion in logical replication setup
От | Peter Smith |
---|---|
Тема | Re: Handle infinite recursion in logical replication setup |
Дата | |
Msg-id | CAHut+PsWat-g5qhbGHrvZ64Nh8-A2LKSWbE1Zrrk=8U-c4nBFA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Handle infinite recursion in logical replication setup (Amit Kapila <amit.kapila16@gmail.com>) |
Список | pgsql-hackers |
On Mon, Aug 1, 2022 at 6:52 PM Amit Kapila <amit.kapila16@gmail.com> wrote: > > On Mon, Aug 1, 2022 at 1:32 PM Peter Smith <smithpb2250@gmail.com> wrote: > > > > On Mon, Aug 1, 2022 at 3:27 PM shiy.fnst@fujitsu.com > > <shiy.fnst@fujitsu.com> wrote: > > > > > > On Fri, Jul 29, 2022 1:22 PM vignesh C <vignesh21@gmail.com> wrote: > > > > > > > > > > > > Thanks for the comments, the attached v41 patch has the changes for the > > > > same. > > > > > > > > > > Thanks for updating the patch. > > > > > > I wonder in the case that the publisher uses PG15 (or before), subscriber uses > > > PG16, should we have this check (check if publication tables were also > > > subscribing from other publishers)? In this case, even if origin=none is > > > specified, it doesn't work because the publisher doesn't filter the origin. So > > > maybe we don't need the check for initial sync. Thoughts? > > > > > > > IIUC for the scenario you've described (subscription origin=none and > > publisher < PG16) the subscriber can end up getting extra data they > > did not want, right? > > > > Yes, because publishers won't have 'filtering based on origin' functionality. > > > So instead of just "don't need the check", maybe this combination > > should throw ERROR, or at least a log a WARNING? > > > > I am not sure if doing anything (ERROR or WARNING) would make sense > because anyway later during replication there won't be any filtering. > I was suggesting stopping that replication from happening at all. If the user specifically asked for 'origin=none' but the publisher could not filter that (because < PG16) then I imagined some logic that would just disable the subscription up-front. Isn't it preferable for the subscriber to get no data at all then to get data the user specifically said they did NOT want to get? e.g. pseudo-code for the worker code something like below: if (origin != ANY and publisher.server_version < PG16) { set subscription.option.disable_on_error = true; throw ERROR ("publisher does not support origin=none - disabling the subscription"); } ------ Kind Regards, Peter Smith. Fujitsu Australia.
В списке pgsql-hackers по дате отправления: