constraint_exclusion not working correctly

Started by PG Bug reporting formover 1 year ago2 messagesdocs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

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

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: PG Bug reporting form (#1)
Re: constraint_exclusion not working correctly

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