From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Dominik Sander <depairet(at)gmail(dot)com> |
Cc: | pgsql-general(at)postgresql(dot)org, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Boolean partition constraint behaving strangely |
Date: | 2010-02-25 18:57:07 |
Message-ID: | 7285.1267124227@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general pgsql-hackers |
Dominik Sander <depairet(at)gmail(dot)com> writes:
> I have an issue with a table partitioned by one boolean column. The
> query planner only seems to skip the non matching table if expired
> (the column I use for the partition) is true.
Hm, interesting case. The reason it's behaving asymmetrically is the
fix for this bug:
http://archives.postgresql.org/pgsql-sql/2008-01/msg00084.php
The planner forces expressions like "bool_var = true" into the
simpler forms "bool_var" or "NOT bool_var" so as to recognize
that these forms are equivalent. However, that means that your
"expired = false" case looks like the case that was removed as
incorrect, ie
+ * Unfortunately we *cannot* use
+ * NOT A R=> B if: B => A
+ * because this type of reasoning fails to prove that B doesn't yield NULL.
It strikes me though that we could make the more limited deduction
that NOT A refutes A itself. That would fix this case, and I think
it would cover all the cases that we would have recognized if we'd
left the clauses in boolean-comparison form.
I'll see about fixing this for the next updates.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | dtrobert | 2010-02-25 19:26:21 | Problems with the Windows 8.4.1 upgrade from 8.3 on non-C drive |
Previous Message | Allan Kamau | 2010-02-25 17:41:22 | Re: Tool for determining field usage of database tables |
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2010-02-25 19:40:14 | Re: A thought: should we run pgindent now? |
Previous Message | Bruce Momjian | 2010-02-25 18:10:36 | Re: pg_stop_backup does not complete |