Following patch implements record of whether a constraint is inherited
or not, and prevents dropping of inherited constraints.
What it doesn't do:
It doesn't yet prevent dropping the parent constraint, which is wrong,
clearly, but what to do about it?
1. make dropping a constraint drop all constraints dependent upon it
(without any explicit cascade)
2. add a new clause to ALTER TABLE .... DROP CONSTRAINT .... CASCADE
I prefer (1), since it is SQL Standard compliant, easier to remember and
automatic de-inheritance is the natural opposite of the automatic
inheritance process.
Current patch passes make check on cvstip, applies cleanly.
Further patch will utilise this new knowledge to reduce the number of
tests made during constraint_exclusion.
Best Regards, Simon Riggs