summaryrefslogtreecommitdiff
path: root/src/backend/commands/event_trigger.c
diff options
context:
space:
mode:
authorNoah Misch2024-10-25 13:51:02 +0000
committerNoah Misch2024-10-25 13:51:02 +0000
commit243e9b40f1b2dd09d6e5bf91ebf6e822a2cd3704 (patch)
treed092b3c3b261da64a5f17a35b87d67626f9591f7 /src/backend/commands/event_trigger.c
parent0fe173680e148984a150326b80c322a91ffa899d (diff)
For inplace update, send nontransactional invalidations.
The inplace update survives ROLLBACK. The inval didn't, so another backend's DDL could then update the row without incorporating the inplace update. In the test this fixes, a mix of CREATE INDEX and ALTER TABLE resulted in a table with an index, yet relhasindex=f. That is a source of index corruption. Back-patch to v12 (all supported versions). The back branch versions don't change WAL, because those branches just added end-of-recovery SIResetAll(). All branches change the ABI of extern function PrepareToInvalidateCacheTuple(). No PGXN extension calls that, and there's no apparent use case in extensions. Reviewed by Nitin Motiani and (in earlier versions) Andres Freund. Discussion: https://postgr.es/m/[email protected]
Diffstat (limited to 'src/backend/commands/event_trigger.c')
-rw-r--r--src/backend/commands/event_trigger.c5
1 files changed, 0 insertions, 5 deletions
diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c
index 05a6de68ba3..a586d246ece 100644
--- a/src/backend/commands/event_trigger.c
+++ b/src/backend/commands/event_trigger.c
@@ -975,11 +975,6 @@ EventTriggerOnLogin(void)
* this instead of regular updates serves two purposes. First,
* that avoids possible waiting on the row-level lock. Second,
* that avoids dealing with TOAST.
- *
- * Changes made by inplace update may be lost due to
- * concurrent normal updates; see inplace-inval.spec. However,
- * we are OK with that. The subsequent connections will still
- * have a chance to set "dathasloginevt" to false.
*/
systable_inplace_update_finish(state, tuple);
}