postgres.git / summary / log / commit / refs

commit    2d0152d6147bb7d12eb120b7e749a323bf91aa6e
Author:   Amit Kapila <akapila@postgresql.org>
Date:     Mon Dec 09 03:41:45 2024 +0000

    Improve the error message introduced in commit 87ce27de696.
    
    The error detail message "Replica identity consists of an unpublished
    generated column." implies that the entire replica identity is made up of
    an unpublished generated column which may not be the case.
    
    Reported-by: Peter Smith
    Author: Shlok Kyal
    Reviewed-by: Peter Smith, Amit Kapila
    Discussion: https://postgr.es/m/CAHut+PuwMhKx0PhOA4APhJTLoBGNykbeCQpr_CuwGT-SkswG5w@mail.gmail.com


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 cfdf2eedf4d..368a40337aa 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 b44ab007de6..c48f11f2935 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); [parent: da99fedf8c17]