*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.16 1997/11/25 21:59:40 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.17 1997/12/18 03:03:31 momjian Exp $
*
*-------------------------------------------------------------------------
*/
CopyTempFields((Temp *) from, (Temp *) newnode);
newnode->numAgg = from->numAgg;
- newnode->aggs = malloc(sizeof(Aggreg *));
+ newnode->aggs = palloc(sizeof(Aggreg *));
for (i = 0; i < from->numAgg; i++)
{
newnode->aggs[i] = copyObject(from->aggs[i]);
_copyQuery(Query *from)
{
Query *newnode = makeNode(Query);
-
+
newnode->commandType = from->commandType;
newnode->resultRelation = from->resultRelation;
/* probably should dup this string instead of just pointing */
Node_Copy(from, newnode, targetList);
Node_Copy(from, newnode, qual);
+ Node_Copy(from, newnode, groupClause);
+ Node_Copy(from, newnode, havingQual); /* currently ignored */
+
+ Node_Copy(from, newnode, Aggreg);
+
return newnode;
}
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/createplan.c,v 1.16 1997/11/25 21:59:56 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/createplan.c,v 1.17 1997/12/18 03:03:35 momjian Exp $
*
*-------------------------------------------------------------------------
*/
SeqScan *node = makeNode(SeqScan);
Plan *plan = &node->plan;
- plan->cost = 0.0;
+ plan->cost = (lefttree ? lefttree->cost : 0);
plan->state = (EState *) NULL;
plan->targetlist = qptlist;
plan->qual = qpqual;
NestLoop *node = makeNode(NestLoop);
Plan *plan = &node->join;
- plan->cost = 0.0;
+ plan->cost = (lefttree ? lefttree->cost : 0) +
+ (righttree ? righttree->cost : 0);
plan->state = (EState *) NULL;
plan->targetlist = qptlist;
plan->qual = qpqual;
HashJoin *node = makeNode(HashJoin);
Plan *plan = &node->join;
+ plan->cost = (lefttree ? lefttree->cost : 0) +
+ (righttree ? righttree->cost : 0);
plan->cost = 0.0;
plan->state = (EState *) NULL;
plan->targetlist = tlist;
Hash *node = makeNode(Hash);
Plan *plan = &node->plan;
+ plan->cost = (lefttree ? lefttree->cost : 0);
plan->cost = 0.0;
plan->state = (EState *) NULL;
plan->targetlist = tlist;
MergeJoin *node = makeNode(MergeJoin);
Plan *plan = &node->join;
- plan->cost = 0.0;
+ plan->cost = (lefttree ? lefttree->cost : 0) +
+ (righttree ? righttree->cost : 0);
plan->state = (EState *) NULL;
plan->targetlist = tlist;
plan->qual = qpqual;
Sort *node = makeNode(Sort);
Plan *plan = &node->plan;
- plan->cost = 0.0;
+ plan->cost = (lefttree ? lefttree->cost : 0);
plan->state = (EState *) NULL;
plan->targetlist = tlist;
plan->qual = NIL;
Material *node = makeNode(Material);
Plan *plan = &node->plan;
- plan->cost = 0.0;
+ plan->cost = (lefttree ? lefttree->cost : 0);
plan->state = (EState *) NULL;
plan->targetlist = tlist;
plan->qual = NIL;
{
Group *node = makeNode(Group);
- node->plan.cost = 0.0;
+ node->plan.cost = (lefttree ? lefttree->plan.cost : 0);
node->plan.state = (EState *) NULL;
node->plan.qual = NULL;
node->plan.targetlist = tlist;
Unique *node = makeNode(Unique);
Plan *plan = &node->plan;
- plan->cost = 0.0;
+ plan->cost = (lefttree ? lefttree->cost : 0);
plan->state = (EState *) NULL;
plan->targetlist = tlist;
plan->qual = NIL;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.8 1997/09/25 12:21:15 vadim Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.9 1997/12/18 03:03:38 momjian Exp $
*
*-------------------------------------------------------------------------
*/
Plan *plan = &node->plan;
tlist = generate_fjoin(tlist);
- plan->cost = 0.0;
+ plan->cost = (subplan ? subplan->cost : 0);
plan->state = (EState *) NULL;
plan->targetlist = tlist;
plan->lefttree = subplan;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/prep/prepunion.c,v 1.9 1997/11/25 22:00:10 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/prep/prepunion.c,v 1.10 1997/12/18 03:03:41 momjian Exp $
*
*-------------------------------------------------------------------------
*/
/* new_root->uniqueFlag = false; */
new_root->uniqueFlag = NULL;
new_root->sortClause = NULL;
+ new_root->groupClause = NULL;
+ new_root->qry_numAgg = 0;
+ new_root->qry_aggs = NULL;
fix_parsetree_attnums(rt_index,
rt_entry->relid,
relid,