diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2002-07-16 05:53:34 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2002-07-16 05:53:34 +0000 |
commit | 30ec31604d56388b7b05ecf48cd8fa56c18f181b (patch) | |
tree | bc8ff344e3814846bc71b0693144c2d9e73e0060 /src/backend/catalog/pg_constraint.c | |
parent | 1e07ab78cc99520c4c300a3230689521b78f4c16 (diff) |
Add code to extract dependencies from an expression tree, and use it
to build dependencies for rules, constraint expressions, and default
expressions. Repair some problems in the original design of
recursiveDeletion() exposed by more complex dependency sets. Fix
regression tests that were deleting things in illegal sequences.
Diffstat (limited to 'src/backend/catalog/pg_constraint.c')
-rw-r--r-- | src/backend/catalog/pg_constraint.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/backend/catalog/pg_constraint.c b/src/backend/catalog/pg_constraint.c index 47712dde1d6..41580f2c53f 100644 --- a/src/backend/catalog/pg_constraint.c +++ b/src/backend/catalog/pg_constraint.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/pg_constraint.c,v 1.1 2002/07/12 18:43:15 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/pg_constraint.c,v 1.2 2002/07/16 05:53:33 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -52,6 +52,7 @@ CreateConstraintEntry(const char *constraintName, char foreignUpdateType, char foreignDeleteType, char foreignMatchType, + Node *conExpr, const char *conBin, const char *conSrc) { @@ -227,6 +228,24 @@ CreateConstraintEntry(const char *constraintName, } } + if (conExpr != NULL) + { + /* + * Register dependencies from constraint to objects mentioned + * in CHECK expression. We gin up a rather bogus rangetable + * list to handle any Vars in the constraint. + */ + RangeTblEntry rte; + + MemSet(&rte, 0, sizeof(rte)); + rte.type = T_RangeTblEntry; + rte.rtekind = RTE_RELATION; + rte.relid = relId; + + recordDependencyOnExpr(&conobject, conExpr, makeList1(&rte), + DEPENDENCY_NORMAL); + } + return conOid; } |