Github user kevinjmh commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/2685#discussion_r214886972
--- 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 --
can we pull up the transformation from expression to filterResolverIntf so
that we can reuse most code instead of adding another `prune` method everywhere
---