]> granicus.if.org Git - postgresql/blobdiff - src/backend/optimizer/path/indxpath.c
Revise handling of index-type-specific indexscan cost estimation, per
[postgresql] / src / backend / optimizer / path / indxpath.c
index 3c93ee67ac34a02a45dbd19281b0b0ca21c57155..7bb4a8eaeb1d83066413fb1e9c34c8b496e2d08b 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.76 2000/01/09 00:26:31 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.77 2000/01/22 23:50:14 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1393,19 +1393,6 @@ index_innerjoin(Query *root, RelOptInfo *rel, IndexOptInfo *index,
                List       *clausegroup = lfirst(i);
                IndexPath  *pathnode = makeNode(IndexPath);
                List       *indexquals;
-               long            npages;
-               Selectivity     selec;
-
-               indexquals = get_actual_clauses(clausegroup);
-               /* expand special operators to indexquals the executor can handle */
-               indexquals = expand_indexqual_conditions(indexquals);
-
-               index_selectivity(root,
-                                                 rel,
-                                                 index,
-                                                 indexquals,
-                                                 &npages,
-                                                 &selec);
 
                /* XXX this code ought to be merged with create_index_path? */
 
@@ -1413,6 +1400,10 @@ index_innerjoin(Query *root, RelOptInfo *rel, IndexOptInfo *index,
                pathnode->path.parent = rel;
                pathnode->path.pathkeys = build_index_pathkeys(root, rel, index);
 
+               indexquals = get_actual_clauses(clausegroup);
+               /* expand special operators to indexquals the executor can handle */
+               indexquals = expand_indexqual_conditions(indexquals);
+
                /* Note that we are making a pathnode for a single-scan indexscan;
                 * therefore, both indexid and indexqual should be single-element
                 * lists.
@@ -1423,8 +1414,7 @@ index_innerjoin(Query *root, RelOptInfo *rel, IndexOptInfo *index,
                /* joinrelids saves the rels needed on the outer side of the join */
                pathnode->joinrelids = lfirst(outerrelids_list);
 
-               pathnode->path.path_cost = cost_index(rel, index,
-                                                                                         npages, selec,
+               pathnode->path.path_cost = cost_index(root, rel, index, indexquals,
                                                                                          true);
 
                path_list = lappend(path_list, pathnode);