diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2004-04-07 17:42:28 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2004-04-07 17:42:28 +0000 |
commit | 5d1af6aee3c78bb01d78e0a150c9617b1ff23500 (patch) | |
tree | d6ae100a8e113b24e4f971c5548cbf9ff6460ee5 | |
parent | f1d02698616b45bd740d949d3aa9f8ca4d66707e (diff) |
build_subquery_pathkeys() was examining wrong copy of subquery target list,
causing it to fail to recognize the output ordering of subqueries that
contain set operations (UNION/INTERSECT/EXPECT). Per example from Karel Zak.
-rw-r--r-- | src/backend/optimizer/path/pathkeys.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/backend/optimizer/path/pathkeys.c b/src/backend/optimizer/path/pathkeys.c index d6d83f7c761..65eb5cb8a65 100644 --- a/src/backend/optimizer/path/pathkeys.c +++ b/src/backend/optimizer/path/pathkeys.c @@ -11,7 +11,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/path/pathkeys.c,v 1.55 2003/12/03 17:45:07 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/path/pathkeys.c,v 1.56 2004/04/07 17:42:28 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -757,6 +757,7 @@ build_subquery_pathkeys(Query *root, RelOptInfo *rel, Query *subquery) List *retval = NIL; int retvallen = 0; int outer_query_keys = length(root->query_pathkeys); + List *sub_tlist = rel->subplan->targetlist; List *l; foreach(l, subquery->query_pathkeys) @@ -789,7 +790,7 @@ build_subquery_pathkeys(Query *root, RelOptInfo *rel, Query *subquery) Node *sub_key = sub_item->key; List *k; - foreach(k, subquery->targetList) + foreach(k, sub_tlist) { TargetEntry *tle = (TargetEntry *) lfirst(k); |