aboutsummaryrefslogtreecommitdiff
path: root/src/backend/nodes/readfuncs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/nodes/readfuncs.c')
-rw-r--r--src/backend/nodes/readfuncs.c51
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);