From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Andrey Borodin <x4mmm(at)yandex-team(dot)ru> |
Cc: | pgsql-bugs(at)lists(dot)postgresql(dot)org |
Subject: | Re: CREATE INDEX CONCURRENTLY does not index prepared xact's data |
Date: | 2020-12-19 17:57:41 |
Message-ID: | 273957.1608400661@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
Andrey Borodin <x4mmm(at)yandex-team(dot)ru> writes:
> This happens because WaitForLockersMultiple() does not take prepared
> xacts into account.
Ugh, clearly an oversight.
> Meanwhile CREATE INDEX CONCURRENTLY expects that locks are dropped only
> when transaction commit is visible.
Don't follow your point here --- I'm pretty sure that prepared xacts
continue to hold their locks.
> PFA draft of a fix.
Haven't you completely broken VirtualXactLock()? Certainly, whether the
target is a normal or prepared transaction shouldn't alter the meaning
of the "wait" flag.
In general, I wonder whether WaitForLockersMultiple and GetLockConflicts
need to gain an additional parameter indicating whether to consider
prepared xacts. It's not clear to me that their current behavior is wrong
for all possible uses.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Andrey Borodin | 2020-12-19 18:25:11 | Re: CREATE INDEX CONCURRENTLY does not index prepared xact's data |
Previous Message | Victor Yegorov | 2020-12-19 17:48:13 | Re: CREATE INDEX CONCURRENTLY does not index prepared xact's data |