diff options
| author | Amit Kapila | 2022-08-16 09:55:41 +0000 |
|---|---|---|
| committer | Amit Kapila | 2022-08-16 09:55:41 +0000 |
| commit | 0d5bd3a6cc3e4cd2fb44e2714e52a684cc7bbc25 (patch) | |
| tree | 44ebfaa4ccca6baefb6a30a5f7762b6f0b6baf35 /src/test | |
| parent | f4c32cdd1cc3e759d8e300664ec553a16bcb6c37 (diff) | |
Fix replica identity check for a partitioned table.
The current publisher code checks if UPDATE or DELETE can be executed with
the replica identity of the table even if it's a partitioned table. We can
skip checking the replica identity for partitioned tables because the
operations are actually performed on the leaf partitions (not the
partitioned table).
Reported-by: Brad Nicholson
Author: Hou Zhijie
Reviewed-by: Peter Smith, Amit Kapila
Backpatch-through: 13
Discussion: https://postgr.es/m/CAMMnM%3D8i5DohH%3DYKzV0_wYuYSYvuOJoL9F5nzXTc%2ByzsG1f6rg%40mail.gmail.com
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/regress/expected/publication.out | 2 | ||||
| -rw-r--r-- | src/test/regress/sql/publication.sql | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/src/test/regress/expected/publication.out b/src/test/regress/expected/publication.out index 428c1f16c7c..e6e082de2f5 100644 --- a/src/test/regress/expected/publication.out +++ b/src/test/regress/expected/publication.out @@ -214,6 +214,8 @@ ALTER PUBLICATION testpub_forparted ADD TABLE testpub_parted; Tables: "public.testpub_parted" +-- works despite missing REPLICA IDENTITY, because no actual update happened +UPDATE testpub_parted SET a = 1 WHERE false; -- should now fail, because parent's publication replicates updates UPDATE testpub_parted1 SET a = 1; ERROR: cannot update table "testpub_parted1" because it does not have a replica identity and publishes updates diff --git a/src/test/regress/sql/publication.sql b/src/test/regress/sql/publication.sql index 9eb86fd54f8..a56387edee3 100644 --- a/src/test/regress/sql/publication.sql +++ b/src/test/regress/sql/publication.sql @@ -119,6 +119,8 @@ UPDATE testpub_parted1 SET a = 1; -- only parent is listed as being in publication, not the partition ALTER PUBLICATION testpub_forparted ADD TABLE testpub_parted; \dRp+ testpub_forparted +-- works despite missing REPLICA IDENTITY, because no actual update happened +UPDATE testpub_parted SET a = 1 WHERE false; -- should now fail, because parent's publication replicates updates UPDATE testpub_parted1 SET a = 1; ALTER TABLE testpub_parted DETACH PARTITION testpub_parted1; |
