• Tom Lane's avatar
    Support boolean columns in functional-dependency statistics. · ecc27d55
    Tom Lane authored
    There's no good reason that the multicolumn stats stuff shouldn't work on
    booleans.  But it looked only for "Var = pseudoconstant" clauses, and it
    will seldom find those for boolean Vars, since earlier phases of planning
    will fold "boolvar = true" or "boolvar = false" to just "boolvar" or
    "NOT boolvar" respectively.  Improve dependencies_clauselist_selectivity()
    to recognize such clauses as equivalent to equality restrictions.
    
    This fixes a failure of the extended stats mechanism to apply in a case
    reported by Vitaliy Garnashevich.  It's not a complete solution to his
    problem because the bitmap-scan costing code isn't consulting extended
    stats where it should, but that's surely an independent issue.
    
    In passing, improve some comments, get rid of a NumRelids() test that's
    redundant with the preceding bms_membership() test, and fix
    dependencies_clauselist_selectivity() so that estimatedclauses actually
    is a pure output argument as stated by its API contract.
    
    Back-patch to v10 where this code was introduced.
    
    Discussion: https://postgr.es/m/73a4936d-2814-dc08-ed0c-978f76f435b0@gmail.com
    ecc27d55
dependencies.c 30 KB