Github user kevinjmh commented on a diff in the pull request: https://github.com/apache/carbondata/pull/2665#discussion_r218679293 --- Diff: core/src/main/java/org/apache/carbondata/core/datamap/DataMapChooser.java --- @@ -268,23 +238,38 @@ private ExpressionTuple selectDataMap(Expression expression, List<TableDataMap> private void extractColumnExpression(Expression expression, List<ColumnExpression> columnExpressions) { - if (expression instanceof ColumnExpression) { - columnExpressions.add((ColumnExpression) expression); - } else if (expression instanceof MatchExpression) { - // this is a special case for lucene - // build a fake ColumnExpression to filter datamaps which contain target column - // a Lucene query string is alike "column:query term" - String[] queryItems = expression.getString().split(":", 2); - if (queryItems.length == 2) { - columnExpressions.add(new ColumnExpression(queryItems[0], null)); - } - } else if (expression != null) { - List<Expression> children = expression.getChildren(); - if (children != null && children.size() > 0) { - for (Expression exp : children) { - extractColumnExpression(exp, columnExpressions); + switch (expression.getFilterExpressionType()) { --- End diff -- Change to check by method `isSupport` in datamap factory
---