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

szehon pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iceberg.git


The following commit(s) were added to refs/heads/master by this push:
     new c071273c1b Spark 3.4: Evaluate ExpressionUtil.selectsPartitions for 
partitioned table only (#8142)
c071273c1b is described below

commit c071273c1bcda4b657f3ccd5063710dfe712377d
Author: Xianyang Liu <[email protected]>
AuthorDate: Wed Jul 26 02:18:53 2023 +0800

    Spark 3.4: Evaluate ExpressionUtil.selectsPartitions for partitioned table 
only (#8142)
---
 .../java/org/apache/iceberg/spark/source/SparkScanBuilder.java   | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git 
a/spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/source/SparkScanBuilder.java
 
b/spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/source/SparkScanBuilder.java
index d19368cec8..17d0283c88 100644
--- 
a/spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/source/SparkScanBuilder.java
+++ 
b/spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/source/SparkScanBuilder.java
@@ -30,6 +30,7 @@ import org.apache.iceberg.IncrementalChangelogScan;
 import org.apache.iceberg.MetadataColumns;
 import org.apache.iceberg.MetricsConfig;
 import org.apache.iceberg.MetricsModes;
+import org.apache.iceberg.PartitionSpec;
 import org.apache.iceberg.Schema;
 import org.apache.iceberg.Snapshot;
 import org.apache.iceberg.StructLike;
@@ -167,7 +168,9 @@ public class SparkScanBuilder
           pushableFilters.add(filter);
         }
 
-        if (expr == null || !ExpressionUtil.selectsPartitions(expr, table, 
caseSensitive)) {
+        if (expr == null
+            || unpartitioned()
+            || !ExpressionUtil.selectsPartitions(expr, table, caseSensitive)) {
           postScanFilters.add(filter);
         } else {
           LOG.info("Evaluating completely on Iceberg side: {}", filter);
@@ -185,6 +188,10 @@ public class SparkScanBuilder
     return postScanFilters.toArray(new Filter[0]);
   }
 
+  private boolean unpartitioned() {
+    return 
table.specs().values().stream().noneMatch(PartitionSpec::isPartitioned);
+  }
+
   @Override
   public Filter[] pushedFilters() {
     return pushedFilters;

Reply via email to