Line data Source code
1 : /*------------------------------------------------------------------------- 2 : * 3 : * blcost.c 4 : * Cost estimate function for bloom indexes. 5 : * 6 : * Copyright (c) 2016-2024, 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 812 : blcostestimate(PlannerInfo *root, IndexPath *path, double loop_count, 24 : Cost *indexStartupCost, Cost *indexTotalCost, 25 : Selectivity *indexSelectivity, double *indexCorrelation, 26 : double *indexPages) 27 : { 28 812 : IndexOptInfo *index = path->indexinfo; 29 812 : GenericCosts costs = {0}; 30 : 31 : /* We have to visit all index tuples anyway */ 32 812 : costs.numIndexTuples = index->tuples; 33 : 34 : /* Use generic estimate */ 35 812 : genericcostestimate(root, path, loop_count, &costs); 36 : 37 812 : *indexStartupCost = costs.indexStartupCost; 38 812 : *indexTotalCost = costs.indexTotalCost; 39 812 : *indexSelectivity = costs.indexSelectivity; 40 812 : *indexCorrelation = costs.indexCorrelation; 41 812 : *indexPages = costs.numIndexPages; 42 812 : }