Github user ravipesala commented on a diff in the pull request: https://github.com/apache/carbondata/pull/2327#discussion_r189882515 --- Diff: datamap/bloom/src/main/java/org/apache/carbondata/datamap/bloom/BloomCoarseGrainDataMap.java --- @@ -94,20 +83,21 @@ public void setIndexedColumn(Set<String> indexedColumn) { List<BloomQueryModel> bloomQueryModels = getQueryValue(filterExp.getFilterExpression()); for (BloomQueryModel bloomQueryModel : bloomQueryModels) { LOGGER.debug("prune blocklet for query: " + bloomQueryModel); - BloomDataMapCache.CacheKey cacheKey = new BloomDataMapCache.CacheKey( + BloomCacheKeyValue.CacheKey cacheKey = new BloomCacheKeyValue.CacheKey( this.indexPath.toString(), bloomQueryModel.columnName); - List<BloomDMModel> bloomDMModels = this.bloomDataMapCache.getBloomDMModelByKey(cacheKey); - for (BloomDMModel bloomDMModel : bloomDMModels) { - boolean scanRequired = bloomDMModel.getBloomFilter().membershipTest(new Key( + BloomCacheKeyValue.CacheValue cacheValue = cache.get(cacheKey); + List<CarbonBloomFilter> bloomIndexList = cacheValue.getBloomFilters(); + for (CarbonBloomFilter bloomFilter : bloomIndexList) { + boolean scanRequired = bloomFilter.membershipTest(new Key( convertValueToBytes(bloomQueryModel.dataType, bloomQueryModel.filterValue))); if (scanRequired) { LOGGER.debug(String.format("BloomCoarseGrainDataMap: Need to scan -> blocklet#%s", - String.valueOf(bloomDMModel.getBlockletNo()))); - Blocklet blocklet = new Blocklet(shardName, String.valueOf(bloomDMModel.getBlockletNo())); + String.valueOf(bloomFilter.getBlockletNo()))); --- End diff -- I feel extra object is not required to just store blockletid, so ideally one bloomfilter belongs to one blocklet thats why moved inside carbonbloomfilter
---