if (isMeasure) { columnFromCurrentBlock = segmentProperties .getMeasureFromCurrentBlock(columnResolvedFilterInfo.getMeasure().getColumnId()); } else { columnFromCurrentBlock = segmentProperties.getDimensionFromCurrentBlock(columnResolvedFilterInfo.getDimension()); getFilterColumnIndexInCachedColumns(minMaxCacheColumns, columnFromCurrentBlock); if (columnIndexInMinMaxByteArray != -1) { columnResolvedFilterInfo.setColumnIndexInMinMaxByteArray(columnIndexInMinMaxByteArray); } else { columnResolvedFilterInfo.setColumnIndexInMinMaxByteArray( segmentProperties.getLastDimensionColOrdinal() + columnFromCurrentBlock.getOrdinal()); } else { columnResolvedFilterInfo .setColumnIndexInMinMaxByteArray(columnFromCurrentBlock.getOrdinal());
} else { columnResolvedFilterInfo = dimColEvaluatorInfoList.get(0); if (!columnResolvedFilterInfo.getDimension().hasEncoding(Encoding.IMPLICIT)) { replaceCurrentNodeWithTrueFilter = checkIfFilterColumnIsCachedInDriver(columnResolvedFilterInfo, segmentProperties,
/** * check if current need to be replaced with TrueFilter expression. This will happen in case * filter column min/max is not cached in the driver * * @param filterExpressionResolverTree * @param segmentProperties * @param minMaxCacheColumns * @return */ private static boolean checkIfCurrentNodeToBeReplacedWithTrueFilterExpression( FilterResolverIntf filterExpressionResolverTree, SegmentProperties segmentProperties, List<CarbonColumn> minMaxCacheColumns) { boolean replaceCurrentNodeWithTrueFilter = false; ColumnResolvedFilterInfo columnResolvedFilterInfo = null; if (null != filterExpressionResolverTree.getMsrColResolvedFilterInfo()) { columnResolvedFilterInfo = filterExpressionResolverTree.getMsrColResolvedFilterInfo(); replaceCurrentNodeWithTrueFilter = checkIfFilterColumnIsCachedInDriver(columnResolvedFilterInfo, segmentProperties, minMaxCacheColumns, true); } else { columnResolvedFilterInfo = filterExpressionResolverTree.getDimColResolvedFilterInfo(); if (!columnResolvedFilterInfo.getDimension().hasEncoding(Encoding.IMPLICIT)) { replaceCurrentNodeWithTrueFilter = checkIfFilterColumnIsCachedInDriver(columnResolvedFilterInfo, segmentProperties, minMaxCacheColumns, false); } } return replaceCurrentNodeWithTrueFilter; }