Robert Haas <robertmhaas@gmail.com> writes: > On Wed, Aug 5, 2020 at 1:30 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: >> I'm strongly tempted to convert the trailing Assert to an actual >> test-and-elog, too, but didn't do so here.
> I was thinking about that, too. +1 for taking that step.
Will do.
In the longer term, it's annoying that we have no test methodology for this other than "manually set a breakpoint here".
One of the methods I see is we can just add some GUC variable for some
action injection. basically it adds some code based on the GUC like this;
if (shall_delay_planning)
{
sleep(10)
};
AFAIK, MongoDB uses much such technology in their test framework. First it
defines the fail point [1], and then does code injection if the fail point is set [2].
At last, during the test it can set a fail point like a GUC, but with more attributes [3].
If that is useful in PG as well and it is not an urgent task, I would like to help
If we're going to allow plan-relevant DDL changes to happen with less than full table lock, I think we need to improve that. I spent a little bit of time just now trying to build an isolationtester case for this, and failed completely. So I wonder if we can create some sort of test module that allows capture of a plan tree and then execution of that plan tree later (even after relcache inval would normally have forced replanning). Obviously that could not be a normal SQL-accessible feature, because some types of invals would make the plan completely wrong, but for testing purposes it'd be mighty helpful to check that a stale plan still works.