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() + "'";
