Re: [HACKERS] logical decoding of two-phase transactions - Mailing list pgsql-hackers
From | vignesh C |
---|---|
Subject | Re: [HACKERS] logical decoding of two-phase transactions |
Date | |
Msg-id | CALDaNm2gWSYW5d=TCgqN04aV9bLFkXp8QOaE_iDXV9=w1_=LpA@mail.gmail.com Whole thread Raw |
In response to | Re: [HACKERS] logical decoding of two-phase transactions (Peter Smith <smithpb2250@gmail.com>) |
Responses |
Re: [HACKERS] logical decoding of two-phase transactions
|
List | pgsql-hackers |
On Wed, Apr 21, 2021 at 12:13 PM Peter Smith <smithpb2250@gmail.com> wrote: > > On Tue, Apr 20, 2021 at 3:45 PM Peter Smith <smithpb2250@gmail.com> wrote: > > > > Please find attached the latest patch set v73`* > > > > Differences from v72* are: > > > > * Rebased to HEAD @ today (required because v72-0001 no longer applied cleanly) > > > > * Minor documentation correction for protocol messages for Commit Prepared ('K') > > > > * Non-functional code tidy (mostly proto.c) to reduce overloading > > different meanings to same member names for prepare/commit times. > > > Please find attached a re-posting of patch set v73* Few comments when I was having a look at the tests added: 1) Can the below: +# check inserts are visible. 22 should be rolled back. 21 should be committed. +$result = $node_subscriber->safe_psql('postgres', "SELECT count(*) FROM tab_full where a IN (21);"); +is($result, qq(1), 'Rows committed are on the subscriber'); +$result = $node_subscriber->safe_psql('postgres', "SELECT count(*) FROM tab_full where a IN (22);"); +is($result, qq(0), 'Rows rolled back are not on the subscriber'); be changed to: $result = $node_subscriber->safe_psql('postgres', "SELECT a FROM tab_full where a IN (21,22);"); is($result, qq(21), 'Rows committed are on the subscriber'); And Test count need to be reduced to "use Test::More tests => 19" 2) we can change tx to transaction: +# check the tx state is prepared on subscriber(s) +$result = $node_B->safe_psql('postgres', "SELECT count(*) FROM pg_prepared_xacts;"); +is($result, qq(1), 'transaction is prepared on subscriber B'); +$result = $node_C->safe_psql('postgres', "SELECT count(*) FROM pg_prepared_xacts;"); +is($result, qq(1), 'transaction is prepared on subscriber C'); 3) There are few more instances present in the same file, those also can be changed. 4) Can the below: check inserts are visible at subscriber(s). # 22 should be rolled back. # 21 should be committed. $result = $node_B->safe_psql('postgres', "SELECT count(*) FROM tab_full where a IN (21);"); is($result, qq(1), 'Rows committed are present on subscriber B'); $result = $node_B->safe_psql('postgres', "SELECT count(*) FROM tab_full where a IN (22);"); is($result, qq(0), 'Rows rolled back are not present on subscriber B'); $result = $node_C->safe_psql('postgres', "SELECT count(*) FROM tab_full where a IN (21);"); is($result, qq(1), 'Rows committed are present on subscriber C'); $result = $node_C->safe_psql('postgres', "SELECT count(*) FROM tab_full where a IN (22);"); is($result, qq(0), 'Rows rolled back are not present on subscriber C'); be changed to: $result = $node_B->safe_psql('postgres', "SELECT a FROM tab_full where a IN (21,22);"); is($result, qq(21), 'Rows committed are on the subscriber'); $result = $node_C->safe_psql('postgres', "SELECT a FROM tab_full where a IN (21,22);"); is($result, qq(21), 'Rows committed are on the subscriber'); And Test count need to be reduced to "use Test::More tests => 27" 5) should we change "Two phase commit" to "Two phase commit state" : + /* + * Binary, streaming, and two_phase are only supported in v14 and + * higher + */ if (pset.sversion >= 140000) appendPQExpBuffer(&buf, ", subbinary AS \"%s\"\n" - ", substream AS \"%s\"\n", + ", substream AS \"%s\"\n" + ", subtwophasestate AS \"%s\"\n", gettext_noop("Binary"), - gettext_noop("Streaming")); + gettext_noop("Streaming"), + gettext_noop("Two phase commit")); Regards, Vignesh
pgsql-hackers by date: