From d57017700a79935b387a4a0f70d89d6227e622de Mon Sep 17 00:00:00 2001
From: Shlok Kyal <shlok.kyal.oss@gmail.com>
Date: Fri, 6 Dec 2024 10:52:44 +0530
Subject: [PATCH v1] Improve error message introduced in commit 87ce27de696

The sentence "Replica identity consists of an unpublished generated
column." implies that the entire replica identity is made up of an
unpublished generated column and nothing else.

This patch fixes it with a better error message.
---
 src/backend/executor/execReplication.c    | 4 ++--
 src/test/regress/expected/publication.out | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/backend/executor/execReplication.c b/src/backend/executor/execReplication.c
index cfdf2eedf4..368a40337a 100644
--- a/src/backend/executor/execReplication.c
+++ b/src/backend/executor/execReplication.c
@@ -825,7 +825,7 @@ CheckCmdReplicaIdentity(Relation rel, CmdType cmd)
 				(errcode(ERRCODE_INVALID_COLUMN_REFERENCE),
 				 errmsg("cannot update table \"%s\"",
 						RelationGetRelationName(rel)),
-				 errdetail("Replica identity consists of an unpublished generated column.")));
+				 errdetail("Replica identity must not contain unpublished generated columns.")));
 	else if (cmd == CMD_DELETE && !pubdesc.rf_valid_for_delete)
 		ereport(ERROR,
 				(errcode(ERRCODE_INVALID_COLUMN_REFERENCE),
@@ -843,7 +843,7 @@ CheckCmdReplicaIdentity(Relation rel, CmdType cmd)
 				(errcode(ERRCODE_INVALID_COLUMN_REFERENCE),
 				 errmsg("cannot delete from table \"%s\"",
 						RelationGetRelationName(rel)),
-				 errdetail("Replica identity consists of an unpublished generated column.")));
+				 errdetail("Replica identity must not contain unpublished generated columns.")));
 
 	/* If relation has replica identity we are always good. */
 	if (OidIsValid(RelationGetReplicaIndex(rel)))
diff --git a/src/test/regress/expected/publication.out b/src/test/regress/expected/publication.out
index b44ab007de..c48f11f293 100644
--- a/src/test/regress/expected/publication.out
+++ b/src/test/regress/expected/publication.out
@@ -683,13 +683,13 @@ ALTER TABLE testpub_gencol REPLICA IDENTITY USING index testpub_gencol_idx;
 CREATE PUBLICATION pub_gencol FOR TABLE testpub_gencol;
 UPDATE testpub_gencol SET a = 100 WHERE a = 1;
 ERROR:  cannot update table "testpub_gencol"
-DETAIL:  Replica identity consists of an unpublished generated column.
+DETAIL:  Replica identity must not contain unpublished generated columns.
 -- error - generated column "b" must be published explicitly as it is
 -- part of the REPLICA IDENTITY.
 ALTER TABLE testpub_gencol REPLICA IDENTITY FULL;
 UPDATE testpub_gencol SET a = 100 WHERE a = 1;
 ERROR:  cannot update table "testpub_gencol"
-DETAIL:  Replica identity consists of an unpublished generated column.
+DETAIL:  Replica identity must not contain unpublished generated columns.
 DROP PUBLICATION pub_gencol;
 -- ok - generated column "b" is published explicitly
 CREATE PUBLICATION pub_gencol FOR TABLE testpub_gencol with (publish_generated_columns = true);
-- 
2.34.1

