Github user ravipesala commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/2685#discussion_r215857396
--- Diff:
core/src/main/java/org/apache/carbondata/core/indexstore/blockletindex/BlockDataMap.java
---
@@ -630,6 +638,24 @@ private boolean
useMinMaxForExecutorPruning(FilterResolverIntf filterResolverInt
return useMinMaxForPruning;
}
+ @Override
+ public List<Blocklet> prune(Expression expression, SegmentProperties
segmentProperties,
+ List<PartitionSpec> partitions, AbsoluteTableIdentifier identifier)
throws IOException {
+ FilterResolverIntf filterResolverIntf = null;
+ if (expression != null) {
+ SegmentProperties properties = getSegmentProperties();
+ QueryModel.FilterProcessVO processVO =
+ new QueryModel.FilterProcessVO(properties.getDimensions(),
properties.getMeasures(),
+ new ArrayList<CarbonDimension>());
+ QueryModel.processFilterExpression(processVO, expression, null,
null);
+ // Optimize Filter Expression and fit RANGE filters is conditions
apply.
+ FilterOptimizer rangeFilterOptimizer = new
RangeFilterOptmizer(expression);
+ rangeFilterOptimizer.optimizeFilter();
+ filterResolverIntf = CarbonTable.resolveFilter(expression,
identifier);
--- End diff --
I don't get your point. Here we need to convert to filterResolverIntf from
expression for every datamap as columns meta could be different for each
carbonindex.
---