diff options
Diffstat (limited to 'src/backend/nodes/readfuncs.c')
-rw-r--r-- | src/backend/nodes/readfuncs.c | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c index 0a22194e47c..9598d8311e5 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.124 2002/07/04 15:23:54 thomas Exp $ + * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.125 2002/07/18 04:41:45 momjian Exp $ * * NOTES * Most of the read functions for plan nodes are tested. (In fact, they @@ -881,6 +881,53 @@ _readCaseWhen(void) return local_node; } +static BetweenExpr * +_readBetweenExpr(void) +{ + BetweenExpr *local_node; + char *token; + int length; + + local_node = makeNode(BetweenExpr); + + token = pg_strtok(&length); /* eat :expr */ + local_node->expr = nodeRead(true); + + token = pg_strtok(&length); /* eat :not */ + token = pg_strtok(&length); /* get not */ + local_node->not = strtobool(token); + + token = pg_strtok(&length); /* eat :symmetric */ + token = pg_strtok(&length); /* get symmetric */ + local_node->symmetric = strtobool(token); + + token = pg_strtok(&length); /* eat :lexpr */ + local_node->lexpr = nodeRead(true); + + token = pg_strtok(&length); /* eat :rexpr */ + local_node->rexpr = nodeRead(true); + + token = pg_strtok(&length); /* eat :gthan */ + local_node->gthan = nodeRead(true); + + token = pg_strtok(&length); /* eat :lthan */ + local_node->lthan = nodeRead(true); + + token = pg_strtok(&length); /* eat :typeid */ + token = pg_strtok(&length); /* get typeid */ + local_node->typeId = atooid(token); + + token = pg_strtok(&length); /* eat :typelen */ + token = pg_strtok(&length); /* get typelen */ + local_node->typeLen = atoui(token); + + token = pg_strtok(&length); /* eat :typebyval */ + token = pg_strtok(&length); /* get typebyval */ + local_node->typeByVal = strtobool(token); + + return local_node; +} + /* ---------------- * _readNullTest * @@ -2132,6 +2179,8 @@ parsePlanString(void) return_value = _readNullTest(); else if (length == 11 && strncmp(token, "BOOLEANTEST", length) == 0) return_value = _readBooleanTest(); + else if (length == 11 && strncmp(token, "BETWEENEXPR", length) == 0) + return_value = _readBetweenExpr(); else elog(ERROR, "badly formatted planstring \"%.10s\"...", token); |