Order of enforcement of CHECK constraints? - Mailing list pgsql-hackers

From Tom Lane
Subject Order of enforcement of CHECK constraints?
Date
Msg-id 23683.1426878907@sss.pgh.pa.us
Whole thread Raw
Responses Re: Order of enforcement of CHECK constraints?  (Peter Geoghegan <pg@heroku.com>)
Re: Order of enforcement of CHECK constraints?  (Stephen Frost <sfrost@snowman.net>)
Re: Order of enforcement of CHECK constraints?  (Gavin Flower <GavinFlower@archidevsys.co.nz>)
Re: Order of enforcement of CHECK constraints?  (Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>)
List pgsql-hackers
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



pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: inherit support for foreign tables
Next
From: Peter Geoghegan
Date:
Subject: Re: Order of enforcement of CHECK constraints?