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.c288
1 files changed, 29 insertions, 259 deletions
diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c
index c49ad053f1b..98385dd96f6 100644
--- a/src/backend/nodes/readfuncs.c
+++ b/src/backend/nodes/readfuncs.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.71 1999/08/09 06:20:24 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.72 1999/08/16 02:17:43 tgl Exp $
*
* NOTES
* Most of the read functions for plan nodes are tested. (In fact, they
@@ -1414,55 +1414,6 @@ _readRowMark()
}
/* ----------------
- * _readPathOrder
- *
- * PathOrder is part of Path and it's subclasses.
- * ----------------
- */
-static PathOrder *
-_readPathOrder()
-{
- PathOrder *local_node;
- char *token;
- int length;
-
- local_node = makeNode(PathOrder);
-
- token = lsptok(NULL, &length); /* get :ordtype */
- token = lsptok(NULL, &length); /* now read it */
- local_node->ordtype = atol(token);
-
- if (local_node->ordtype == SORTOP_ORDER)
- {
- token = lsptok(NULL, &length); /* get :sortop */
-
- if (length == 0)
- local_node->ord.sortop = NULL;
- else
- {
- int i = -1;
-
- local_node->ord.sortop = palloc(sizeof(Oid) * (INDEX_MAX_KEYS + 1));
-
- do
- {
- i++;
- Assert(i <= INDEX_MAX_KEYS);
- token = lsptok(NULL, &length); /* now read it */
- local_node->ord.sortop[i] = strtoul(token, NULL, 10);
- } while (local_node->ord.sortop[i] != 0);
- }
- }
- else
- {
- token = lsptok(NULL, &length); /* get :merge */
- local_node->ord.merge = nodeRead(true); /* now read it */
- }
-
- return local_node;
-}
-
-/* ----------------
* _readPath
*
* Path is a subclass of Node.
@@ -1485,9 +1436,6 @@ _readPath()
token = lsptok(NULL, &length); /* now read it */
local_node->path_cost = (Cost) atof(token);
- token = lsptok(NULL, &length); /* get :pathorder */
- local_node->pathorder = nodeRead(true); /* now read it */
-
token = lsptok(NULL, &length); /* get :pathkeys */
local_node->pathkeys = nodeRead(true); /* now read it */
@@ -1517,9 +1465,6 @@ _readIndexPath()
token = lsptok(NULL, &length); /* now read it */
local_node->path.path_cost = (Cost) atof(token);
- token = lsptok(NULL, &length); /* get :pathorder */
- local_node->path.pathorder = nodeRead(true); /* now read it */
-
token = lsptok(NULL, &length); /* get :pathkeys */
local_node->path.pathkeys = nodeRead(true); /* now read it */
@@ -1529,6 +1474,9 @@ _readIndexPath()
token = lsptok(NULL, &length); /* get :indexqual */
local_node->indexqual = nodeRead(true); /* now read it */
+ token = lsptok(NULL, &length); /* get :joinrelids */
+ local_node->joinrelids = toIntList(nodeRead(true));
+
return local_node;
}
@@ -1545,7 +1493,6 @@ _readNestPath()
char *token;
int length;
-
local_node = makeNode(NestPath);
token = lsptok(NULL, &length); /* get :pathtype */
@@ -1556,9 +1503,6 @@ _readNestPath()
token = lsptok(NULL, &length); /* now read it */
local_node->path.path_cost = (Cost) atof(token);
- token = lsptok(NULL, &length); /* get :pathorder */
- local_node->path.pathorder = nodeRead(true); /* now read it */
-
token = lsptok(NULL, &length); /* get :pathkeys */
local_node->path.pathkeys = nodeRead(true); /* now read it */
@@ -1585,14 +1529,6 @@ _readNestPath()
local_node->innerjoinpath = NULL;
- token = lsptok(NULL, &length); /* get :outerjoincost */
- token = lsptok(NULL, &length); /* now read it */
-
- local_node->path.outerjoincost = (Cost) atof(token);
-
- token = lsptok(NULL, &length); /* get :joinid */
- local_node->path.joinid = toIntList(nodeRead(true)); /* now read it */
-
return local_node;
}
@@ -1621,9 +1557,6 @@ _readMergePath()
local_node->jpath.path.path_cost = (Cost) atof(token);
- token = lsptok(NULL, &length); /* get :pathorder */
- local_node->jpath.path.pathorder = nodeRead(true); /* now read it */
-
token = lsptok(NULL, &length); /* get :pathkeys */
local_node->jpath.path.pathkeys = nodeRead(true); /* now read it */
@@ -1650,14 +1583,6 @@ _readMergePath()
local_node->jpath.innerjoinpath = NULL;
- token = lsptok(NULL, &length); /* get :outerjoincost */
- token = lsptok(NULL, &length); /* now read it */
-
- local_node->jpath.path.outerjoincost = (Cost) atof(token);
-
- token = lsptok(NULL, &length); /* get :joinid */
- local_node->jpath.path.joinid = toIntList(nodeRead(true)); /* now read it */
-
token = lsptok(NULL, &length); /* get :path_mergeclauses */
local_node->path_mergeclauses = nodeRead(true); /* now read it */
@@ -1695,9 +1620,6 @@ _readHashPath()
local_node->jpath.path.path_cost = (Cost) atof(token);
- token = lsptok(NULL, &length); /* get :pathorder */
- local_node->jpath.path.pathorder = nodeRead(true); /* now read it */
-
token = lsptok(NULL, &length); /* get :pathkeys */
local_node->jpath.path.pathkeys = nodeRead(true); /* now read it */
@@ -1724,116 +1646,34 @@ _readHashPath()
local_node->jpath.innerjoinpath = NULL;
- token = lsptok(NULL, &length); /* get :outerjoincost */
- token = lsptok(NULL, &length); /* now read it */
-
- local_node->jpath.path.outerjoincost = (Cost) atof(token);
-
- token = lsptok(NULL, &length); /* get :joinid */
- local_node->jpath.path.joinid = toIntList(nodeRead(true)); /* now read it */
-
token = lsptok(NULL, &length); /* get :path_hashclauses */
local_node->path_hashclauses = nodeRead(true); /* now read it */
- token = lsptok(NULL, &length); /* get :outerhashkeys */
- local_node->outerhashkeys = nodeRead(true); /* now read it */
-
- token = lsptok(NULL, &length); /* get :innerhashkeys */
- local_node->innerhashkeys = nodeRead(true); /* now read it */
-
- return local_node;
-}
-
-/* ----------------
- * _readOrderKey
- *
- * OrderKey is a subclass of Node.
- * ----------------
- */
-static OrderKey *
-_readOrderKey()
-{
- OrderKey *local_node;
- char *token;
- int length;
-
- local_node = makeNode(OrderKey);
-
- token = lsptok(NULL, &length); /* get :attribute_number */
- token = lsptok(NULL, &length); /* now read it */
-
- local_node->attribute_number = atoi(token);
-
- token = lsptok(NULL, &length); /* get :array_index */
- token = lsptok(NULL, &length); /* now read it */
-
- local_node->array_index = strtoul(token, NULL, 10);
-
- return local_node;
-}
-
-/* ----------------
- * _readJoinKey
- *
- * JoinKey is a subclass of Node.
- * ----------------
- */
-static JoinKey *
-_readJoinKey()
-{
- JoinKey *local_node;
- char *token;
- int length;
-
- local_node = makeNode(JoinKey);
-
- token = lsptok(NULL, &length); /* get :outer */
- local_node->outer = nodeRead(true); /* now read it */
-
- token = lsptok(NULL, &length); /* get :inner */
- local_node->inner = nodeRead(true); /* now read it */
-
return local_node;
}
/* ----------------
- * _readMergeOrder
+ * _readPathKeyItem
*
- * MergeOrder is a subclass of Node.
+ * PathKeyItem is a subclass of Node.
* ----------------
*/
-static MergeOrder *
-_readMergeOrder()
+static PathKeyItem *
+_readPathKeyItem()
{
- MergeOrder *local_node;
+ PathKeyItem *local_node;
char *token;
int length;
- local_node = makeNode(MergeOrder);
- token = lsptok(NULL, &length); /* get :join_operator */
- token = lsptok(NULL, &length); /* now read it */
-
- local_node->join_operator = atol(token);
+ local_node = makeNode(PathKeyItem);
- token = lsptok(NULL, &length); /* get :left_operator */
+ token = lsptok(NULL, &length); /* get :sortop */
token = lsptok(NULL, &length); /* now read it */
- local_node->left_operator = atol(token);
-
- token = lsptok(NULL, &length); /* get :right_operator */
- token = lsptok(NULL, &length); /* now read it */
+ local_node->sortop = atol(token);
- local_node->right_operator = atol(token);
-
- token = lsptok(NULL, &length); /* get :left_type */
- token = lsptok(NULL, &length); /* now read it */
-
- local_node->left_type = atol(token);
-
- token = lsptok(NULL, &length); /* get :right_type */
- token = lsptok(NULL, &length); /* now read it */
-
- local_node->right_type = atol(token);
+ token = lsptok(NULL, &length); /* get :key */
+ local_node->key = nodeRead(true); /* now read it */
return local_node;
}
@@ -1858,72 +1698,26 @@ _readRestrictInfo()
token = lsptok(NULL, &length); /* get :selectivity */
token = lsptok(NULL, &length); /* now read it */
-
local_node->selectivity = atof(token);
- token = lsptok(NULL, &length); /* get :indexids */
- local_node->indexids = nodeRead(true); /* now read it */
+ token = lsptok(NULL, &length); /* get :subclauseindices */
+ local_node->subclauseindices = nodeRead(true); /* now read it */
- token = lsptok(NULL, &length); /* get :mergejoinorder */
- local_node->mergejoinorder = (MergeOrder *) nodeRead(true);
-
- token = lsptok(NULL, &length); /* get :hashjoinoperator */
+ token = lsptok(NULL, &length); /* get :mergejoinoperator */
token = lsptok(NULL, &length); /* now read it */
+ local_node->mergejoinoperator = atol(token);
- local_node->hashjoinoperator = atol(token);
-
- return local_node;
-}
-
-/* ----------------
- * _readJoinMethod
- *
- * JoinMethod is a subclass of Node.
- * ----------------
- */
-static JoinMethod *
-_readJoinMethod()
-{
- JoinMethod *local_node;
- char *token;
- int length;
-
- local_node = makeNode(JoinMethod);
-
- token = lsptok(NULL, &length); /* get :jmkeys */
- local_node->jmkeys = nodeRead(true); /* now read it */
-
- token = lsptok(NULL, &length); /* get :clauses */
- local_node->clauses = nodeRead(true); /* now read it */
-
- return local_node;
-}
-
-/* ----------------
- * _readHashInfo
- *
- * HashInfo is a subclass of JoinMethod.
- * ----------------
- */
-static HashInfo *
-_readHashInfo()
-{
- HashInfo *local_node;
- char *token;
- int length;
-
- local_node = makeNode(HashInfo);
-
- token = lsptok(NULL, &length); /* get :hashop */
+ token = lsptok(NULL, &length); /* get :left_sortop */
token = lsptok(NULL, &length); /* now read it */
+ local_node->left_sortop = atol(token);
- local_node->hashop = strtoul(token, NULL, 10);
-
- token = lsptok(NULL, &length); /* get :jmkeys */
- local_node->jmethod.jmkeys = nodeRead(true); /* now read it */
+ token = lsptok(NULL, &length); /* get :right_sortop */
+ token = lsptok(NULL, &length); /* now read it */
+ local_node->right_sortop = atol(token);
- token = lsptok(NULL, &length); /* get :clauses */
- local_node->jmethod.clauses = nodeRead(true); /* now read it */
+ token = lsptok(NULL, &length); /* get :hashjoinoperator */
+ token = lsptok(NULL, &length); /* now read it */
+ local_node->hashjoinoperator = atol(token);
return local_node;
}
@@ -1949,20 +1743,6 @@ _readJoinInfo()
token = lsptok(NULL, &length); /* get :jinfo_restrictinfo */
local_node->jinfo_restrictinfo = nodeRead(true); /* now read it */
- token = lsptok(NULL, &length); /* get :mergejoinable */
-
- if (!strncmp(token, "true", 4))
- local_node->mergejoinable = true;
- else
- local_node->mergejoinable = false;
-
- token = lsptok(NULL, &length); /* get :hashjoinable */
-
- if (!strncmp(token, "true", 4))
- local_node->hashjoinable = true;
- else
- local_node->hashjoinable = false;
-
return local_node;
}
@@ -2065,8 +1845,6 @@ parsePlanString(void)
return_value = _readTargetEntry();
else if (!strncmp(token, "RTE", length))
return_value = _readRangeTblEntry();
- else if (!strncmp(token, "PATHORDER", length))
- return_value = _readPathOrder();
else if (!strncmp(token, "PATH", length))
return_value = _readPath();
else if (!strncmp(token, "INDEXPATH", length))
@@ -2077,20 +1855,12 @@ parsePlanString(void)
return_value = _readMergePath();
else if (!strncmp(token, "HASHPATH", length))
return_value = _readHashPath();
- else if (!strncmp(token, "ORDERKEY", length))
- return_value = _readOrderKey();
- else if (!strncmp(token, "JOINKEY", length))
- return_value = _readJoinKey();
- else if (!strncmp(token, "MERGEORDER", length))
- return_value = _readMergeOrder();
- else if (!strncmp(token, "RETRICTINFO", length))
+ else if (!strncmp(token, "PATHKEYITEM", length))
+ return_value = _readPathKeyItem();
+ else if (!strncmp(token, "RESTRICTINFO", length))
return_value = _readRestrictInfo();
- else if (!strncmp(token, "JOINMETHOD", length))
- return_value = _readJoinMethod();
else if (!strncmp(token, "JOININFO", length))
return_value = _readJoinInfo();
- else if (!strncmp(token, "HASHINFO", length))
- return_value = _readHashInfo();
else if (!strncmp(token, "ITER", length))
return_value = _readIter();
else if (!strncmp(token, "QUERY", length))