On Tue, Feb 26, 2019 at 5:10 PM Robert Haas <robertmh...@gmail.com> wrote: > Aside from these problems, I think I have spotted a subtle problem in > 0001. I'll think about that some more and post another update.
0001 turned out to be guarding against the wrong problem. It supposed that if we didn't get a coherent view of the system catalogs due to concurrent DDL, we could just AcceptInvalidationMessages() and retry. But that turns out to be wrong, because there's a (very) narrow window after a process removes itself from the ProcArray and before it sends invalidation messages. It wasn't difficult to engineer an alternative solution that works, but unfortunately it's only good enough to handle the ATTACH case, so this is another thing that will need more thought for concurrent DETACH. Anyway, the updated 0001 contains that code and some explanatory comments. The rest of the series is substantially unchanged. I'm not currently aware of any remaining correctness issues with this code, although certainly there may be some. There has been a certain dearth of volunteers to review any of this. I do plan to poke at it a bit to see whether it has any significant performance impact, but not today. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
v4-0004-Reduce-the-lock-level-required-to-attach-a-partit.patch
Description: Binary data
v4-0002-Ensure-that-repeated-PartitionDesc-lookups-return.patch
Description: Binary data
v4-0001-Teach-RelationBuildPartitionDesc-to-cope-with-con.patch
Description: Binary data
v4-0003-Teach-runtime-partition-pruning-to-cope-with-conc.patch
Description: Binary data