mchades commented on code in PR #9580:
URL: https://github.com/apache/gravitino/pull/9580#discussion_r2780498192


##########
spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/catalog/BaseCatalog.java:
##########
@@ -470,6 +532,44 @@ private String getDatabase(NameIdentifier 
gravitinoIdentifier) {
     return gravitinoIdentifier.namespace().level(0);
   }
 
+  private boolean hasSparkImplementation(Function function) {
+    for (FunctionDefinition definition : function.definitions()) {
+      for (FunctionImpl impl : definition.impls()) {
+        if (isSparkImplementation(impl)) {
+          return true;
+        }
+      }
+    }
+    return false;

Review Comment:
   The loadFunction has protection logic, and in the worst case, a function is 
listed but returns a NoSuchFunctionException when loaded.



##########
spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/catalog/BaseCatalog.java:
##########
@@ -470,6 +532,44 @@ private String getDatabase(NameIdentifier 
gravitinoIdentifier) {
     return gravitinoIdentifier.namespace().level(0);
   }
 
+  private boolean hasSparkImplementation(Function function) {
+    for (FunctionDefinition definition : function.definitions()) {
+      for (FunctionImpl impl : definition.impls()) {
+        if (isSparkImplementation(impl)) {
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+
+  private boolean isSparkImplementation(FunctionImpl impl) {
+    return FunctionImpl.RuntimeType.SPARK.equals(impl.runtime());
+  }
+
+  private String extractClassName(FunctionImpl impl) {
+    if (impl instanceof JavaImpl) {
+      return ((JavaImpl) impl).className();
+    }
+    throw new IllegalArgumentException(
+        String.format("Unsupported function implementation %s", 
impl.getClass().getName()));
+  }
+
+  private UnboundFunction instantiateFunction(String className, Identifier 
ident)
+      throws NoSuchFunctionException {
+    try {
+      Class<?> functionClass = Class.forName(className);
+      Object instance = functionClass.getDeclaredConstructor().newInstance();
+      if (instance instanceof UnboundFunction) {
+        return (UnboundFunction) instance;
+      }
+    } catch (ReflectiveOperationException e) {
+      throw new RuntimeException(
+          String.format("Failed to instantiate function class: %s", 
className), e);
+    }

Review Comment:
   fixed



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to