aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/dbsize.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2007-03-21 22:18:12 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2007-03-21 22:18:12 +0000
commit54d20024c1dad339acc8624d7ca902b762fe0844 (patch)
tree107270059759b4e114b661838d896da4f4df8ada /src/backend/utils/adt/dbsize.c
parent2b49e5d3cb8b6a71797969c50f5c247f232de989 (diff)
downloadpostgresql-54d20024c1dad339acc8624d7ca902b762fe0844.tar.gz
postgresql-54d20024c1dad339acc8624d7ca902b762fe0844.zip
Fix some problems with selectivity estimation for partial indexes.
First, genericcostestimate() was being way too liberal about including partial-index conditions in its selectivity estimate, resulting in substantial underestimates for situations such as an indexqual "x = 42" used with an index on x "WHERE x >= 40 AND x < 50". While the code is intentionally set up to favor selecting partial indexes when available, this was too much... Second, choose_bitmap_and() was likewise easily fooled by cases of this type, since it would similarly think that the partial index had selectivity independent of the indexqual. Fixed by using predicate_implied_by() rather than simple equality checks to determine redundancy. This is a good deal more expensive but I don't see much alternative. At least the extra cost is only paid when there's actually a partial index under consideration. Per report from Jeff Davis. I'm not going to risk back-patching this, though.
Diffstat (limited to 'src/backend/utils/adt/dbsize.c')
0 files changed, 0 insertions, 0 deletions