Re: Boolean partition constraint behaving strangely

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Boolean partition constraint behaving strangely
Дата
Msg-id 7285.1267124227@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Boolean partition constraint behaving strangely  (Dominik Sander <depairet@gmail.com>)
Список pgsql-general
Dominik Sander <depairet@gmail.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

В списке pgsql-general по дате отправления:

Предыдущее
От: Allan Kamau
Дата:
Сообщение: Re: Tool for determining field usage of database tables
Следующее
От: Andy Yoder
Дата:
Сообщение: Re: Tool for determining field usage of database tables