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 "utils/selfuncs.h" 17 : 18 : /* 19 : * Estimate cost of bloom index scan. 20 : */ 21 : void 22 812 : blcostestimate(PlannerInfo *root, IndexPath *path, double loop_count, 23 : Cost *indexStartupCost, Cost *indexTotalCost, 24 : Selectivity *indexSelectivity, double *indexCorrelation, 25 : double *indexPages) 26 : { 27 812 : IndexOptInfo *index = path->indexinfo; 28 812 : GenericCosts costs = {0}; 29 : 30 : /* We have to visit all index tuples anyway */ 31 812 : costs.numIndexTuples = index->tuples; 32 : 33 : /* Use generic estimate */ 34 812 : genericcostestimate(root, path, loop_count, &costs); 35 : 36 812 : *indexStartupCost = costs.indexStartupCost; 37 812 : *indexTotalCost = costs.indexTotalCost; 38 812 : *indexSelectivity = costs.indexSelectivity; 39 812 : *indexCorrelation = costs.indexCorrelation; 40 812 : *indexPages = costs.numIndexPages; 41 812 : }