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
