Fix replica identity check for MERGE.

When executing a MERGE, check that the target relation supports all
actions mentioned in the MERGE command. Specifically, check that it
has a REPLICA IDENTITY if it publishes updates or deletes and the
MERGE command contains update or delete actions. Failing to do this
can silently break replication.

Author: Zhijie Hou <[email protected]>
Reviewed-by: Ashutosh Bapat <[email protected]>
Reviewed-by: Dean Rasheed <[email protected]>
Tested-by: Chao Li <[email protected]>
Discussion: 
https://postgr.es/m/os3pr01mb57180c87e43a679a730482df94...@os3pr01mb5718.jpnprd01.prod.outlook.com
Backpatch-through: 15

Branch
------
REL_17_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/76f45be9315bb02b6f9f41b17e5a448c6241bb20

Modified Files
--------------
src/backend/executor/execMain.c           | 11 ++++++++++-
src/test/regress/expected/publication.out | 28 ++++++++++++++++++++++++++++
src/test/regress/sql/publication.sql      | 31 +++++++++++++++++++++++++++++++
3 files changed, 69 insertions(+), 1 deletion(-)

Reply via email to