AccessExclusiveLock new relations just after assigning the OID.
Noah Misch <noah@leadboat.com>
AccessExclusiveLock new relations just after assigning the OID. This has no user-visible, important consequences, since other sessions' catalog scans can't find the relation until we commit. However, this unblocks introducing a rule about locks required to heap_update() a pg_class row. CREATE TABLE has been acquiring this lock eventually, but it can heap_update() pg_class.relchecks earlier. create_toast_table() has been acquiring only ShareLock. Back-patch to v12 (all supported versions), the plan for the commit relying on the new rule. Reviewed (in an earlier version) by Robert Haas. Discussion: https://postgr.es/m/20240611024525.9f.nmisch@google.com
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/catalog/heap.c | modified | +7 −0 |
Discussion
- race condition in pg_class 86 messages · 2023-10-25 → 2026-02-16