Re: ALTER TABLE .. DETACH PARTITION CONCURRENTLY
Alvaro Herrera <alvherre@alvh.no-ip.org>
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: Amit Langote <amitlangote09@gmail.com>
Cc: Pg Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2020-11-03T23:56:06Z
Lists: pgsql-hackers
Attachments
- v4-0001-ALTER-TABLE-.-DETACH-CONCURRENTLY.patch (text/x-diff)
Here's an updated version of this patch. Apart from rebasing to current master, I made the following changes: * On the first transaction (the one that marks the partition as detached), the partition is locked with ShareLock rather than ShareUpdateExclusiveLock. This means that DML is not allowed anymore. This seems a reasonable restriction to me; surely by the time you're detaching the partition you're not inserting data into it anymore. * In ExecInitPartitionDispatchInfo, the previous version always excluded detached partitions. Now it does include them in isolation level repeatable read and higher. Considering the point above, this sounds a bit contradictory: you shouldn't be inserting new tuples in partitions being detached. But if you do, it makes more sense: in RR two queries that insert tuples in the same partition would not fail mid-transaction. (In a read-committed transaction, the second query does fail, but to me that does not sound surprising.) * ALTER TABLE .. DETACH PARTITION FINALIZE now waits for concurrent old snapshots, as previously discussed. This should ensure that the user doesn't just cancel the wait during the second transaction by Ctrl-C and run FINALIZE immediately afterwards, which I claimed would bring inconsistency. * Avoid creating the CHECK constraint if an identical one already exists. (Note I do not remove the constraint on ATTACH. That seems pointless.) Still to do: test this using the new hook added by 6f0b632f083b.
Commits
-
Make detach-partition-concurrently-4 less timing sensitive
- eb43bdbf5104 14.0 landed
-
Improve documentation on DETACH PARTITION lock levels
- db6e1aeb952e 14.0 landed
-
Track detached partitions more accurately in partdescs
- 3fe773b14975 14.0 landed
-
Allow a partdesc-omitting-partitions to be cached
- d6b8d29419df 14.0 landed
-
Fix relcache inconsistency hazard in partition detach
- 8aba9322511f 14.0 landed
-
Don't add a redundant constraint when detaching a partition
- 7b357cc6ae55 14.0 landed
-
ALTER TABLE ... DETACH PARTITION ... CONCURRENTLY
- 71f4c8c6f74b 14.0 landed
-
Let ALTER TABLE Phase 2 routines manage the relation pointer
- cd03c6e94b09 14.0 landed
-
Check default partitions constraints while descending
- f481d2823297 14.0 landed
- ef1e1250e716 12.5 landed
- d0230a43fcae 13.0 landed