diff options
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; } |