Thread: constraint_exclusion not working correctly

constraint_exclusion not working correctly

From
PG Doc comments form
Date:
The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/16/ddl-partitioning.html
Description:

Hello,

I have noted that, in order for constraint exclusion to work correctly when
partitioning using inheritance, we must use simple comparisons in check
constraints (e.g., =, >=, <=, BETWEEN, etc.). If conditions are combined
using AND or OR, unnecessary partitions may be scanned.

Therefore, the example in this PostgreSQL documentation will not work
properly with constraints like CHECK (logdate >= DATE '2006-02-01' AND
logdate < DATE '2006-03-01'). However, it will work with the BETWEEN
operator.

Regards

Re: constraint_exclusion not working correctly

From
Tom Lane
Date:
PG Doc comments form <noreply@postgresql.org> writes:
> I have noted that, in order for constraint exclusion to work correctly when
> partitioning using inheritance, we must use simple comparisons in check
> constraints (e.g., =, >=, <=, BETWEEN, etc.). If conditions are combined
> using AND or OR, unnecessary partitions may be scanned.

> Therefore, the example in this PostgreSQL documentation will not work
> properly with constraints like CHECK (logdate >= DATE '2006-02-01' AND
> logdate < DATE '2006-03-01'). However, it will work with the BETWEEN
> operator.

The example in the documentation works perfectly well for me.

            regards, tom lane