Github user xuchuanyin commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/2781#discussion_r221178600
--- Diff:
datamap/bloom/src/main/java/org/apache/carbondata/datamap/bloom/BloomCoarseGrainDataMap.java
---
@@ -194,16 +186,25 @@ private String getAncestorTablePath(CarbonTable
currentTable) {
// skip shard which has been pruned in Main datamap
continue;
}
- boolean scanRequired = bloomFilter.membershipTest(new
Key(bloomQueryModel.filterValue));
- if (scanRequired) {
- LOGGER.debug(String.format("BloomCoarseGrainDataMap: Need to
scan -> blocklet#%s",
- String.valueOf(bloomFilter.getBlockletNo())));
- Blocklet blocklet = new Blocklet(bloomFilter.getShardName(),
- String.valueOf(bloomFilter.getBlockletNo()));
- hitBlocklets.add(blocklet);
+ for (byte[] value: bloomQueryModel.filterValues) {
+ boolean scanRequired = bloomFilter.membershipTest(new
Key(value));
+ if (scanRequired) {
+ LOGGER.debug(String.format("BloomCoarseGrainDataMap: Need to
scan -> blocklet#%s",
+ String.valueOf(bloomFilter.getBlockletNo())));
+ Blocklet blocklet = new Blocklet(bloomFilter.getShardName(),
+ String.valueOf(bloomFilter.getBlockletNo()));
+ tempHitBlockletsResult.add(blocklet);
+ } else {
+ LOGGER.debug(String.format("BloomCoarseGrainDataMap: Skip scan
-> blocklet#%s",
--- End diff --
This log is wrong here. we can only get this conclusion only if all the
filter values fails the bloomfilter.
---