Support testing of cases where table schemas change after planning

Enterprise / PostgreSQL - Tom Lane [sss.pgh.pa.us] - 7 August 2020 18:30 UTC

We have various cases where we allow DDL on tables to be performed with less than full AccessExclusiveLock. This requires concurrent queries to be able to cope with the DDL change mid-flight, but up to now we had no repeatable way to test such cases. To improve that, invent a test module that allows halting a backend after planning and then resuming execution once we've done desired actions in another session. (The same approach could be used to inject delays in other places, if there's a suitable hook available.)

This commit includes a single test case, which is meant to exercise the previously-untestable ExecCreatePartitionPruneState code repaired by commit 7a980dfc6. We'd probably not bother with this if that were the only foreseen benefit, but I expect additional test cases will use this infrastructure in the future.

Test module by Andy Fan, partition-addition test case by me.

Discussion: https://postgr.es/m/20200802181131.GA27754@telsasoft.com

6f0b632f08 Support testing of cases where table schemas change after planning.
src/test/modules/Makefile | 1 +
src/test/modules/delay_execution/.gitignore | 3 +
src/test/modules/delay_execution/Makefile | 21 +++++
src/test/modules/delay_execution/delay_execution.c | 104 +++++++++++++++++++++
.../expected/partition-addition.out | 21 +++++
.../delay_execution/specs/partition-addition.spec | 38 ++++++++
6 files changed, 188 insertions(+)

Upstream: git.postgresql.org


  • Share