aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmit Kapila <akapila@postgresql.org>2024-09-11 09:18:23 +0530
committerAmit Kapila <akapila@postgresql.org>2024-09-11 09:18:23 +0530
commit3beb945da9d72a9803180deb1752cf8feeb66883 (patch)
treeea61ad686e02a0414b1ea8ea6b500b585af3675a
parent65c310b310a613d86c1ba94891fa9972587e09fd (diff)
downloadpostgresql-3beb945da9d72a9803180deb1752cf8feeb66883.tar.gz
postgresql-3beb945da9d72a9803180deb1752cf8feeb66883.zip
Improve assertion in FindReplTupleInLocalRel().
The first part of the assertion verifying that the passed index must be PK or RI was incorrectly passing index relation instead of heap relation in GetRelationIdentityOrPK(). The assertion was not failing because the second part of the assertion which needs to be performed only when remote relation has REPLICA_IDENTITY_FULL set was also incorrect. The change is not backpatched because the current coding doesn't lead to any failure. Reported-by: Dilip Kumar Author: Amit Kapila Reviewed-by: Vignesh C Discussion: https://postgr.es/m/CAFiTN-tmguaT1DXbCC+ZomZg-oZLmU6BPhr0po7akQSG6vNJrg@mail.gmail.com
-rw-r--r--src/backend/replication/logical/worker.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/backend/replication/logical/worker.c b/src/backend/replication/logical/worker.c
index 0fb577d3281..925dff9cc44 100644
--- a/src/backend/replication/logical/worker.c
+++ b/src/backend/replication/logical/worker.c
@@ -2929,9 +2929,10 @@ FindReplTupleInLocalRel(ApplyExecutionData *edata, Relation localrel,
Relation idxrel = index_open(localidxoid, AccessShareLock);
/* Index must be PK, RI, or usable for REPLICA IDENTITY FULL tables */
- Assert(GetRelationIdentityOrPK(idxrel) == localidxoid ||
- IsIndexUsableForReplicaIdentityFull(BuildIndexInfo(idxrel),
- edata->targetRel->attrmap));
+ Assert(GetRelationIdentityOrPK(localrel) == localidxoid ||
+ (remoterel->replident == REPLICA_IDENTITY_FULL &&
+ IsIndexUsableForReplicaIdentityFull(BuildIndexInfo(idxrel),
+ edata->targetRel->attrmap)));
index_close(idxrel, AccessShareLock);
#endif