mirror of
https://github.com/postgres/postgres.git
synced 2025-09-11 00:12:06 +03:00
Be more realistic about plans involving Materialize nodes: take their
cost into account while planning.
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/subselect.c,v 1.57 2002/11/30 00:08:18 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/subselect.c,v 1.58 2002/11/30 05:21:03 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -328,9 +328,17 @@ make_subplan(SubLink *slink)
|
||||
if (use_material)
|
||||
{
|
||||
Plan *matplan;
|
||||
Path matpath; /* dummy for result of cost_material */
|
||||
|
||||
matplan = (Plan *) make_material(plan->targetlist, plan);
|
||||
/* kluge --- see comments above */
|
||||
/* need to calculate costs */
|
||||
cost_material(&matpath,
|
||||
plan->total_cost,
|
||||
plan->plan_rows,
|
||||
plan->plan_width);
|
||||
matplan->startup_cost = matpath.startup_cost;
|
||||
matplan->total_cost = matpath.total_cost;
|
||||
/* parameter kluge --- see comments above */
|
||||
matplan->extParam = listCopy(plan->extParam);
|
||||
matplan->locParam = listCopy(plan->locParam);
|
||||
node->plan = plan = matplan;
|
||||
|
Reference in New Issue
Block a user