mirror of
https://github.com/postgres/postgres.git
synced 2025-06-13 07:41:39 +03:00
Add DOMAIN check constraints.
Rod Taylor
This commit is contained in:
@ -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);
|
||||
|
||||
|
Reference in New Issue
Block a user