]> granicus.if.org Git - postgresql/commit
Modify prefix_selectivity() so that it will never estimate the selectivity
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 8 Mar 2008 22:41:38 +0000 (22:41 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 8 Mar 2008 22:41:38 +0000 (22:41 +0000)
commit422495d0da79d8a36d6f3700a96c6acddd3e1d50
tree45c9358fb6fbafcc537915027358e6c35b9cd03a
parent6f10eb21118f1ce72d4dd144c494749e25658d51
Modify prefix_selectivity() so that it will never estimate the selectivity
of the generated range condition var >= 'foo' AND var < 'fop' as being less
than what eqsel() would estimate for var = 'foo'.  This is intuitively
reasonable and it gets rid of the need for some entirely ad-hoc coding we
formerly used to reject bogus estimates.  The basic problem here is that
if the prefix is more than a few characters long, the two boundary values
are too close together to be distinguishable by comparison to the column
histogram, resulting in a selectivity estimate of zero, which is often
not very sane.  Change motivated by an example from Peter Eisentraut.

Arguably this is a bug fix, but I'll refrain from back-patching it
for the moment.
src/backend/utils/adt/selfuncs.c