• Robert Haas's avatar
    Add a Gather Merge executor node. · 355d3993
    Robert Haas authored
    Like Gather, we spawn multiple workers and run the same plan in each
    one; however, Gather Merge is used when each worker produces the same
    output ordering and we want to preserve that output ordering while
    merging together the streams of tuples from various workers.  (In a
    way, Gather Merge is like a hybrid of Gather and MergeAppend.)
    
    This works out to a win if it saves us from having to perform an
    expensive Sort.  In cases where only a small amount of data would need
    to be sorted, it may actually be faster to use a regular Gather node
    and then sort the results afterward, because Gather Merge sometimes
    needs to wait synchronously for tuples whereas a pure Gather generally
    doesn't.  But if this avoids an expensive sort then it's a win.
    
    Rushabh Lathia, reviewed and tested by Amit Kapila, Thomas Munro,
    and Neha Sharma, and reviewed and revised by me.
    
    Discussion: http://postgr.es/m/CAGPqQf09oPX-cQRpBKS0Gq49Z+m6KBxgxd_p9gX8CKk_d75HoQ@mail.gmail.com
    355d3993
execnodes.h 77.8 KB