diqiu50 commented on code in PR #9735:
URL: https://github.com/apache/gravitino/pull/9735#discussion_r2739773969


##########
trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory.java:
##########
@@ -117,13 +137,75 @@ public Connector create(
       }
       GravitinoStoredProcedureFactory gravitinoStoredProcedureFactory =
           new GravitinoStoredProcedureFactory(catalogConnectorManager, 
metalake);
-      return new GravitinoSystemConnector(gravitinoStoredProcedureFactory);
+      return createSystemConnector(gravitinoStoredProcedureFactory);
     }
   }
 
-  @VisibleForTesting
-  Supplier<GravitinoAdminClient> clientProvider() {
-    return () -> null;
+  protected GravitinoConnector createConnector(CatalogConnectorContext 
connectorContext) {
+    throw new RuntimeException("Should be overridden in subclass");
+  }
+
+  protected GravitinoSystemConnector createSystemConnector(
+      GravitinoStoredProcedureFactory storedProcedureFactory) {
+    return new GravitinoSystemConnector(storedProcedureFactory);
+  }
+
+  protected String getTrinoCatalogName(String metalakeName, String 
catalogName) {
+    return "\"" + metalakeName + "." + catalogName + "\"";
+  }
+
+  private void checkTrinoSpiVersion(ConnectorContext context, GravitinoConfig 
config) {
+    String spiVersion = context.getSpiVersion();
+    trinoVersion = Integer.parseInt(spiVersion);
+
+    // check catalog name with metalake are supported in this trino version
+    if (!config.singleMetalakeMode() && !supportCatalogNameWithMetalake()) {
+      String errmsg =
+          String.format(
+              "The trino-connector-%s-%s does not support catalog name with 
metalake.",
+              getMinSupportTrinoSpiVersion(), getMaxSupportTrinoSpiVersion());
+      throw new 
TrinoException(GravitinoErrorCode.GRAVITINO_UNSUPPORTED_TRINO_VERSION, errmsg);
+    }
+
+    // skip version validation
+    boolean spiVersionCheck = config.isSkipTrinoVersionValidation();
+    if (spiVersionCheck) {
+      if (trinoVersion < getMinSupportTrinoSpiVersion()
+          || trinoVersion > getMaxSupportTrinoSpiVersion()) {
+        LOG.warn(
+            "The version {} has not undergone thorough testing with Gravitino, 
there may be compatibility problem.",
+            trinoVersion);
+      }
+      return;
+    }
+
+    // version validation
+    if (trinoVersion < getMinSupportTrinoSpiVersion()
+        || trinoVersion > getMaxSupportTrinoSpiVersion()) {
+      String errmsg =
+          String.format(
+              "Unsupported Trino-%s version. The Supported version for the 
Gravitino-Trino-connector from Trino-%d to Trino-%d."
+                  + "Maybe you can set gravitino.trino.skip-version-validation 
to skip version validation.",
+              trinoVersion, getMinSupportTrinoSpiVersion(), 
getMaxSupportTrinoSpiVersion());
+      throw new 
TrinoException(GravitinoErrorCode.GRAVITINO_UNSUPPORTED_TRINO_VERSION, errmsg);
+    }
+  }
+
+  protected boolean supportCatalogNameWithMetalake() {
+    return true;
+  }
+
+  protected int getMinSupportTrinoSpiVersion() {
+    return MIN_SUPPORT_TRINO_SPI_VERSION;
+  }
+
+  protected int getMaxSupportTrinoSpiVersion() {
+    return MAX_SUPPORT_TRINO_SPI_VERSION;
+  }
+
+  @SuppressWarnings("deprecation")
+  protected boolean isCoordinator(ConnectorContext connectorContext) {
+    return connectorContext.getNodeManager().getCurrentNode().isCoordinator();

Review Comment:
   Here, we use a default implementation.



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