Re: BUG #8571: Planner miss-estimates '<null_column> is not true' as not matching any rows

From: Timothy Garnett <tgarnett(at)panjiva(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #8571: Planner miss-estimates '<null_column> is not true' as not matching any rows
Date: 2013-10-31 15:46:13
Message-ID: CAPcyiQ334_UOZC47z5JHY_Qqf93xmWbUZGD8Oh6ycj3pRh6HuA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Thanks for the update, glad to here it's fixed in the latest version (we're
planning on upgrading soon).

Tim

On Thu, Oct 31, 2013 at 11:09 AM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:

> tgarnett(at)panjiva(dot)com writes:
> > The following bug has been logged on the website:
> > Bug reference: 8571
> > Logged by: Timothy Garnett
> > Email address: tgarnett(at)panjiva(dot)com
> > PostgreSQL version: 9.2.4
> > Operating system: Ubuntu Linux x86_64 12.04.3 LTS
> > Description:
>
> > The planner seems to be badly miss-estimating the selectivity of '<always
> > null col> IS NOT true/false', it does not seem to do so for equivalent
> > expressions such as '<col> is null or not <col>' or expressions where the
> > selectivity is difficult to determine.
>
> This example works as desired for me in 9.2.5. I think the fix was this:
>
> Author: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
> Branch: master [b32a25c3d] 2013-07-24 00:44:09 -0400
> Branch: REL9_3_STABLE Release: REL9_3_0 [808d1f812] 2013-07-24 00:44:22
> -0400
> Branch: REL9_2_STABLE Release: REL9_2_5 [9f8254c18] 2013-07-24 00:44:36
> -0400
> Branch: REL9_1_STABLE Release: REL9_1_10 [13f11c8a8] 2013-07-24 00:44:46
> -0400
> Branch: REL9_0_STABLE Release: REL9_0_14 [8e992b018] 2013-07-24 00:44:59
> -0400
> Branch: REL8_4_STABLE Release: REL8_4_18 [0766904ad] 2013-07-24 00:45:15
> -0400
>
> Fix booltestsel() for case where we have NULL stats but not MCV stats.
>
> In a boolean column that contains mostly nulls, ANALYZE might not find
> enough non-null values to populate the most-common-values stats,
> but it would still create a pg_statistic entry with stanullfrac set.
> The logic in booltestsel() for this situation did the wrong thing for
> "col IS NOT TRUE" and "col IS NOT FALSE" tests, forgetting that null
> values would satisfy these tests (so that the true selectivity would
> be close to one, not close to zero). Per bug #8274.
>
> Fix by Andrew Gierth, some comment-smithing by me.
>
>
> regards, tom lane
>

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Kevin Grittner 2013-10-31 22:22:57 Re: [BUGS] BUG #8542: Materialized View with another column_name does not work?
Previous Message Tom Lane 2013-10-31 15:09:10 Re: BUG #8571: Planner miss-estimates '<null_column> is not true' as not matching any rows