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)")

Reply via email to