Re: Bugs in CREATE/DROP INDEX CONCURRENTLY
Kevin Grittner <kgrittn@mail.com>
From: "Kevin Grittner" <kgrittn@mail.com>
To: "Andres Freund" <andres@2ndquadrant.com>,pgsql-hackers@postgresql.org
Cc: "Tom Lane" <tgl@sss.pgh.pa.us>,"Simon Riggs" <simon@2ndquadrant.com>
Date: 2012-10-18T12:58:43Z
Lists: pgsql-hackers
Attachments
- drop-index-concurrently-predicate-locks-v3.patch (text/x-patch) patch v3
Andres Freund wrote: > On Thursday, October 18, 2012 06:12:02 AM Kevin Grittner wrote: >> I'm having trouble seeing a way to make this work without >> rearranging the code for concurrent drop to get to a state where >> it has set indisvalid = false, made that visible to all processes, >> and ensured that all scans of the index are complete -- while >> indisready is still true. That is the point where >> TransferPredicateLocksToHeapRelation() could be safely called. >> Then we would need to set indisready = false, make that visible to >> all processes, and ensure that all access to the index is >> complete. I can't see where it works to set both flags at the same >> time. > In a nearby bug I had to restructure the code that in a way thats > similar to this anyway, so that seems fine. Maybe you can fix the > bug ontop of the two attached patches? Perfect; these two patches provide a spot in the code which is exactly right for handling the predicate lock adjustments. Attached is a patch which applies on top of the two you sent. Thanks! -Kevin