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.


---

Reply via email to