Github user kevinjmh commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/2665#discussion_r219378217
--- Diff:
datamap/bloom/src/main/java/org/apache/carbondata/datamap/bloom/BloomCoarseGrainDataMapFactory.java
---
@@ -123,6 +129,42 @@ public BloomCoarseGrainDataMapFactory(CarbonTable
carbonTable, DataMapSchema dat
}
}
+ @Override
+ public boolean isSupport(Expression expression) {
+ ColumnExpression filterColumn = null;
+ // First check type of child nodes, and get filter column name
+ switch (expression.getFilterExpressionType()) {
+ case IN:
+ InExpression inExpr = (InExpression) expression;
+ if (inExpr.getLeft() instanceof ColumnExpression &&
+ inExpr.getRight() instanceof ListExpression) {
+ filterColumn = (ColumnExpression) inExpr.getLeft();
+ } else if (inExpr.getRight() instanceof ColumnExpression &&
+ inExpr.getLeft() instanceof ListExpression) {
+ filterColumn = (ColumnExpression) inExpr.getRight();
+ }
+ break;
+ case EQUALS:
+ EqualToExpression equalToExpr = (EqualToExpression) expression;
+ if (equalToExpr.getLeft() instanceof ColumnExpression &&
+ equalToExpr.getRight() instanceof LiteralExpression) {
+ filterColumn = (ColumnExpression) equalToExpr.getLeft();
+ } else if (equalToExpr.getRight() instanceof ColumnExpression &&
+ equalToExpr.getLeft() instanceof LiteralExpression) {
+ filterColumn = (ColumnExpression) equalToExpr.getRight();
+ }
+ break;
+ default:
+ break;
+ }
+ // Then check if filter column is in index columns
+ if (null != filterColumn &&
dataMapMeta.getIndexedColumnNames().contains(
--- End diff --
for safety, convert to lowercase in both side to check
---