From 6b603e67dcd1a93a56f3c6b5f36fd8f08e2ee35d Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Fri, 15 Nov 2002 02:50:21 +0000 Subject: Add DOMAIN check constraints. Rod Taylor --- src/backend/nodes/readfuncs.c | 50 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) (limited to 'src/backend/nodes/readfuncs.c') diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c index 568bf8ee1e4..9b2198ec5a5 100644 --- a/src/backend/nodes/readfuncs.c +++ b/src/backend/nodes/readfuncs.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.136 2002/11/06 00:00:44 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.137 2002/11/15 02:50:07 momjian Exp $ * * NOTES * Most of the read functions for plan nodes are tested. (In fact, they @@ -949,12 +949,56 @@ _readConstraintTest(void) token = pg_strtok(&length); /* now read it */ local_node->name = nullable_string(token, length); + token = pg_strtok(&length); /* get :domname */ + token = pg_strtok(&length); /* get domname */ + local_node->domname = nullable_string(token, length); + token = pg_strtok(&length); /* eat :check_expr */ local_node->check_expr = nodeRead(true); /* now read it */ return local_node; } +/* ---------------- + * _readConstraintTestValue + * + * ConstraintTestValue is a subclass of Node + * ---------------- + */ +static ConstraintTestValue * +_readConstraintTestValue(void) +{ + ConstraintTestValue *local_node; + char *token; + int length; + + local_node = makeNode(ConstraintTestValue); + token = pg_strtok(&length); /* eat :typeid */ + token = pg_strtok(&length); /* get typeid */ + local_node->typeId = atooid(token); + token = pg_strtok(&length); /* eat :typemod */ + token = pg_strtok(&length); /* get typemod */ + local_node->typeMod = atoi(token); + + return local_node; +} + +/* ---------------- + * _readDomainConstraintValue + * + * DomainConstraintValue is a subclass of Node + * ---------------- + */ +static DomainConstraintValue * +_readDomainConstraintValue(void) +{ + DomainConstraintValue *local_node; + + local_node = makeNode(DomainConstraintValue); + + return local_node; +} + /* ---------------- * _readVar * @@ -2300,6 +2344,10 @@ parsePlanString(void) return_value = _readBooleanTest(); else if (length == 14 && strncmp(token, "CONSTRAINTTEST", length) == 0) return_value = _readConstraintTest(); + else if (length == 21 && strncmp(token, "DOMAINCONSTRAINTVALUE", length) == 0) + return_value = _readDomainConstraintValue(); + else if (length == 19 && strncmp(token, "CONSTRAINTTESTVALUE", length) == 0) + return_value = _readConstraintTestValue(); else elog(ERROR, "badly formatted planstring \"%.10s\"...", token); -- cgit v1.2.3