Amit Kapila <amit.kapil...@gmail.com> writes: > On Tue, Aug 29, 2017 at 10:05 PM, Tom Lane <t...@sss.pgh.pa.us> wrote: >> If no objections, I'll do the additional legwork and push.
> No objections. Done. Out of curiosity, I pushed just the rescan-param patch to the buildfarm to start with, to see if anything would fall over, and indeed some things did: * prairiedog has shown several instances of a parallel bitmap heap scan test failing with too many rows being retrieved. I think what's happening there is that the leader's ExecReScanBitmapHeapScan call is slow enough to happen that the worker(s) have already retrieved some rows using the old shared state. We'd determined that the equivalent case for a plain seqscan would result in no failure because the workers would think they had nothing to do, but this evidently isn't true for a parallel bitmap scan. * prairiedog and loach have both shown failures with the test case from a2b70c89c, in which the *first* scan produces too many rows and then the later ones are fine. This befuddled me initially, but then I remembered that nodeNestloop.c will unconditionally do an ExecReScan call on its inner plan before the first ExecProcNode call. With the modified code from 7df2c1f8d, this results in the leader's Gather node's top child having a pending rescan on it due to a chgParam bit. That's serviced when we do the first ExecProcNode call on the child, after having started the workers. So that's another way in which a ReScan call can happen in the leader when workers are already running, and if the workers have already scanned some pages then those pages will get scanned again. So I think this is all fixed up by 41b0dd987, but evidently those patches are not nearly as independent as I first thought. 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