TLA Line data Source code
1 : /*-------------------------------------------------------------------------
2 : *
3 : * blcost.c
4 : * Cost estimate function for bloom indexes.
5 : *
6 : * Copyright (c) 2016-2023, 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 "fmgr.h"
17 : #include "utils/selfuncs.h"
18 :
19 : /*
20 : * Estimate cost of bloom index scan.
21 : */
22 : void
23 CBC 406 : blcostestimate(PlannerInfo *root, IndexPath *path, double loop_count,
24 : Cost *indexStartupCost, Cost *indexTotalCost,
25 : Selectivity *indexSelectivity, double *indexCorrelation,
26 : double *indexPages)
27 : {
28 406 : IndexOptInfo *index = path->indexinfo;
29 GNC 406 : GenericCosts costs = {0};
30 ECB :
31 : /* We have to visit all index tuples anyway */
32 GIC 406 : costs.numIndexTuples = index->tuples;
33 ECB :
34 : /* Use generic estimate */
35 CBC 406 : genericcostestimate(root, path, loop_count, &costs);
36 ECB :
37 CBC 406 : *indexStartupCost = costs.indexStartupCost;
38 406 : *indexTotalCost = costs.indexTotalCost;
39 406 : *indexSelectivity = costs.indexSelectivity;
40 406 : *indexCorrelation = costs.indexCorrelation;
41 GIC 406 : *indexPages = costs.numIndexPages;
42 406 : }
|