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

 ##########
 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) {
 
 Review comment:
   done

----------------------------------------------------------------
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:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to