Thread: pgsql: Fix CREATE INDEX CONCURRENTLY for simultaneous prepared transact
Fix CREATE INDEX CONCURRENTLY for simultaneous prepared transactions. In a cluster having used CREATE INDEX CONCURRENTLY while having enabled prepared transactions, queries that use the resulting index can silently fail to find rows. Fix this for future CREATE INDEX CONCURRENTLY by making it wait for prepared transactions like it waits for ordinary transactions. This expands the VirtualTransactionId structure domain to admit prepared transactions. It may be necessary to reindex to recover from past occurrences. Back-patch to 9.5 (all supported versions). Andrey Borodin, reviewed (in earlier versions) by Tom Lane and Michael Paquier. Discussion: https://postgr.es/m/2E712143-97F7-4890-B470-4A35142ABC82@yandex-team.ru Branch ------ REL_13_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/86a5b309c9330661fd2c4c46e4dc7f07cca139e1 Modified Files -------------- src/backend/storage/lmgr/lmgr.c | 3 +- src/backend/storage/lmgr/lock.c | 43 +++++++++++++--------- src/include/storage/lock.h | 17 +++++---- src/test/isolation/Makefile | 11 +++--- src/test/isolation/README | 6 +-- .../expected/prepared-transactions-cic.out | 18 +++++++++ .../isolation/specs/prepared-transactions-cic.spec | 37 +++++++++++++++++++ 7 files changed, 98 insertions(+), 37 deletions(-)