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)