logical_rep_row_filter_comment.diff
text/x-diff
Filename: logical_rep_row_filter_comment.diff
Type: text/x-diff
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| src/backend/replication/pgoutput/pgoutput.c | 9 | 0 |
diff --git a/src/backend/replication/pgoutput/pgoutput.c b/src/backend/replication/pgoutput/pgoutput.c
index 20d0b1e1253..2be5aaa18c4 100644
--- a/src/backend/replication/pgoutput/pgoutput.c
+++ b/src/backend/replication/pgoutput/pgoutput.c
@@ -1246,6 +1246,15 @@ pgoutput_row_filter(Relation relation, TupleTableSlot *old_slot,
*/
if (!new_slot || !old_slot)
{
+ /*
+ * For UPDATE, we should only get here if the replica identity is !=
+ * FULL and thus all the identity columns are index columns, i.e.
+ * never TOASTed. Therefore, we don't need to care of the unchanged
+ * toasted replica identity columns like we do below.
+ */
+ Assert(relation->rd_rel->relreplident != REPLICA_IDENTITY_FULL ||
+ map_changetype_pubaction[*action] != PUBACTION_UPDATE);
+
ecxt->ecxt_scantuple = new_slot ? new_slot : old_slot;
result = pgoutput_row_filter_exec_expr(filter_exprstate, ecxt);