• Andres Freund's avatar
    Fix handling of NULLs returned by aggregate combine functions. · 59b71c6f
    Andres Freund authored
    When strict aggregate combine functions, used in multi-stage/parallel
    aggregation, returned NULL, we didn't check for that, invoking the
    combine function with NULL the next round, despite it being strict.
    
    The equivalent code invoking normal transition functions has a check
    for that situation, which did not get copied in a7de3dc5. Fix the
    bug by adding the equivalent check.
    
    Based on a quick look I could not find any strict combine functions in
    core actually returning NULL, and it doesn't seem very likely external
    users have done so. So this isn't likely to have caused issues in
    practice.
    
    Add tests verifying transition / combine functions returning NULL is
    tested.
    
    Reported-By: Andres Freund
    Author: Andres Freund
    Discussion: https://postgr.es/m/20171121033642.7xvmjqrl4jdaaat3@alap3.anarazel.de
    Backpatch: 9.6, where parallel aggregation was introduced
    59b71c6f
aggregates.sql 27.6 KB