summaryrefslogtreecommitdiff
path: root/src/backend/nodes/freefuncs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/nodes/freefuncs.c')
-rw-r--r--src/backend/nodes/freefuncs.c156
1 files changed, 23 insertions, 133 deletions
diff --git a/src/backend/nodes/freefuncs.c b/src/backend/nodes/freefuncs.c
index b06536d197..11f92b28d0 100644
--- a/src/backend/nodes/freefuncs.c
+++ b/src/backend/nodes/freefuncs.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/Attic/freefuncs.c,v 1.24 1999/07/27 03:51:08 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/Attic/freefuncs.c,v 1.25 1999/08/16 02:17:42 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -706,6 +706,9 @@ _freeRelOptInfo(RelOptInfo *node)
freeObject(node->targetlist);
freeObject(node->pathlist);
+ /* is this right? cheapestpath will typically be a pointer into
+ * pathlist, won't it?
+ */
freeObject(node->cheapestpath);
if (node->classlist)
@@ -714,11 +717,11 @@ _freeRelOptInfo(RelOptInfo *node)
if (node->indexkeys)
pfree(node->indexkeys);
- freeObject(node->indpred);
-
if (node->ordering)
pfree(node->ordering);
+ freeObject(node->indpred);
+
freeObject(node->restrictinfo);
freeObject(node->joininfo);
freeObject(node->innerjoin);
@@ -736,20 +739,9 @@ _freeRelOptInfo(RelOptInfo *node)
static void
FreePathFields(Path *node)
{
- if (node->pathorder->ordtype == SORTOP_ORDER)
- {
- if (node->pathorder->ord.sortop)
- pfree(node->pathorder->ord.sortop);
- }
- else
- freeObject(node->pathorder->ord.merge);
-
- pfree(node->pathorder); /* is it an object, but we don't have
- * separate free for it */
+ /* we do NOT free the parent; it doesn't belong to the Path */
freeObject(node->pathkeys);
-
- freeList(node->joinid);
}
/* ----------------
@@ -783,22 +775,20 @@ _freeIndexPath(IndexPath *node)
*/
freeList(node->indexid);
freeObject(node->indexqual);
-
- if (node->indexkeys)
- pfree(node->indexkeys);
+ freeList(node->joinrelids);
pfree(node);
}
/* ----------------
- * FreeNestPathFields
+ * FreeJoinPathFields
*
- * This function frees the fields of the NestPath node. It is used by
- * all the free functions for classes which inherit node NestPath.
+ * This function frees the fields of the JoinPath node. It is used by
+ * all the free functions for classes which inherit node JoinPath.
* ----------------
*/
static void
-FreeNestPathFields(NestPath *node)
+FreeJoinPathFields(JoinPath *node)
{
freeObject(node->pathinfo);
freeObject(node->outerjoinpath);
@@ -817,7 +807,7 @@ _freeNestPath(NestPath *node)
* ----------------
*/
FreePathFields((Path *) node);
- FreeNestPathFields(node);
+ FreeJoinPathFields((JoinPath *) node);
pfree(node);
}
@@ -834,7 +824,7 @@ _freeMergePath(MergePath *node)
* ----------------
*/
FreePathFields((Path *) node);
- FreeNestPathFields((NestPath *) node);
+ FreeJoinPathFields((JoinPath *) node);
/* ----------------
* free the remainder of the node
@@ -859,60 +849,33 @@ _freeHashPath(HashPath *node)
* ----------------
*/
FreePathFields((Path *) node);
- FreeNestPathFields((NestPath *) node);
+ FreeJoinPathFields((JoinPath *) node);
/* ----------------
* free remainder of node
* ----------------
*/
freeObject(node->path_hashclauses);
- freeObject(node->outerhashkeys);
- freeObject(node->innerhashkeys);
-
- pfree(node);
-}
-/* ----------------
- * _freeOrderKey
- * ----------------
- */
-static void
-_freeOrderKey(OrderKey *node)
-{
pfree(node);
}
-
/* ----------------
- * _freeJoinKey
+ * _freePathKeyItem
* ----------------
*/
static void
-_freeJoinKey(JoinKey *node)
+_freePathKeyItem(PathKeyItem *node)
{
/* ----------------
* free remainder of node
* ----------------
*/
- freeObject(node->outer);
- freeObject(node->inner);
+ freeObject(node->key);
pfree(node);
}
-/* ----------------
- * _freeMergeOrder
- * ----------------
- */
-static void
-_freeMergeOrder(MergeOrder *node)
-{
- /* ----------------
- * free remainder of node
- * ----------------
- */
- pfree(node);
-}
/* ----------------
* _freeRestrictInfo
@@ -926,68 +889,10 @@ _freeRestrictInfo(RestrictInfo *node)
* ----------------
*/
freeObject(node->clause);
- freeObject(node->indexids);
- freeObject(node->mergejoinorder);
-
- pfree(node);
-}
-
-/* ----------------
- * FreeJoinMethodFields
- *
- * This function frees the fields of the JoinMethod node. It is used by
- * all the free functions for classes which inherit node JoinMethod.
- * ----------------
- */
-static void
-FreeJoinMethodFields(JoinMethod *node)
-{
- freeObject(node->jmkeys);
- freeObject(node->clauses);
- return;
-}
-
-/* ----------------
- * _freeJoinMethod
- * ----------------
- */
-static void
-_freeJoinMethod(JoinMethod *node)
-{
- FreeJoinMethodFields(node);
-
- pfree(node);
-}
-
-/* ----------------
- * _freeHInfo
- * ----------------
- */
-static void
-_freeHashInfo(HashInfo *node)
-{
- /* ----------------
- * free remainder of node
- * ----------------
- */
- FreeJoinMethodFields((JoinMethod *) node);
-
- pfree(node);
-}
-
-/* ----------------
- * _freeMInfo
- * ----------------
- */
-static void
-_freeMergeInfo(MergeInfo *node)
-{
- /* ----------------
- * free remainder of node
- * ----------------
+ /* this is certainly wrong? index RelOptInfos don't belong to
+ * RestrictInfo...
*/
- FreeJoinMethodFields((JoinMethod *) node);
- freeObject(node->m_ordering);
+ freeObject(node->subclauseindices);
pfree(node);
}
@@ -1279,27 +1184,12 @@ freeObject(void *node)
case T_HashPath:
_freeHashPath(node);
break;
- case T_OrderKey:
- _freeOrderKey(node);
- break;
- case T_JoinKey:
- _freeJoinKey(node);
- break;
- case T_MergeOrder:
- _freeMergeOrder(node);
+ case T_PathKeyItem:
+ _freePathKeyItem(node);
break;
case T_RestrictInfo:
_freeRestrictInfo(node);
break;
- case T_JoinMethod:
- _freeJoinMethod(node);
- break;
- case T_HashInfo:
- _freeHashInfo(node);
- break;
- case T_MergeInfo:
- _freeMergeInfo(node);
- break;
case T_JoinInfo:
_freeJoinInfo(node);
break;