• Tom Lane's avatar
    Improve division of labor between execParallel.c and nodeGather[Merge].c. · 51daa7bd
    Tom Lane authored
    Move the responsibility for creating/destroying TupleQueueReaders into
    execParallel.c, to avoid duplicative coding in nodeGather.c and
    nodeGatherMerge.c.  Also, instead of having DestroyTupleQueueReader do
    shm_mq_detach, do it in the caller (which is now only ExecParallelFinish).
    This means execParallel.c does both the attaching and detaching of the
    tuple-queue-reader shm_mqs, which seems less weird than the previous
    arrangement.
    
    These changes also eliminate a vestigial memory leak (of the pei->tqueue
    array).  It's now demonstrable that rescans of Gather or GatherMerge don't
    leak memory.
    
    Discussion: https://postgr.es/m/8670.1504192177@sss.pgh.pa.us
    51daa7bd
nodeGather.c 13.3 KB