You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@carbondata.apache.org by GitBox <gi...@apache.org> on 2019/07/03 10:51:04 UTC

[GitHub] [carbondata] ajantha-bhat commented on a change in pull request #3317: [CARBONDATA-3461] Carbon SDK support filter equal values set.

ajantha-bhat commented on a change in pull request #3317: [CARBONDATA-3461] Carbon SDK support filter equal values set.
URL: https://github.com/apache/carbondata/pull/3317#discussion_r299894253
 
 

 ##########
 File path: store/sdk/src/main/java/org/apache/carbondata/sdk/file/CarbonReaderBuilder.java
 ##########
 @@ -170,6 +176,75 @@ public CarbonReaderBuilder filter(Expression filterExpression) {
     return this;
   }
 
+  public CarbonReaderBuilder filter(String columnName, String value) {
+    EqualToExpression equalToExpression = new EqualToExpression(
+        new ColumnExpression(columnName, DataTypes.STRING),
+        new LiteralExpression(value, DataTypes.STRING));
+    this.filterExpression = equalToExpression;
+    return this;
+  }
+
+  public CarbonReaderBuilder filter(String columnName, List<String> values) {
+    Expression expression = null;
+    if (0 == values.size()) {
+      expression = new EqualToExpression(
+          new ColumnExpression(columnName, DataTypes.STRING),
+          new LiteralExpression(null, DataTypes.STRING));
+    } else {
+      expression = new EqualToExpression(
+          new ColumnExpression(columnName, DataTypes.STRING),
+          new LiteralExpression(values.get(0), DataTypes.STRING));
+    }
+    for (int i = 1; i < values.size(); i++) {
+      Expression expression2 = new EqualToExpression(
+          new ColumnExpression(columnName, DataTypes.STRING),
+          new LiteralExpression(values.get(i), DataTypes.STRING));
+      expression = new OrExpression(expression, expression2);
+    }
+    this.filterExpression = expression;
+    return this;
+  }
+
+  private CarbonReaderBuilder filter(String columnName, DataType dataType,
+                                     List<Object> values) {
+    Expression expression = null;
+    if (0 == values.size()) {
+      expression = new EqualToExpression(
+          new ColumnExpression(columnName, dataType),
+          new LiteralExpression(null, dataType));
+    } else {
+      expression = new EqualToExpression(
+          new ColumnExpression(columnName, dataType),
+          new LiteralExpression(values.get(0), dataType));
+    }
+    for (int i = 1; i < values.size(); i++) {
+      Expression expression2 = new EqualToExpression(
+          new ColumnExpression(columnName, dataType),
+          new LiteralExpression(values.get(i), dataType));
+      expression = new OrExpression(expression, expression2);
+    }
+    this.filterExpression = expression;
+    return this;
+  }
+
+  public CarbonReaderBuilder filter(String columnName, String dataType, List<Object> values) {
+    if (DataTypes.STRING.getName().equalsIgnoreCase(dataType)) {
+      return filter(columnName, DataTypes.STRING, values);
+    } else if (DataTypes.INT.getName().equalsIgnoreCase(dataType)) {
+      return filter(columnName, DataTypes.INT, values);
+    } else if (DataTypes.DOUBLE.getName().equalsIgnoreCase(dataType)) {
+      return filter(columnName, DataTypes.DOUBLE, values);
+    } else if (DataTypes.FLOAT.getName().equalsIgnoreCase(dataType)) {
+      return filter(columnName, DataTypes.FLOAT, values);
+    } else if (DataTypes.SHORT.getName().equalsIgnoreCase(dataType)) {
+      return filter(columnName, DataTypes.SHORT, values);
+    } else if (DataTypes.BINARY.getName().equalsIgnoreCase(dataType)) {
 
 Review comment:
   have you tested ?, without min max storing what is the use of filtering ?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services