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

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


The following commit(s) were added to refs/heads/main by this push:
     new bd9c615d5d Spark: Improve error msg when function can't be loaded 
(#9814)
bd9c615d5d is described below

commit bd9c615d5d2fedb1a9fda6eb018017d0cc32f04e
Author: Eduard Tudenhoefner <[email protected]>
AuthorDate: Tue Feb 27 19:54:04 2024 +0100

    Spark: Improve error msg when function can't be loaded (#9814)
---
 .../src/test/java/org/apache/iceberg/spark/extensions/TestViews.java | 5 ++---
 .../src/main/java/org/apache/iceberg/spark/SupportsFunctions.java    | 4 +++-
 .../src/test/java/org/apache/iceberg/spark/TestFunctionCatalog.java  | 4 ++--
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git 
a/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestViews.java
 
b/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestViews.java
index 786d0bd1c6..bd611b936a 100644
--- 
a/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestViews.java
+++ 
b/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestViews.java
@@ -504,9 +504,8 @@ public class TestViews extends ExtensionsTestBase {
     // reading from a view that references a TEMP FUNCTION shouldn't be 
possible
     assertThatThrownBy(() -> sql("SELECT * FROM %s", viewName))
         .isInstanceOf(AnalysisException.class)
-        .hasMessageContaining("The function")
-        .hasMessageContaining(functionName)
-        .hasMessageContaining("cannot be found");
+        .hasMessageStartingWith(
+            String.format("Cannot load function: %s.%s.%s", catalogName, 
NAMESPACE, functionName));
   }
 
   @TestTemplate
diff --git 
a/spark/v3.5/spark/src/main/java/org/apache/iceberg/spark/SupportsFunctions.java
 
b/spark/v3.5/spark/src/main/java/org/apache/iceberg/spark/SupportsFunctions.java
index 34897d2b4c..1aa08b02ce 100644
--- 
a/spark/v3.5/spark/src/main/java/org/apache/iceberg/spark/SupportsFunctions.java
+++ 
b/spark/v3.5/spark/src/main/java/org/apache/iceberg/spark/SupportsFunctions.java
@@ -24,6 +24,7 @@ import 
org.apache.spark.sql.catalyst.analysis.NoSuchNamespaceException;
 import org.apache.spark.sql.connector.catalog.FunctionCatalog;
 import org.apache.spark.sql.connector.catalog.Identifier;
 import org.apache.spark.sql.connector.catalog.functions.UnboundFunction;
+import scala.Option;
 
 interface SupportsFunctions extends FunctionCatalog {
 
@@ -58,6 +59,7 @@ interface SupportsFunctions extends FunctionCatalog {
       }
     }
 
-    throw new NoSuchFunctionException(ident);
+    throw new NoSuchFunctionException(
+        String.format("Cannot load function: %s.%s", name(), ident), 
Option.empty());
   }
 }
diff --git 
a/spark/v3.5/spark/src/test/java/org/apache/iceberg/spark/TestFunctionCatalog.java
 
b/spark/v3.5/spark/src/test/java/org/apache/iceberg/spark/TestFunctionCatalog.java
index 5789b43e7d..6ae22f52b5 100644
--- 
a/spark/v3.5/spark/src/test/java/org/apache/iceberg/spark/TestFunctionCatalog.java
+++ 
b/spark/v3.5/spark/src/test/java/org/apache/iceberg/spark/TestFunctionCatalog.java
@@ -87,13 +87,13 @@ public class TestFunctionCatalog extends 
TestBaseWithCatalog {
                 
asFunctionCatalog.loadFunction(Identifier.of(DEFAULT_NAMESPACE, 
"iceberg_version")))
         .isInstanceOf(NoSuchFunctionException.class)
         .hasMessageStartingWith(
-            "[ROUTINE_NOT_FOUND] The function default.iceberg_version cannot 
be found.");
+            String.format("Cannot load function: %s.default.iceberg_version", 
catalogName));
 
     Identifier undefinedFunction = Identifier.of(SYSTEM_NAMESPACE, 
"undefined_function");
     assertThatThrownBy(() -> asFunctionCatalog.loadFunction(undefinedFunction))
         .isInstanceOf(NoSuchFunctionException.class)
         .hasMessageStartingWith(
-            "[ROUTINE_NOT_FOUND] The function system.undefined_function cannot 
be found.");
+            String.format("Cannot load function: 
%s.system.undefined_function", catalogName));
 
     assertThatThrownBy(() -> sql("SELECT undefined_function(1, 2)"))
         .isInstanceOf(AnalysisException.class)

Reply via email to