aboutsummaryrefslogtreecommitdiff
path: root/src/backend/optimizer/path/allpaths.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/optimizer/path/allpaths.c')
-rw-r--r--src/backend/optimizer/path/allpaths.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/backend/optimizer/path/allpaths.c b/src/backend/optimizer/path/allpaths.c
index 373d982c497..6e59451e558 100644
--- a/src/backend/optimizer/path/allpaths.c
+++ b/src/backend/optimizer/path/allpaths.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/allpaths.c,v 1.51 1999/07/24 23:21:08 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/allpaths.c,v 1.52 1999/07/30 22:34:17 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -59,6 +59,9 @@ make_one_rel(Query *root, List *rels)
if (levels_needed <= 0)
return NULL;
+ /*
+ * Generate access paths for the base rels.
+ */
set_base_rel_pathlist(root, rels);
if (levels_needed <= 1)
@@ -73,8 +76,10 @@ make_one_rel(Query *root, List *rels)
{
/*
- * This means that joins or sorts are required. set selectivities
- * of clauses that have not been set by an index.
+ * This means that joins or sorts are required. Set selectivities
+ * of any clauses not yet set. (I think that this is redundant;
+ * set_base_rel_pathlist should have set them all already. But
+ * a scan to check that they are all set doesn't cost much...)
*/
set_rest_relselec(root, rels);
@@ -131,11 +136,15 @@ set_base_rel_pathlist(Query *root, List *rels)
set_cheapest(rel, rel->pathlist);
- /*
- * if there is a qualification of sequential scan the selec. value
- * is not set -- so set it explicitly -- Sunita
+ /* Set the selectivity estimates for any restriction clauses that
+ * didn't get set as a byproduct of index-path selectivity estimation
+ * (see create_index_path()).
*/
set_rest_selec(root, rel->restrictinfo);
+
+ /* Calculate the estimated size (post-restrictions) and tuple width
+ * for this base rel. This uses the restriction clause selectivities.
+ */
rel->size = compute_rel_size(rel);
rel->width = compute_rel_width(rel);
}