• Tom Lane's avatar
    Disallow pushing volatile qual expressions down into DISTINCT subqueries. · 11470352
    Tom Lane authored
    A WHERE clause applied to the output of a subquery with DISTINCT should
    theoretically be applied only once per distinct row; but if we push it
    into the subquery then it will be evaluated at each row before duplicate
    elimination occurs.  If the qual is volatile this can give rise to
    observably wrong results, so don't do that.
    
    While at it, refactor a little bit to allow subquery_is_pushdown_safe
    to report more than one kind of restrictive condition without indefinitely
    expanding its argument list.
    
    Although this is a bug fix, it seems unwise to back-patch it into released
    branches, since it might de-optimize plans for queries that aren't giving
    any trouble in practice.  So apply to 9.4 but not further back.
    11470352
subselect.sql 11.9 KB