Re: NOT ENFORCED constraint feature

From: Peter Eisentraut <peter(at)eisentraut(dot)org>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, Ashutosh Bapat <ashutosh(dot)bapat(dot)oss(at)gmail(dot)com>
Cc: Amul Sul <sulamul(at)gmail(dot)com>, jian he <jian(dot)universality(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, Joel Jacobson <joel(at)compiler(dot)org>
Subject: Re: NOT ENFORCED constraint feature
Date: 2025-02-04 13:56:52
Message-ID: d9de67a9-46b4-4f56-8ad8-5510c7e6ffeb@eisentraut.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 03.02.25 13:19, Alvaro Herrera wrote:
> On 2025-Feb-03, Ashutosh Bapat wrote:
>
>> ```
>> If the
>> constraint is <literal>NOT ENFORCED</literal>, the database system will
>> not check the constraint. It is then up to the application code to
>> ensure that the constraints are satisfied. The database system might
>> still assume that the data actually satisfies the constraint for
>> optimization decisions where this does not affect the correctness of the
>> result.
>> ```
>
> IMO the third sentence should be removed because it is bogus. There's
> no situation in which a not-enforced constraint can be used for any
> query optimizations -- you cannot know if a constraint remains valid
> after it's been turned NOT ENFORCED, because anyone could insert data
> that violates it milliseconds after it stops being enforced. I think
> the expectation that the application is going to correctly enforce the
> constraint after it's told the database server not to enforce it, is
> going to be problematic. As I recall, we already do this in FDWs for
> instance and it's already a problem.

The database system could use the presence of a not enforced constraint
for selectivity estimation, for example.

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Tomas Vondra 2025-02-04 14:00:49 should we have a fast-path planning for OLTP starjoins?
Previous Message Peter Eisentraut 2025-02-04 13:54:28 Re: NOT ENFORCED constraint feature