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;