From 056467ec6bcbd81a9d1480af8d641946a5ef1bff Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sat, 15 Feb 2003 20:12:41 +0000 Subject: Teach planner how to propagate pathkeys from sub-SELECTs in FROM up to the outer query. (The implementation is a bit klugy, but it would take nontrivial restructuring to make it nicer, which this is probably not worth.) This avoids unnecessary sort steps in examples like SELECT foo,count(*) FROM (SELECT ... ORDER BY foo,bar) sub GROUP BY foo which means there is now a reasonable technique for controlling the order of inputs to custom aggregates, even in the grouping case. --- src/backend/optimizer/util/pathnode.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/backend/optimizer/util/pathnode.c') diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c index 8a59730aef5..3984c666f51 100644 --- a/src/backend/optimizer/util/pathnode.c +++ b/src/backend/optimizer/util/pathnode.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/optimizer/util/pathnode.c,v 1.87 2003/02/08 20:20:55 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/util/pathnode.c,v 1.88 2003/02/15 20:12:40 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -676,13 +676,13 @@ hash_safe_tlist(List *tlist) * returning the pathnode. */ Path * -create_subqueryscan_path(RelOptInfo *rel) +create_subqueryscan_path(RelOptInfo *rel, List *pathkeys) { Path *pathnode = makeNode(Path); pathnode->pathtype = T_SubqueryScan; pathnode->parent = rel; - pathnode->pathkeys = NIL; /* for now, assume unordered result */ + pathnode->pathkeys = pathkeys; /* just copy the subplan's cost estimates */ pathnode->startup_cost = rel->subplan->startup_cost; -- cgit v1.2.3