private DataMapExprWrapper chooseDataMap(DataMapLevel level, FilterResolverIntf resolverIntf) { if (resolverIntf != null) { Expression expression = resolverIntf.getFilterExpression(); List<TableDataMap> datamaps = level == DataMapLevel.CG ? cgDataMaps : fgDataMaps; if (datamaps.size() > 0) { ExpressionTuple tuple = selectDataMap(expression, datamaps, resolverIntf); if (tuple.dataMapExprWrapper != null) { return tuple.dataMapExprWrapper; } } } return null; }
/** * Return a chosen datamap based on input filter. See {@link DataMapChooser} */ public DataMapExprWrapper choose(FilterResolverIntf filter) { if (filter != null) { Expression expression = filter.getFilterExpression(); // First check for FG datamaps if any exist ExpressionTuple tuple = selectDataMap(expression, fgDataMaps, filter); if (tuple.dataMapExprWrapper == null) { // Check for CG datamap tuple = selectDataMap(expression, cgDataMaps, filter); } if (tuple.dataMapExprWrapper != null) { return tuple.dataMapExprWrapper; } } // Return the default datamap if no other datamap exists. return new DataMapExprWrapperImpl( DataMapStoreManager.getInstance().getDefaultDataMap(carbonTable), filter); }
if (expression instanceof AndExpression) { AndExpression andExpression = (AndExpression) expression; ExpressionTuple left = selectDataMap(andExpression.getLeft(), allDataMap, filterResolverIntf.getLeft()); ExpressionTuple right = selectDataMap(andExpression.getRight(), allDataMap, filterResolverIntf.getRight()); Set<ExpressionType> filterExpressionTypes = new HashSet<>(); if (expression instanceof OrExpression) { OrExpression orExpression = (OrExpression) expression; ExpressionTuple left = selectDataMap(orExpression.getLeft(), allDataMap, filterResolverIntf.getLeft()); ExpressionTuple right = selectDataMap(orExpression.getRight(), allDataMap, filterResolverIntf.getRight());