Re: Proposal: Conflict log history table for Logical Replication

From: shveta malik <shveta(dot)malik(at)gmail(dot)com>
To: Zhijie Hou <houzhijie22(at)gmail(dot)com>
Cc: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, Dilip Kumar <DilipBalaut(at)gmail(dot)com>, Nisha Moond <nisha(dot)moond412(at)gmail(dot)com>, Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>, vignesh C <vignesh21(at)gmail(dot)com>, saurabh singh <saurabh(dot)singh214(at)gmail(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, Peter Smith <smithpb2250(at)gmail(dot)com>, Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, shveta malik <shveta(dot)malik(at)gmail(dot)com>
Subject: Re: Proposal: Conflict log history table for Logical Replication
Date: 2026-10-14 04:26:28
Message-ID: CAJpy0uBZyFUtZ5jO9ZpNAu7d-6cYK0tqxMWYts67vmB4+Xga_Q@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, Oct 14, 2026 at 7:43 AM Zhijie Hou <houzhijie22(at)gmail(dot)com> wrote:
>
> Hi,
>
> On Tue, Oct 13, 2026 at 6:29 PM shveta malik <shveta(dot)malik(at)gmail(dot)com> wrote:
> >
> > I analyzed that 'intervalstyle' could also cause correctness issue
> > when reading the values. Attached the testcase with results before and
> > after fix in it.
> >
> > The fix would be similar to DateStyle fix in build_index_key_json():
> >
> > + (void) set_config_option("intervalstyle", "postgres",
> > + PGC_USERSET, PGC_S_SESSION,
> > + GUC_ACTION_SAVE, true, 0, false);
> >
> > Will analyze 'extra_float_digits' next.
>
> Thanks!
>
> I also re-confirmed locally that all the parameters you reported (e.g.
> DateStyle, IntervalStyle, extra_float_digits) have similar issues, and setting
> the GUCs manually when building the CLT row is an appropriate way to fix this.

Thanks for verifying.

> Please see the attachment for a TAP test on top of v81 that tries to reproduce
> all of them. And if we plan to fix this along with the main patch, I think it
> would be worth keeping a simple test case like the attached one.
>

I like the idea of test-patch. But the test has a few problems. It
did not compile and run on my machine. Problems were:

1)
[09:09:53] t/035_conflicts.pl .. Global symbol "$node_A" requires
explicit package name (did you forget to declare "my $node_A"?) at
t/035_conflicts.pl line 209.
Execution of t/035_conflicts.pl aborted due to compilation errors.

Problem was this part:
+# Wait for the apply worker to stop
+$node_A->poll_query_until('postgres',
+ "SELECT count(*) = 0 FROM pg_stat_activity WHERE backend_type =
'logical replication apply worker'"

I think we need to change node_A to node_subscriber. Otherwise also,
it was wrong as node_A is assigned as:

my $node_A = $node_publisher

And we want to stop worker on subscriber.

2)
After fixing above, the testcase fails for me:

[09:12:35] t/035_conflicts.pl .. 6/?
# Failed test 'CLT JSON stores timestamp in ISO format'
# at t/035_conflicts.pl line 239.
# '2026-03-04 10:11:12.123456+05:30'
# doesn't match '(?^:^\d{4}-\d{2}-\d{2}
\d{2}:\d{2}:\d{2}(\.\d+)?[+-]\d{2}$)'

This is because it could not match timezone offsets that include
minutes (e.g. +05:30 in IST) on my machine. This needed to be changed
to:
qr/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(\.\d+)?[+-]\d{2}(:\d{2}){0,2}$/,

~~

I have addressed these 2 test-issues in the attached patch.

Also added code to fix intervalstyle and extra_float issues. Please review once.

Attached patch applies atop v81-002.

thanks
Shveta

Attachment Content-Type Size
0001-Fix-and-Test-for-Datestyle-IntervalStyle-extra_float.patch application/octet-stream 7.2 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Corey Huinker 2026-10-14 04:38:24 Re: CAST(... ON DEFAULT) - WIP build on top of Error-Safe User Functions
Previous Message ZizhuanLiu X-MAN 2026-10-14 04:24:32 Re: Optimize MCV stats for sortable types and utilize sorted-order properties