• Tom Lane's avatar
    Fix an oversight in the 8.2 patch that improved mergejoin performance by · e540b972
    Tom Lane authored
    inserting a materialize node above an inner-side sort node, when the sort is
    expected to spill to disk.  (The materialize protects the sort from having
    to support mark/restore, allowing it to do its final merge pass on-the-fly.)
    We neglected to teach cost_mergejoin about that hack, so it was failing to
    include the materialize's costs in the estimated cost of the mergejoin.
    The materialize's costs are generally going to be pretty negligible in
    comparison to the sort's, so this is only a small error and probably not
    worth back-patching; but it's still wrong.
    
    In the similar case where a materialize is inserted to protect an inner-side
    node that can't do mark/restore at all, it's still true that the materialize
    should not spill to disk, and so we should cost it cheaply rather than
    expensively.
    
    Noted while thinking about a question from Tom Raney.
    e540b972
pathnode.c 39.8 KB