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
---