summaryrefslogtreecommitdiff
path: root/src/backend/optimizer/path/indxpath.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2006-01-29 17:27:50 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2006-01-29 17:27:50 +0000
commit2d98f462551f6bbc0935e531c06e2b4c064b5020 (patch)
tree6a6c4a75ae95f120cf0104ebf8161ab0d3856b4c /src/backend/optimizer/path/indxpath.c
parent18d69488587af4b7883de46847438de01282d8a3 (diff)
Fix code that checks to see if an index can be considered to match the query's
requested sort order. It was assuming that build_index_pathkeys always generates a pathkey per index column, which was not true if implied equality deduction had determined that two index columns were effectively equated to each other. Simplest fix seems to be to install an option that causes build_index_pathkeys to support this behavior as well as the original one. Per report from Brian Hirt.
Diffstat (limited to 'src/backend/optimizer/path/indxpath.c')
-rw-r--r--src/backend/optimizer/path/indxpath.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/backend/optimizer/path/indxpath.c b/src/backend/optimizer/path/indxpath.c
index 393cdf691de..f3764344f1d 100644
--- a/src/backend/optimizer/path/indxpath.c
+++ b/src/backend/optimizer/path/indxpath.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/optimizer/path/indxpath.c,v 1.191.2.4 2005/12/06 16:50:46 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/optimizer/path/indxpath.c,v 1.191.2.5 2006/01/29 17:27:49 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -326,7 +326,8 @@ find_usable_indexes(PlannerInfo *root, RelOptInfo *rel,
if (istoplevel && index_is_ordered && !isjoininner)
{
index_pathkeys = build_index_pathkeys(root, index,
- ForwardScanDirection);
+ ForwardScanDirection,
+ true);
useful_pathkeys = truncate_useless_pathkeys(root, rel,
index_pathkeys);
}
@@ -1512,7 +1513,7 @@ match_index_to_query_keys(PlannerInfo *root,
ListCell *r;
/* Get the pathkeys that exactly describe the index */
- index_pathkeys = build_index_pathkeys(root, index, indexscandir);
+ index_pathkeys = build_index_pathkeys(root, index, indexscandir, false);
/*
* Can we match to the query's requested pathkeys? The inner loop skips