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

lzljs3620320 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 34500618a8 [spark] Resolve function after all args have been resolved 
(#6292)
34500618a8 is described below

commit 34500618a8c15e9cd7ef86ff51421cf311a2605a
Author: Zouxxyy <zouxinyu....@alibaba-inc.com>
AuthorDate: Mon Sep 22 10:01:05 2025 +0800

    [spark] Resolve function after all args have been resolved (#6292)
---
 .../catalyst/analysis/PaimonFunctionResolver.scala      |  2 +-
 .../paimon/spark/sql/PaimonV1FunctionTestBase.scala     | 17 +++++++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git 
a/paimon-spark/paimon-spark-common/src/main/scala/org/apache/paimon/spark/catalyst/analysis/PaimonFunctionResolver.scala
 
b/paimon-spark/paimon-spark-common/src/main/scala/org/apache/paimon/spark/catalyst/analysis/PaimonFunctionResolver.scala
index 507cbf79de..3fb76fa521 100644
--- 
a/paimon-spark/paimon-spark-common/src/main/scala/org/apache/paimon/spark/catalyst/analysis/PaimonFunctionResolver.scala
+++ 
b/paimon-spark/paimon-spark-common/src/main/scala/org/apache/paimon/spark/catalyst/analysis/PaimonFunctionResolver.scala
@@ -34,7 +34,7 @@ case class PaimonFunctionResolver(spark: SparkSession) 
extends Rule[LogicalPlan]
     
plan.resolveOperatorsUpWithPruning(_.containsAnyPattern(UNRESOLVED_FUNCTION)) {
       case l: LogicalPlan =>
         
l.transformExpressionsWithPruning(_.containsAnyPattern(UNRESOLVED_FUNCTION)) {
-          case u: UnResolvedPaimonV1Function =>
+          case u: UnResolvedPaimonV1Function if u.arguments.forall(_.resolved) 
=>
             u.funcIdent.catalog match {
               case Some(catalog) =>
                 catalogManager.catalog(catalog) match {
diff --git 
a/paimon-spark/paimon-spark-ut/src/test/scala/org/apache/paimon/spark/sql/PaimonV1FunctionTestBase.scala
 
b/paimon-spark/paimon-spark-ut/src/test/scala/org/apache/paimon/spark/sql/PaimonV1FunctionTestBase.scala
index 61fe87758d..743b36f8dd 100644
--- 
a/paimon-spark/paimon-spark-ut/src/test/scala/org/apache/paimon/spark/sql/PaimonV1FunctionTestBase.scala
+++ 
b/paimon-spark/paimon-spark-ut/src/test/scala/org/apache/paimon/spark/sql/PaimonV1FunctionTestBase.scala
@@ -214,6 +214,23 @@ abstract class PaimonV1FunctionTestBase extends 
PaimonSparkTestWithRestCatalogBa
       }
     }
   }
+
+  test("Paimon V1 Function: select with view") {
+    withUserDefinedFunction("udf_add2" -> false) {
+      sql(s"""
+             |CREATE FUNCTION udf_add2 AS '$UDFExampleAdd2Class'
+             |USING JAR '$testUDFJarPath'
+             |""".stripMargin)
+      withTable("t") {
+        withView("v") {
+          sql("CREATE TABLE t (a INT, b INT)")
+          sql("INSERT INTO t VALUES (1, 2), (3, 4)")
+          sql("CREATE VIEW v AS SELECT udf_add2(a, b) AS c1 FROM t")
+          checkAnswer(sql("SELECT * FROM v"), Seq(Row(3), Row(7)))
+        }
+      }
+    }
+  }
 }
 
 class DisablePaimonV1FunctionTest extends PaimonSparkTestWithRestCatalogBase {

Reply via email to