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


---

Reply via email to