Amit Kapila <amit.kapil...@gmail.com> writes: > On Mon, Aug 28, 2017 at 6:01 PM, Tom Lane <t...@sss.pgh.pa.us> wrote: >> Um, what's different about that than before?
> Earlier, we perform the rescan of all the nodes before ExecProcNode, > so workers will always start (restart) after the scan descriptor is > initialized. If what you're complaining about is that I put back the "if (outerPlan->chgParam == NULL)" test to allow postponement of the recursive ExecReScan call, I'm afraid that it's mere wishful thinking that omitting that test in nodeGather did anything. The nodes underneath the Gather are likely to do the same thing, so that the parallel table scan node itself is going to get a postponed rescan call anyway. See e.g. ExecReScanNestLoop(). I see your point that there's inadequate interlocking between resetting the parallel scan's shared state and starting a fresh set of workers, but that's a pre-existing bug. In practice I doubt it makes any difference, because according to my testing the leader will generally reach the table scan long before any workers do. It'd be nice to do better though. I'm inclined to think that what's needed is to move the reset of the shared state into a new "ExecParallelReInitializeDSM" plan tree walk, which would have to occur before we start the new set of workers. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers