• Andres Freund's avatar
    Fix overeager pushdown of HAVING clauses when grouping sets are used. · a6897efa
    Andres Freund authored
    In 61444bfb we started to allow HAVING clauses to be fully pushed down
    into WHERE, even when grouping sets are in use. That turns out not to
    work correctly, because grouping sets can "produce" NULLs, meaning that
    filtering in WHERE and HAVING can have different results, even when no
    aggregates or volatile functions are involved.
    
    Instead only allow pushdown of empty grouping sets.
    
    It'd be nice to do better, but the exact mechanics of deciding which
    cases are safe are still being debated. It's important to give correct
    results till we find a good solution, and such a solution might not be
    appropriate for backpatching anyway.
    
    Bug: #13863
    Reported-By: 'wrb'
    Diagnosed-By: Dean Rasheed
    Author: Andrew Gierth
    Reviewed-By: Dean Rasheed and Andres Freund
    Discussion: 20160113183558.12989.56904@wrigleys.postgresql.org
    Backpatch: 9.5, where grouping sets were introduced
    a6897efa
groupingsets.out 22.7 KB