Ray Ontko <rayo@ontko.com> writes:
> 1) here's the "bad" stats.
> 2) here's the "good" stats.
> Note that the information really is different.
Yeah. It seems that the critical difference is the null_frac; if I take
your "bad" values and change null_frac to 0 then I get
reasonable-looking answers, but with null_frac = 0.000333333 I indeed
get bad answers. I suspect null_frac is getting double-counted
somewhere, and depending on just how many nulls ANALYZE happens to find,
you might get pushed over the edge from a small selectivity to zero or
negative selectivity. Will dig further.
regards, tom lane