• Jeff Davis's avatar
    Fix bug #16784 in Disk-based Hash Aggregation. · 05c02589
    Jeff Davis authored
    Before processing tuples, agg_refill_hash_table() was setting all
    pergroup pointers to NULL to signal to advance_aggregates() that it
    should not attempt to advance groups that had spilled.
    
    The problem was that it also set the pergroups for sorted grouping
    sets to NULL, which caused rescanning to fail.
    
    Instead, change agg_refill_hash_table() to only set the pergroups for
    hashed grouping sets to NULL; and when compiling the expression, pass
    doSort=false.
    
    Reported-by: Alexander Lakhin
    Discussion: https://postgr.es/m/16784-7ff169bf2c3d1588%40postgresql.org
    Backpatch-through: 13
    05c02589
nodeAgg.c 148 KB