• Andres Freund's avatar
    Allow avoiding tuple copy within tuplesort_gettupleslot(). · fa117ee4
    Andres Freund authored
    Add a "copy" argument to make it optional to receive a copy of caller
    tuple that is safe to use following a subsequent manipulating of
    tuplesort's state.  This is a performance optimization.  Most existing
    tuplesort_gettupleslot() callers are made to opt out of copying.
    Existing callers that happen to rely on the validity of tuple memory
    beyond subsequent manipulations of the tuplesort request their own
    copy.
    
    This brings tuplesort_gettupleslot() in line with
    tuplestore_gettupleslot().  In the future, a "copy"
    tuplesort_getdatum() argument may be added, that similarly allows
    callers to opt out of receiving their own copy of tuple.
    
    In passing, clarify assumptions that callers of other tuplesort fetch
    routines may make about tuple memory validity, per gripe from Tom
    Lane.
    
    Author: Peter Geoghegan
    Discussion: CAM3SWZQWZZ_N=DmmL7tKy_OUjGH_5mN=N=A6h7kHyyDvEhg2DA@mail.gmail.com
    fa117ee4
tuplesort.h 4.87 KB