Github user manishgupta88 commented on a diff in the pull request:

    https://github.com/apache/carbondata/pull/2654#discussion_r214361007
  
    --- Diff: 
core/src/main/java/org/apache/carbondata/core/scan/filter/executer/IncludeFilterExecuterImpl.java
 ---
    @@ -110,8 +112,19 @@ public BitSetGroup applyFilter(RawBlockletColumnChunks 
rawBlockletColumnChunks,
           boolean isDecoded = false;
           for (int i = 0; i < dimensionRawColumnChunk.getPagesCount(); i++) {
             if (dimensionRawColumnChunk.getMaxValues() != null) {
    -          if (isScanRequired(dimensionRawColumnChunk.getMaxValues()[i],
    -              dimensionRawColumnChunk.getMinValues()[i], 
dimColumnExecuterInfo.getFilterKeys())) {
    +          boolean scanRequired;
    +          // for no dictionary measure column comparison can be done
    +          // on the original data as like measure column
    +          if 
(DataTypeUtil.isPrimitiveColumn(dimColumnEvaluatorInfo.getDimension().getDataType())
    +              && 
!dimColumnEvaluatorInfo.getDimension().hasEncoding(Encoding.DICTIONARY)) {
    +            scanRequired = 
isScanRequired(dimensionRawColumnChunk.getMaxValues()[i],
    --- End diff --
    
    You can create a `isPrimitiveNoDictionaryColumn` flag and check 
`DataTypeUtil.isPrimitiveColum` in the constructor. This will avoid the check 
for every page. Do this for all the filters


---

Reply via email to