Re: [HACKERS] logical decoding of two-phase transactions

From: Ajin Cherian <itsajin(at)gmail(dot)com>
To: Greg Nancarrow <gregn4422(at)gmail(dot)com>
Cc: Peter Smith <smithpb2250(at)gmail(dot)com>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, "tanghy(dot)fnst(at)fujitsu(dot)com" <tanghy(dot)fnst(at)fujitsu(dot)com>, vignesh C <vignesh21(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: [HACKERS] logical decoding of two-phase transactions
Date: 2021-06-23 03:39:58
Message-ID: CAFPTHDaLNcziUa-fbCzfuvKxUdDYALnkpU9yDuPuMJNgSqu_gg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Jun 22, 2021 at 3:36 PM Greg Nancarrow <gregn4422(at)gmail(dot)com> wrote:

> Some minor comments:
>
> (1)
> v88-0002
>
> doc/src/sgml/logicaldecoding.sgml
>
> "examples shows" is not correct.
> I think there is only ONE example being referred to.
>
> BEFORE:
> + The following examples shows how logical decoding is controlled over the
> AFTER:
> + The following example shows how logical decoding is controlled over the
>
>
fixed.

> (2)
> v88 - 0003
>
> doc/src/sgml/ref/create_subscription.sgml
>
> (i)
>
> BEFORE:
> + to the subscriber on the PREPARE TRANSACTION. By default,
> the transaction
> + prepared on publisher is decoded as a normal transaction at commit.
> AFTER:
> + to the subscriber on the PREPARE TRANSACTION. By default,
> the transaction
> + prepared on the publisher is decoded as a normal
> transaction at commit time.
>

fixed.

> (ii)
>
> src/backend/access/transam/twophase.c
>
> The double-bracketing is unnecessary:
>
> BEFORE:
> + if ((gxact->valid && strcmp(gxact->gid, gid) == 0))
> AFTER:
> + if (gxact->valid && strcmp(gxact->gid, gid) == 0)
>

fixed.

> (iii)
>
> src/backend/replication/logical/snapbuild.c
>
> Need to add some commas to make the following easier to read, and
> change "needs" to "need":
>
> BEFORE:
> + * The prepared transactions that were skipped because previously
> + * two-phase was not enabled or are not covered by initial snapshot needs
> + * to be sent later along with commit prepared and they must be before
> + * this point.
> AFTER:
> + * The prepared transactions, that were skipped because previously
> + * two-phase was not enabled or are not covered by initial snapshot, need
> + * to be sent later along with commit prepared and they must be before
> + * this point.
>

fixed.

> (iv)
>
> src/backend/replication/logical/tablesync.c
>
> I think the convention used in Postgres code is to check for empty
> Lists using "== NIL" and non-empty Lists using "!= NIL".
>
> BEFORE:
> + if (table_states_not_ready && !last_start_times)
> AFTER:
> + if (table_states_not_ready != NIL && !last_start_times)
>
>
> BEFORE:
> + else if (!table_states_not_ready && last_start_times)
> AFTER:
> + else if (table_states_not_ready == NIL && last_start_times)
>

fixed.

Also fixed comments from Vignesh:

1) This content is present in
v87-0001-Add-option-to-set-two-phase-in-CREATE_REPLICATIO.patch and
v87-0003-Add-support-for-prepared-transactions-to-built-i.patch, it
can be removed from one of them
<varlistentry>
+ <term><literal>TWO_PHASE</literal></term>
+ <listitem>
+ <para>
+ Specify that this logical replication slot supports decoding
of two-phase
+ transactions. With this option, two-phase commands like
+ <literal>PREPARE TRANSACTION</literal>, <literal>COMMIT
PREPARED</literal>
+ and <literal>ROLLBACK PREPARED</literal> are decoded and transmitted.
+ The transaction will be decoded and transmitted at
+ <literal>PREPARE TRANSACTION</literal> time.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>

I don't see this duplicate content.

2) This change is not required, it can be removed:
<sect1 id="logicaldecoding-example">
<title>Logical Decoding Examples</title>
-
<para>
The following example demonstrates controlling logical decoding using the
SQL interface.

fixed this.

3) We could add comment mentioning example 1 at the beginning of
example 1 and example 2 for the newly added example with description,
that will clearly mark the examples.

added this.

5) This should be before verbose, the options are documented alphabetically

fixed.this.

regards,
Ajin Cherian
Fujitsu Australia

Attachment Content-Type Size
v89-0001-Add-option-to-set-two-phase-in-CREATE_REPLICATIO.patch application/octet-stream 6.5 KB
v89-0005-Skip-empty-transactions-for-logical-replication.patch application/octet-stream 27.5 KB
v89-0004-Add-prepare-API-support-for-streaming-transactio.patch application/octet-stream 54.1 KB
v89-0003-Add-support-for-prepared-transactions-to-built-i.patch application/octet-stream 147.0 KB
v89-0002-Add-support-for-two-phase-decoding-in-pg_recvlog.patch application/octet-stream 11.3 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2021-06-23 03:47:37 Re: pgbench logging broken by time logic changes
Previous Message Noah Misch 2021-06-23 03:02:28 Re: intermittent failures in Cygwin from select_parallel tests