diff options
Diffstat (limited to 'src/backend/optimizer')
| -rw-r--r-- | src/backend/optimizer/plan/createplan.c | 9 | ||||
| -rw-r--r-- | src/backend/optimizer/plan/planner.c | 5 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c index b53b5e1470..55baa9a51a 100644 --- a/src/backend/optimizer/plan/createplan.c +++ b/src/backend/optimizer/plan/createplan.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/plan/createplan.c,v 1.253 2008/12/28 18:53:56 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/plan/createplan.c,v 1.254 2008/12/31 00:08:36 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -3261,22 +3261,25 @@ make_agg(PlannerInfo *root, List *tlist, List *qual, } WindowAgg * -make_windowagg(PlannerInfo *root, List *tlist, int numWindowFuncs, +make_windowagg(PlannerInfo *root, List *tlist, + int numWindowFuncs, Index winref, int partNumCols, AttrNumber *partColIdx, Oid *partOperators, int ordNumCols, AttrNumber *ordColIdx, Oid *ordOperators, - Plan *lefttree) + int frameOptions, Plan *lefttree) { WindowAgg *node = makeNode(WindowAgg); Plan *plan = &node->plan; Path windowagg_path; /* dummy for result of cost_windowagg */ QualCost qual_cost; + node->winref = winref; node->partNumCols = partNumCols; node->partColIdx = partColIdx; node->partOperators = partOperators; node->ordNumCols = ordNumCols; node->ordColIdx = ordColIdx; node->ordOperators = ordOperators; + node->frameOptions = frameOptions; copy_plan_costsize(plan, lefttree); /* only care about copying size */ cost_windowagg(&windowagg_path, root, diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index b4b578d597..495503bb51 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/plan/planner.c,v 1.248 2008/12/28 18:53:56 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/plan/planner.c,v 1.249 2008/12/31 00:08:36 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1398,12 +1398,14 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) make_windowagg(root, (List *) copyObject(window_tlist), list_length(wflists->windowFuncs[wc->winref]), + wc->winref, partNumCols, partColIdx, partOperators, ordNumCols, ordColIdx, ordOperators, + wc->frameOptions, result_plan); } } @@ -2412,6 +2414,7 @@ select_active_windows(PlannerInfo *root, WindowFuncLists *wflists) WindowClause *wc2 = (WindowClause *) lfirst(lc); next = lnext(lc); + /* framing options are NOT to be compared here! */ if (equal(wc->partitionClause, wc2->partitionClause) && equal(wc->orderClause, wc2->orderClause)) { |
