On Mon, Mar 29, 2021 at 3:30 PM Markus Wanner <
markus.wan...@enterprisedb.com> wrote:
>
> On 29.03.21 11:53, Amit Kapila wrote:
> > Okay, but just in the previous sentence ("However, reuse of the same
> > <parameter>gid</parameter> for example by a downstream node using
> > multiple subscriptions may lead to it not being a unique
> > identifier."), you have explained how sending a GID identifier can
> > lead to a non-unique identifier for multiple subscriptions.
>
> Maybe the example of the downstream node is a bad one.  I understand
> that can cause confusion.  Let's leave away that example and focus on
> the output plugin side.  v6 attached.
>
> > And then
> > in the next line, the way you are suggesting to generate GID by use of
> > XID seems to have the same problem, so that caused confusion for me.
>
> It was not intended as a suggestion for how to generate GIDs at all.
> Hopefully leaving away that bad example will make it less likely to
> appear related to GID generation on the subscriber.

Thanks for the updated patch. Patch applies neatly, make check and make
check-world passes. The code changes look fine to me.

In documentation, I did not understand the bold contents in the below
documentation:
+       The <parameter>ctx</parameter> parameter has the same contents as
for
+       the other callbacks. The parameters <parameter>xid</parameter>
+       and <parameter>gid</parameter> provide two different ways to
identify
+       the transaction.  For some systems, the <parameter>gid</parameter>
may
+       be sufficient.  However, reuse of the same
<parameter>gid</parameter>
+       may lead to it not being a unique identifier.

*Therefore, other systems+       combine the <parameter>xid</parameter>
with an identifier of the origin+       node to form a globally unique
transaction identifier.*  The later
+       <command>COMMIT PREPARED</command> or <command>ROLLBACK
+       PREPARED</command> carries both identifiers, providing an output
plugin
+       the choice of what to use.

I know that in publisher/subscriber decoding, the prepared transaction
gid will be modified to either pg_xid_origin or pg_xid_subid(it is still
being discussed in logical decoding of two-phase transactions thread, it
is in not yet completely finalized) to solve the subscriber getting the
same gid name.
But in prepare_filter_cb callback, by stating "other systems ..." it is not
very clear who will change the GID. Are we referring to
publisher/subscriber decoding?

Regards,
Vignesh

Reply via email to