Обсуждение: BUG #17944: Partial index on boolean field is not picked when using = while the index is created with is

Поиск
Список
Период
Сортировка

BUG #17944: Partial index on boolean field is not picked when using = while the index is created with is

От
PG Bug reporting form
Дата:
The following bug has been logged on the website:

Bug reference:      17944
Logged by:          Ajeesh Sasidharan
Email address:      ajeesh2705@gmail.com
PostgreSQL version: 13.8
Operating system:   Linux
Description:

I have recently created a partial index on tables like following 

create index unprocessed_order_index
    on order (creation_date) where processed is false;

When I am querying the table using processed = false like below, the index
is not used 

SELECT count(*) from order where processed = false and creation_date <
now()

but the index is used while querying using processed is false

SELECT count(*) from order where processed is false and creation_date <
now()

I was expecting to treat both = and is same, or am I wrong


PG Bug reporting form <noreply@postgresql.org> writes:
> I have recently created a partial index on tables like following 

> create index unprocessed_order_index
>     on order (creation_date) where processed is false;

> When I am querying the table using processed = false like below, the index
> is not used 

> I was expecting to treat both = and is same, or am I wrong

IS and = are not the same.  You could argue that they have the same effect
in this particular case, but there's no logic in the planner that would
deduce that.

            regards, tom lane