This is an automated email from the ASF dual-hosted git repository.

blue pushed a commit to branch 0.9.x
in repository https://gitbox.apache.org/repos/asf/iceberg.git

commit f3242b4394063a1899be096d4cb027edc2d47d11
Author: Ryan Blue <[email protected]>
AuthorDate: Fri Jul 31 15:57:05 2020 -0700

    Spark: Fix Spark 3 describe with IN predicates (#1283)
---
 spark3/src/main/java/org/apache/iceberg/spark/Spark3Util.java | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/spark3/src/main/java/org/apache/iceberg/spark/Spark3Util.java 
b/spark3/src/main/java/org/apache/iceberg/spark/Spark3Util.java
index 03d39be..03a4ea5 100644
--- a/spark3/src/main/java/org/apache/iceberg/spark/Spark3Util.java
+++ b/spark3/src/main/java/org/apache/iceberg/spark/Spark3Util.java
@@ -24,6 +24,7 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.stream.Collectors;
 import org.apache.iceberg.PartitionSpec;
 import org.apache.iceberg.Schema;
 import org.apache.iceberg.TableProperties;
@@ -517,11 +518,19 @@ public class Spark3Util {
           return pred.ref().name() + " != " + sqlString(pred.literal());
         case STARTS_WITH:
           return pred.ref().name() + " LIKE '" + pred.literal() + "%'";
+        case IN:
+          return pred.ref().name() + " IN (" + sqlString(pred.literals()) + 
")";
+        case NOT_IN:
+          return pred.ref().name() + " NOT IN (" + sqlString(pred.literals()) 
+ ")";
         default:
           throw new UnsupportedOperationException("Cannot convert predicate to 
SQL: " + pred);
       }
     }
 
+    private static <T> String 
sqlString(List<org.apache.iceberg.expressions.Literal<T>> literals) {
+      return 
literals.stream().map(DescribeExpressionVisitor::sqlString).collect(Collectors.joining(",
 "));
+    }
+
     private static String sqlString(org.apache.iceberg.expressions.Literal<?> 
lit) {
       if (lit.value() instanceof String) {
         return "'" + lit.value() + "'";

Reply via email to