From: | Gavin Flower <GavinFlower(at)archidevsys(dot)co(dot)nz> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Order of enforcement of CHECK constraints? |
Date: | 2015-03-20 19:38:54 |
Message-ID: | 550C774E.1080303@archidevsys.co.nz |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 21/03/15 08:15, Tom Lane wrote:
> My Salesforce colleagues noticed some tests flapping as a result of table
> CHECK constraints not always being enforced in the same order; ie, if a
> tuple insertion/update violates more than one CHECK constraint, it's not
> deterministic which one is reported. This is evidently because
> relcache.c's CheckConstraintFetch() just happily loads up the constraints
> in whatever order it happens to find them in pg_constraint.
>
> There's at least one regression test case where this can happen, so we've
> been lucky so far that this hasn't caused buildfarm noise.
>
> We could fix it by, say, having CheckConstraintFetch() sort the
> constraints by name after loading them.
>
> In principle the same problem could occur for domain CHECK constraints,
> though the odds of multiple CHECKs failing are probably a lot lower.
>
> Do people think this is worth fixing?
>
> regards, tom lane
>
>
I think that this is a good idea, I would have implicitly assumed that
it was deterministic.
Additionally, people could then name CHECK constraints in a way to get
whatever order they wanted.
The documentation of CREATE TRIGGER says (reading Fabrizio's post
inspired me to look it up):
"If multiple triggers of the same kind are defined for the same event,
they will be fired in alphabetical order by name."
So I would have implicitly assumed the same for CHECK constraints, had I
recently read that.
So I think the current situation is a violation of POLA.
Cheers,
Gavin
From | Date | Subject | |
---|---|---|---|
Next Message | Greg Stark | 2015-03-20 19:40:53 | Re: Remove fsync ON/OFF as a visible option? |
Previous Message | Tom Lane | 2015-03-20 19:37:29 | Re: Order of enforcement of CHECK constraints? |