RE: Dropped and generated columns might cause wrong data on subs when REPLICA IDENTITY FULL
Yu Shi (Fujitsu) <shiy.fnst@fujitsu.com>
From: "shiy.fnst@fujitsu.com" <shiy.fnst@fujitsu.com>
To: Önder Kalacı <onderkalaci@gmail.com>, Amit Kapila <amit.kapila16@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2023-03-17T08:45:29Z
Lists: pgsql-hackers
On Friday, March 17, 2023 3:38 PM Önder Kalacı <onderkalaci@gmail.com> wrote:
>
> Hi Amit, all
>
> You can first submit the fix for dropped columns with patches till
> v10. Once that is committed, then you can send the patches for
> generated columns.
>
> Alright, attaching 2 patches for dropped columns, the names of the files shows which
> versions the patch can be applied to:
> v2-0001-Ignore-dropped-columns-HEAD-REL_15-REL_14-REL_13.patch
> v2-0001-Ignore-dropped-columns-REL_12-REL_11.patch
>
> And, then on top of that, you can apply the patch for generated columns on all applicable
> versions (HEAD, 15, 14, 13 and 12). It applies cleanly. The name of the file
> is: v2-0001-Ignore-generated-columns.patch
>
>
> But unfortunately I couldn't test the patch with PG 12 and below. I'm getting some
> unrelated compile errors and Postgrees CI is not available on these versions . I'll try
> to fix that, but I thought it would still be good to share the patches as you might
> already have the environment to run the tests.
>
Thanks for updating the patch.
I couldn't apply v2-0001-Ignore-dropped-columns-HEAD-REL_15-REL_14-REL_13.patch
cleanly in v13 and v14. It looks the patch needs some changes in these versions.
```
Checking patch src/backend/executor/execReplication.c...
Hunk #1 succeeded at 243 (offset -46 lines).
Hunk #2 succeeded at 263 (offset -46 lines).
Checking patch src/test/subscription/t/100_bugs.pl...
error: while searching for:
$node_publisher->stop('fast');
$node_subscriber->stop('fast');
done_testing();
error: patch failed: src/test/subscription/t/100_bugs.pl:373
Applied patch src/backend/executor/execReplication.c cleanly.
Applying patch src/test/subscription/t/100_bugs.pl with 1 reject...
Rejected hunk #1.
```
Besides, I tried v2-0001-Ignore-dropped-columns-REL_12-REL_11.patch in v12. The
test failed and here's some information.
```
Can't locate object method "new" via package "PostgreSQL::Test::Cluster" (perhaps you forgot to load "PostgreSQL::Test::Cluster"?) at t/100_bugs.pl line 74.
# Looks like your test exited with 2 just after 1.
```
+my $node_publisher_d_cols = PostgreSQL::Test::Cluster->new('node_publisher_d_cols');
It seems this usage is not supported in v12 and we should use get_new_node()
like other test cases.
Regards,
Shi Yu
Commits
-
Ignore generated columns during apply of update/delete.
- adedf54e659e 16.0 landed
- b6bf90edcd2f 15.3 landed
- 9dac02c77258 14.8 landed
- be52fff91dc9 13.11 landed
- 0f2d4adbf85f 12.15 landed
-
Ignore dropped columns during apply of update/delete.
- b797def5951f 16.0 landed
- 3c12407f4cf7 15.3 landed
- 65ead76961a4 14.8 landed
- 751d6676daf3 13.11 landed
- fc63e6ba8670 12.15 landed
- 4cdaea7a2119 11.20 landed