pgsql: Apply table and domain CHECK constraints in name order.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Apply table and domain CHECK constraints in name order.
Date: 2015-03-23 20:59:48
Message-ID: E1Ya9Rs-0000Hk-G1@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Apply table and domain CHECK constraints in name order.

Previously, CHECK constraints of the same scope were checked in whatever
order they happened to be read from pg_constraint. (Usually, but not
reliably, this would be creation order for domain constraints and reverse
creation order for table constraints, because of differing implementation
details.) Nondeterministic results of this sort are problematic at least
for testing purposes, and in discussion it was agreed to be a violation of
the principle of least astonishment. Therefore, borrow the principle
already established for triggers, and apply such checks in name order
(using strcmp() sort rules). This lets users control the check order
if they have a mind to.

Domain CHECK constraints still follow the rule of checking lower nested
domains' constraints first; the name sort only applies to multiple
constraints attached to the same domain.

In passing, I failed to resist the temptation to wordsmith a bit in
create_domain.sgml.

Apply to HEAD only, since this could result in a behavioral change in
existing applications, and the potential regression test failures have
not actually been observed in our buildfarm.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/e5f455f59fed0632371cddacddd79895b148dc07

Modified Files
--------------
doc/src/sgml/ref/create_domain.sgml | 47 ++++++++++++++++++----
doc/src/sgml/ref/create_table.sgml | 8 ++++
src/backend/utils/cache/relcache.c | 17 ++++++++
src/backend/utils/cache/typcache.c | 59 +++++++++++++++++++++++++---
src/test/regress/input/constraints.source | 2 +-
src/test/regress/output/constraints.source | 18 ++++-----
6 files changed, 128 insertions(+), 23 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message juan perez 2015-03-23 22:09:47 Re: pgsql: Try to fix MSVC build of pg_rewind.
Previous Message Alvaro Herrera 2015-03-23 19:00:35 Re: pgsql: vacuumdb: enable parallel mode