• Andres Freund's avatar
    User narrower representative tuples in the hash-agg hashtable. · fc4b3dea
    Andres Freund authored
    So far the hashtable stored representative tuples in the form of its
    input slot, with all columns in the hashtable that are not
    needed (i.e. not grouped upon or functionally dependent) set to NULL.
    
    Thats good for saving memory, but it turns out that having tuples full
    of NULL isn't free. slot_deform_tuple is faster if there's no NULL
    bitmap even if no NULLs are encountered, and skipping over leading NULLs
    isn't free.
    
    So compute a separate tuple descriptor that only contains the needed
    columns. As columns have already been moved in/out the slot for the
    hashtable that does not imply additional per-row overhead.
    
    Author: Andres Freund
    Reviewed-By: Heikki Linnakangas
    Discussion: https://postgr.es/m/20161103110721.h5i5t5saxfk5eeik@alap3.anarazel.de
    fc4b3dea
execnodes.h 72.6 KB