diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/optimizer/path/costsize.c | 22 | ||||
-rw-r--r-- | src/include/optimizer/cost.h | 3 |
2 files changed, 17 insertions, 8 deletions
diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c index d6ceafd51c5..5227346aeb1 100644 --- a/src/backend/optimizer/path/costsize.c +++ b/src/backend/optimizer/path/costsize.c @@ -6393,12 +6393,20 @@ get_parallel_divisor(Path *path) /* * compute_bitmap_pages + * Estimate number of pages fetched from heap in a bitmap heap scan. * - * compute number of pages fetched from heap in bitmap heap scan. + * 'baserel' is the relation to be scanned + * 'bitmapqual' is a tree of IndexPaths, BitmapAndPaths, and BitmapOrPaths + * 'loop_count' is the number of repetitions of the indexscan to factor into + * estimates of caching behavior + * + * If cost_p isn't NULL, the indexTotalCost estimate is returned in *cost_p. + * If tuples_p isn't NULL, the tuples_fetched estimate is returned in *tuples_p. */ double -compute_bitmap_pages(PlannerInfo *root, RelOptInfo *baserel, Path *bitmapqual, - int loop_count, Cost *cost, double *tuple) +compute_bitmap_pages(PlannerInfo *root, RelOptInfo *baserel, + Path *bitmapqual, double loop_count, + Cost *cost_p, double *tuples_p) { Cost indexTotalCost; Selectivity indexSelectivity; @@ -6488,10 +6496,10 @@ compute_bitmap_pages(PlannerInfo *root, RelOptInfo *baserel, Path *bitmapqual, (lossy_pages / heap_pages) * baserel->tuples); } - if (cost) - *cost = indexTotalCost; - if (tuple) - *tuple = tuples_fetched; + if (cost_p) + *cost_p = indexTotalCost; + if (tuples_p) + *tuples_p = tuples_fetched; return pages_fetched; } diff --git a/src/include/optimizer/cost.h b/src/include/optimizer/cost.h index 6d50afbf74c..366adbfc39e 100644 --- a/src/include/optimizer/cost.h +++ b/src/include/optimizer/cost.h @@ -210,6 +210,7 @@ extern void set_result_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_foreign_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern PathTarget *set_pathtarget_cost_width(PlannerInfo *root, PathTarget *target); extern double compute_bitmap_pages(PlannerInfo *root, RelOptInfo *baserel, - Path *bitmapqual, int loop_count, Cost *cost, double *tuple); + Path *bitmapqual, double loop_count, + Cost *cost_p, double *tuples_p); #endif /* COST_H */ |