aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/tablecmds.c
diff options
context:
space:
mode:
authorAmit Kapila <akapila@postgresql.org>2021-11-16 08:10:13 +0530
committerAmit Kapila <akapila@postgresql.org>2021-11-16 08:10:13 +0530
commit354a1f8d220fbbb07b0ded32c5ade72646afb801 (patch)
treea949daff73b46c68927a31beaa21aaaa23f93e1b /src/backend/commands/tablecmds.c
parent1b098da2009362e0e8d9a1d0a6aac2f2bd3e2f0b (diff)
downloadpostgresql-354a1f8d220fbbb07b0ded32c5ade72646afb801.tar.gz
postgresql-354a1f8d220fbbb07b0ded32c5ade72646afb801.zip
Invalidate relcache when changing REPLICA IDENTITY index.
When changing REPLICA IDENTITY INDEX to another one, the target table's relcache was not being invalidated. This leads to skipping update/delete operations during apply on the subscriber side as the columns required to search corresponding rows won't get logged. Author: Tang Haiying, Hou Zhijie Reviewed-by: Euler Taveira, Amit Kapila Backpatch-through: 10 Discussion: https://postgr.es/m/OS0PR01MB61133CA11630DAE45BC6AD95FB939@OS0PR01MB6113.jpnprd01.prod.outlook.com
Diffstat (limited to 'src/backend/commands/tablecmds.c')
-rw-r--r--src/backend/commands/tablecmds.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 857cc5ce6e2..d675d261f75 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -15488,6 +15488,12 @@ relation_mark_replica_identity(Relation rel, char ri_type, Oid indexOid,
CatalogTupleUpdate(pg_index, &pg_index_tuple->t_self, pg_index_tuple);
InvokeObjectPostAlterHookArg(IndexRelationId, thisIndexOid, 0,
InvalidOid, is_internal);
+ /*
+ * Invalidate the relcache for the table, so that after we commit
+ * all sessions will refresh the table's replica identity index
+ * before attempting any UPDATE or DELETE on the table.
+ */
+ CacheInvalidateRelcache(rel);
}
heap_freetuple(pg_index_tuple);
}