From: | "Zhijie Hou (Fujitsu)" <houzj(dot)fnst(at)fujitsu(dot)com> |
---|---|
To: | vignesh C <vignesh21(at)gmail(dot)com> |
Cc: | Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Ashutosh Bapat <ashutosh(dot)bapat(dot)oss(at)gmail(dot)com> |
Subject: | RE: pg_decode_message vs skip_empty_xacts and xact_wrote_changes |
Date: | 2023-06-29 04:28:52 |
Message-ID: | OS0PR01MB57161E8D61ACCF34D505FBDA9425A@OS0PR01MB5716.jpnprd01.prod.outlook.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Thursday, June 29, 2023 12:06 PM vignesh C <vignesh21(at)gmail(dot)com> wrote:
>
> On Wed, 28 Jun 2023 at 19:26, Ashutosh Bapat
> <ashutosh(dot)bapat(dot)oss(at)gmail(dot)com> wrote:
> >
> > Hi Vignesh,
> > Thanks for working on this.
> >
> > On Wed, Jun 28, 2023 at 4:52 PM vignesh C <vignesh21(at)gmail(dot)com> wrote:
> > >
> > > Here is a patch having the fix for the same. I have not added any
> > > tests as the existing tests cover this scenario. The same issue is
> > > present in back branches too.
> >
> > Interesting, we have a test for this scenario and it accepts erroneous
> > output :).
> >
> > > v1-0001-Call-pg_output_begin-in-pg_decode_message-if-it-i_master.pat
> > > ch can be applied on master, PG15 and PG14,
> > > v1-0001-Call-pg_output_begin-in-pg_decode_message-if-it-i_PG13.patch
> > > patch can be applied on PG13, PG12 and PG11.
> > > Thoughts?
> >
> > I noticed this when looking at Tomas's patches for logical decoding of
> > sequences. The code block you have added is repeated in
> > pg_decode_change() and pg_decode_truncate(). It might be better to
> > push the conditions in pg_output_begin() itself so that any future
> > callsite of pg_output_begin() automatically takes care of these
> > conditions.
>
> Thanks for the comments, here is an updated patch handling the above issue.
Thanks for the patches.
I tried to understand the following check:
/*
* If asked to skip empty transactions, we'll emit BEGIN at the point
* where the first operation is received for this transaction.
*/
- if (data->skip_empty_xacts)
+ if (!(last_write ^ data->skip_empty_xacts) || txndata->xact_wrote_changes)
return;
I might miss something, but would you mind elaborating on why we use "last_write" in this check?
Best Regard,
Hou zj
From | Date | Subject | |
---|---|---|---|
Next Message | Nathan Bossart | 2023-06-29 04:38:58 | Re: add \dpS to psq [16beta1] |
Previous Message | Gurjeet Singh | 2023-06-29 04:20:03 | Re: harmonize password reuse in vacuumdb, clusterdb, and reindexdb |