• Andres Freund's avatar
    jit: Re-allow JIT compilation of execGrouping.c hashtable comparisons. · ac88807f
    Andres Freund authored
    In the course of 5567d12c, 356687bd and 317ffdfe, I changed
    BuildTupleHashTable[Ext]'s call to ExecBuildGroupingEqual to not pass
    in the parent node, but NULL. Which in turn prevents the tuple
    equality comparator from being JIT compiled.  While that fixes
    bug #15486, it is not actually necessary after all of the above commits,
    as we don't re-build the comparator when using the new
    BuildTupleHashTableExt() interface (as the content of the hashtable
    are reset, but the TupleHashTable itself is not).
    
    Therefore re-allow jit compilation for callers that use
    BuildTupleHashTableExt with a separate context for "metadata" and
    content.
    
    As in the previous commit, there's ongoing work to make this easier to
    test to prevent such regressions in the future, but that
    infrastructure is not going to be backpatchable.
    
    The performance impact of not JIT compiling hashtable equality
    comparators can be substantial e.g. for aggregation queries that
    aggregate a lot of input rows to few output rows (when there are a lot
    of output groups, there will be fewer comparisons).
    
    Author: Andres Freund
    Discussion: https://postgr.es/m/20190927072053.njf6prdl3vb7y7qb@alap3.anarazel.de
    Backpatch: 11, just as 5567d12c
    ac88807f
execGrouping.c 15.2 KB