Re: Check constraints on partition parents only?
Nikhil Sontakke <nikhil.sontakke@enterprisedb.com>
From: Nikhil Sontakke <nikhil.sontakke@enterprisedb.com>
To: Andrew Dunstan <andrew@dunslane.net>
Cc: Robert Haas <robertmhaas@gmail.com>, Alvaro Herrera <alvherre@commandprompt.com>, Jerry Sievers <gsievers19@comcast.net>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2011-07-27T10:39:59Z
Lists: pgsql-hackers
Attachments
- special_case_CHECK_parent.patch (text/x-patch)
Hi, > Yeah, but I think we need to take that chance. At the very least, we >> need to support the equivalent of a non-inherited CHECK (false) on >> parent tables. >> > > Indeed. I usually enforce that with a trigger that raises an exception, but > of course that doesn't help at all with constraint exclusion, and I saw a > result just a few weeks ago (I forget the exact details) where it appeared > that the plan chosen was significantly worse because the parent table wasn't > excluded, so there's a non-trivial downside from having this restriction. > > The downside appears to be non-trivial indeed! I cooked up the attached patch to try to allow ALTER...ONLY...CHECK(false) on parent tables. If this approach looks acceptable, I can provide a complete patch later with some documentation changes (I think we ought to tell about this special case in the documentation) and a minor test case along with it (if the need be felt for the test case). Although partitioning ought to be looked at from a different angle completely, maybe this small patch can help out a bit in the current scheme of things, although this is indeed a unusual special casing... Thoughts? Regards, Nikhils