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

diqiu50 pushed a commit to branch cherry-pick/10717-to-branch-1.2
in repository https://gitbox.apache.org/repos/asf/gravitino.git

commit 7d53175500d45f54b11604475cbab569cb052328
Author: Sachin Ranjalkar <[email protected]>
AuthorDate: Tue Apr 28 13:10:17 2026 +0530

    [Cherry-pick to branch-1.2] [#10717] fix(trino-connector): Enable 
multi-metalake support for Trino 469+ (#10748)
---
 docs/trino-connector/configuration.md                        |  7 +++++++
 .../trino/connector/GravitinoConnectorFactory446.java        |  2 +-
 .../trino/connector/GravitinoConnectorFactory452.java        |  5 -----
 .../trino/connector/GravitinoConnectorFactory469.java        | 10 ----------
 .../src/test/java/TestGravitinoConnector469.java             |  2 --
 .../trino/connector/GravitinoConnectorFactory478.java        | 10 ----------
 .../gravitino/trino/connector/TestGravitinoConnector478.java | 12 ++++++++++--
 .../gravitino/trino/connector/GravitinoConnectorFactory.java | 10 +++++-----
 8 files changed, 23 insertions(+), 35 deletions(-)

diff --git a/docs/trino-connector/configuration.md 
b/docs/trino-connector/configuration.md
index 4adeb28360..ba7532049f 100644
--- a/docs/trino-connector/configuration.md
+++ b/docs/trino-connector/configuration.md
@@ -16,7 +16,14 @@ license: "This software is licensed under the Apache License 
version 2."
 | gravitino.trino.skip-version-validation     | boolean | false                
 | The `gravitino.trino.skip-version-validation` defines whether to skip Trino 
version validation. Gravitino supports Trino versions between 435 and 478. If 
this option is `true`, unsupported Trino versions can still be used, but 
compatibility is not guaranteed.                                                
 | No       | 1.0.0         |
 | gravitino.client.                           | string  | (none)               
 | The configuration key prefix for the Gravitino client config.                
                                                                                
                                                                                
                                                                       | No     
  | 1.0.0         |
 | gravitino.trino.skip-catalog-patterns       | string  | (none)               
 | The `gravitino.trino.skip-catalog-patterns` defines a comma-separated list 
of catalog name regex patterns that should be excluded from loading. For 
example, `test_.*, .*_tmp` excludes all catalogs starting with `test_` or 
ending with `_tmp`.                                                             
      | No       | 1.2.0         |
+| gravitino.use-single-metalake               | boolean | true                 
 | If `true`, only one metalake is used and catalogs are identified by 
`<catalog_name>`. If `false`, multi-metalake mode is enabled and catalogs are 
identified by `<metalake_name>.<catalog_name>`. | No       | 1.2.0         |
 
 To configure the Gravitino client, use properties prefixed with 
`gravitino.client.`. These properties will directly passed to the Gravitino 
client.
 
 **Note:** Invalid configuration properties will result in exceptions. Please 
see [Gravitino Java client 
configurations](../how-to-use-gravitino-client.md#gravitino-java-client-configuration)
 for more support client configuration.
+
+Multi-metalake mode (`gravitino.use-single-metalake=false`) is supported on 
Trino connector versions 435-445 and 469-478. On versions 446-468, a warning is 
logged and the connector initializes, but the mode is not fully supported and 
some operations may fail.
+
+## Authentication
+
+The Gravitino Trino connector supports authenticating to the Gravitino server 
using Simple, OAuth, and Kerberos authentication. For detailed authentication 
configuration, please refer to [Trino Connector 
Authentication](./authentication.md).
diff --git 
a/trino-connector/trino-connector-446-451/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory446.java
 
b/trino-connector/trino-connector-446-451/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory446.java
index 56bdbf9067..39e273e0a3 100644
--- 
a/trino-connector/trino-connector-446-451/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory446.java
+++ 
b/trino-connector/trino-connector-446-451/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory446.java
@@ -41,7 +41,7 @@ public class GravitinoConnectorFactory446 extends 
GravitinoConnectorFactory {
 
   @Override
   protected boolean supportCatalogNameWithMetalake() {
-    return true;
+    return false;
   }
 
   @Override
diff --git 
a/trino-connector/trino-connector-452-468/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory452.java
 
b/trino-connector/trino-connector-452-468/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory452.java
index f8c69d7c6e..01f73440e1 100644
--- 
a/trino-connector/trino-connector-452-468/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory452.java
+++ 
b/trino-connector/trino-connector-452-468/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory452.java
@@ -39,11 +39,6 @@ public class GravitinoConnectorFactory452 extends 
GravitinoConnectorFactory {
     return 468;
   }
 
-  @Override
-  protected String getTrinoCatalogName(String metalake, String catalog) {
-    return "\"" + metalake + "." + catalog + "\"";
-  }
-
   @Override
   protected boolean supportCatalogNameWithMetalake() {
     return false;
diff --git 
a/trino-connector/trino-connector-469-472/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory469.java
 
b/trino-connector/trino-connector-469-472/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory469.java
index b365c81412..66b42c9ad0 100644
--- 
a/trino-connector/trino-connector-469-472/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory469.java
+++ 
b/trino-connector/trino-connector-469-472/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory469.java
@@ -39,16 +39,6 @@ public class GravitinoConnectorFactory469 extends 
GravitinoConnectorFactory {
     return 472;
   }
 
-  @Override
-  protected String getTrinoCatalogName(String metalake, String catalog) {
-    return "\"" + metalake + "." + catalog + "\"";
-  }
-
-  @Override
-  protected boolean supportCatalogNameWithMetalake() {
-    return false;
-  }
-
   @Override
   protected GravitinoConnector createConnector(CatalogConnectorContext 
connectorContext) {
     return new GravitinoConnector469(connectorContext);
diff --git 
a/trino-connector/trino-connector-469-472/src/test/java/TestGravitinoConnector469.java
 
b/trino-connector/trino-connector-469-472/src/test/java/TestGravitinoConnector469.java
index c3e49e2bba..f5a7680683 100644
--- 
a/trino-connector/trino-connector-469-472/src/test/java/TestGravitinoConnector469.java
+++ 
b/trino-connector/trino-connector-469-472/src/test/java/TestGravitinoConnector469.java
@@ -26,7 +26,6 @@ import org.apache.gravitino.trino.connector.GravitinoPlugin;
 import org.apache.gravitino.trino.connector.GravitinoPlugin469;
 import org.apache.gravitino.trino.connector.TestGravitinoConnector;
 import 
org.apache.gravitino.trino.connector.TestGravitinoConnectorWithMetalakeCatalogName;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Nested;
 
 public class TestGravitinoConnector469 {
@@ -45,7 +44,6 @@ public class TestGravitinoConnector469 {
   }
 
   @Nested
-  @Disabled
   class MultiMetalake extends TestGravitinoConnectorWithMetalakeCatalogName {
     @Override
     protected GravitinoPlugin createGravitinoPlugin(GravitinoAdminClient 
client) {
diff --git 
a/trino-connector/trino-connector-473-478/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory478.java
 
b/trino-connector/trino-connector-473-478/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory478.java
index 60680e1866..9da0802a89 100644
--- 
a/trino-connector/trino-connector-473-478/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory478.java
+++ 
b/trino-connector/trino-connector-473-478/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory478.java
@@ -39,16 +39,6 @@ public class GravitinoConnectorFactory478 extends 
GravitinoConnectorFactory {
     return 478;
   }
 
-  @Override
-  protected String getTrinoCatalogName(String metalake, String catalog) {
-    return "\"" + metalake + "." + catalog + "\"";
-  }
-
-  @Override
-  protected boolean supportCatalogNameWithMetalake() {
-    return false;
-  }
-
   @Override
   protected GravitinoConnector createConnector(CatalogConnectorContext 
connectorContext) {
     return new GravitinoConnector478(connectorContext);
diff --git 
a/trino-connector/trino-connector-473-478/src/test/java/org/apache/gravitino/trino/connector/TestGravitinoConnector478.java
 
b/trino-connector/trino-connector-473-478/src/test/java/org/apache/gravitino/trino/connector/TestGravitinoConnector478.java
index afe2022c8e..837d47e2d6 100644
--- 
a/trino-connector/trino-connector-473-478/src/test/java/org/apache/gravitino/trino/connector/TestGravitinoConnector478.java
+++ 
b/trino-connector/trino-connector-473-478/src/test/java/org/apache/gravitino/trino/connector/TestGravitinoConnector478.java
@@ -23,7 +23,6 @@ import static 
io.trino.testing.TestingSession.testSessionBuilder;
 import io.trino.Session;
 import io.trino.testing.DistributedQueryRunner;
 import org.apache.gravitino.client.GravitinoAdminClient;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Nested;
 
 public class TestGravitinoConnector478 {
@@ -42,7 +41,6 @@ public class TestGravitinoConnector478 {
   }
 
   @Nested
-  @Disabled
   class MultiMetalake extends TestGravitinoConnectorWithMetalakeCatalogName {
     @Override
     protected GravitinoPlugin createGravitinoPlugin(GravitinoAdminClient 
client) {
@@ -54,5 +52,15 @@ public class TestGravitinoConnector478 {
       Session session = testSessionBuilder().setCatalog("gravitino").build();
       return DistributedQueryRunner.builder(session).setWorkerCount(0).build();
     }
+
+    @Override
+    protected String getTrinoCliCatalogName(String metalake, String catalog) {
+      return metalake + "." + catalog;
+    }
+
+    @Override
+    protected String getTrinoSqlCatalogName(String metalakeName, String 
catalogName) {
+      return "\"" + metalakeName + "." + catalogName + "\"";
+    }
   }
 }
diff --git 
a/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory.java
 
b/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory.java
index c9fd7e9392..190e02f475 100644
--- 
a/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory.java
+++ 
b/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory.java
@@ -161,11 +161,11 @@ public class GravitinoConnectorFactory implements 
ConnectorFactory {
 
     // 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);
+      LOG.warn(
+          "The trino-connector-{}-{} does not fully support catalog name with 
metalake. "
+              + "The DROP CATALOG operation may not work correctly in 
multi-metalake mode.",
+          getMinSupportTrinoSpiVersion(),
+          getMaxSupportTrinoSpiVersion());
     }
 
     // skip version validation

Reply via email to