aboutsummaryrefslogtreecommitdiff
path: root/src/common/jsonapi.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2022-11-08 10:36:04 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2022-11-08 10:36:04 -0500
commit042c9091f0fc131d001516bafc9ce334fe20d711 (patch)
treed6ef16c8e060558b8d4b57cfa226bea5c89b9bf3 /src/common/jsonapi.c
parent05a7be93558c614ab89c794cb1d301ea9ff33199 (diff)
downloadpostgresql-042c9091f0fc131d001516bafc9ce334fe20d711.tar.gz
postgresql-042c9091f0fc131d001516bafc9ce334fe20d711.zip
Produce more-optimal plans for bitmap scans on boolean columns.
The planner simplifies boolean comparisons such as "x = true" and "x = false" down to "x" and "NOT x" respectively, to have a canonical form to ease comparisons. However, if we want to use an index on x, the index AM APIs require us to reconstitute the comparison-operator form of the indexqual. While that works, in bitmap indexscans the canonical form of the qual was emitted as a "filter" condition although it really only needs to be a "recheck" condition, because create_bitmap_scan_plan didn't recognize the equivalence of that form with the generated indexqual. booleq() is pretty cheap so that likely doesn't make very much difference, but it's unsightly so let's clean it up. To fix, add a case to predicate_implied_by() to recognize the equivalence of such clauses. This is a relatively low-cost place to add a check, and perhaps it will have additional use cases in future. Richard Guo and Tom Lane, per discussion of bug #17618 from Sindy Senorita. Discussion: https://postgr.es/m/17618-7a2240bfaa7e84ae@postgresql.org
Diffstat (limited to 'src/common/jsonapi.c')
0 files changed, 0 insertions, 0 deletions