Line data Source code
1 : /*-------------------------------------------------------------------------
2 : *
3 : * blcost.c
4 : * Cost estimate function for bloom indexes.
5 : *
6 : * Copyright (c) 2016-2026, PostgreSQL Global Development Group
7 : *
8 : * IDENTIFICATION
9 : * contrib/bloom/blcost.c
10 : *
11 : *-------------------------------------------------------------------------
12 : */
13 : #include "postgres.h"
14 :
15 : #include "bloom.h"
16 : #include "utils/selfuncs.h"
17 :
18 : /*
19 : * Estimate cost of bloom index scan.
20 : */
21 : void
22 0 : blcostestimate(PlannerInfo *root, IndexPath *path, double loop_count,
23 : Cost *indexStartupCost, Cost *indexTotalCost,
24 : Selectivity *indexSelectivity, double *indexCorrelation,
25 : double *indexPages)
26 : {
27 0 : IndexOptInfo *index = path->indexinfo;
28 0 : GenericCosts costs = {0};
29 :
30 : /* We have to visit all index tuples anyway */
31 0 : costs.numIndexTuples = index->tuples;
32 :
33 : /* Use generic estimate */
34 0 : genericcostestimate(root, path, loop_count, &costs);
35 :
36 0 : *indexStartupCost = costs.indexStartupCost;
37 0 : *indexTotalCost = costs.indexTotalCost;
38 0 : *indexSelectivity = costs.indexSelectivity;
39 0 : *indexCorrelation = costs.indexCorrelation;
40 0 : *indexPages = costs.numIndexPages;
41 0 : }
|