This is an automated email from the ASF dual-hosted git repository.
JingsongLi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git
The following commit(s) were added to refs/heads/master by this push:
new 8688a0e643 [spark] Fix min and max query failure on metadata columns
(#9431)
8688a0e643 is described below
commit 8688a0e6433e287a05965d31e55084b23660223a
Author: Arnav Balyan <[email protected]>
AuthorDate: Fri Aug 28 13:13:45 2026 +0530
[spark] Fix min and max query failure on metadata columns (#9431)
---
.../paimon/spark/aggregate/AggregatePushDownUtils.scala | 3 +++
.../apache/paimon/spark/sql/PushDownAggregatesTest.scala | 16 ++++++++++++++++
2 files changed, 19 insertions(+)
diff --git
a/paimon-spark/paimon-spark-common/src/main/scala/org/apache/paimon/spark/aggregate/AggregatePushDownUtils.scala
b/paimon-spark/paimon-spark-common/src/main/scala/org/apache/paimon/spark/aggregate/AggregatePushDownUtils.scala
index 8b0a57cc52..c2c82989e6 100644
---
a/paimon-spark/paimon-spark-common/src/main/scala/org/apache/paimon/spark/aggregate/AggregatePushDownUtils.scala
+++
b/paimon-spark/paimon-spark-common/src/main/scala/org/apache/paimon/spark/aggregate/AggregatePushDownUtils.scala
@@ -113,6 +113,9 @@ object AggregatePushDownUtils {
}
val columnName = extractColumn.get
+ if (rowType.notContainsField(columnName)) {
+ return None
+ }
val dataType = rowType.getField(columnName).`type`()
if (minmaxAvailable(dataType)) {
Option(columnName)
diff --git
a/paimon-spark/paimon-spark-ut/src/test/scala/org/apache/paimon/spark/sql/PushDownAggregatesTest.scala
b/paimon-spark/paimon-spark-ut/src/test/scala/org/apache/paimon/spark/sql/PushDownAggregatesTest.scala
index 3c195d150f..875fd28577 100644
---
a/paimon-spark/paimon-spark-ut/src/test/scala/org/apache/paimon/spark/sql/PushDownAggregatesTest.scala
+++
b/paimon-spark/paimon-spark-ut/src/test/scala/org/apache/paimon/spark/sql/PushDownAggregatesTest.scala
@@ -51,6 +51,22 @@ class PushDownAggregatesTest extends PaimonSparkTestBase
with AdaptiveSparkPlanH
}
}
+ test("Push down aggregate - metadata column") {
+ withTable("T") {
+ spark.sql(
+ """
+ |CREATE TABLE T (c1 INT, c2 STRING) TBLPROPERTIES
('bucket-key'='c1', 'bucket'='3')
+ |""".stripMargin)
+ spark.sql(
+ "INSERT INTO T VALUES (1, 'x1'), (2, 'x2'), (3, 'x3'), (4, 'x4'), (5,
'x5'), (6, 'x6')")
+
+ runAndCheckAggregate(
+ "SELECT MIN(__paimon_bucket), MAX(__paimon_bucket) FROM T",
+ Row(0, 2) :: Nil,
+ 2)
+ }
+ }
+
test("Push down aggregate - append table without partitions") {
withTable("T") {
spark.sql("CREATE TABLE T (c1 INT, c2 STRING, c3 DOUBLE, c4 DATE)")