summaryrefslogtreecommitdiff
path: root/src/backend/catalog/pg_constraint.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/catalog/pg_constraint.c')
-rw-r--r--src/backend/catalog/pg_constraint.c21
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;
}