This is an automated email from the ASF dual-hosted git repository.
diqiu50 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/main by this push:
new af39442bd4 [#10717] fix(trino-connector): Enable multi-metalake
support for Trino 469+ (#10748)
af39442bd4 is described below
commit af39442bd48574591be8cb1f58e461c9ea14d146
Author: Sachin Ranjalkar <[email protected]>
AuthorDate: Tue Apr 28 13:10:17 2026 +0530
[#10717] fix(trino-connector): Enable multi-metalake support for Trino 469+
(#10748)
### What changes were proposed in this pull request?
Enable multi-metalake mode (`gravitino.use-single-metalake=false`) for
Trino connector versions 469-472 and 473-478 by marking them as
supporting catalog names with metalake prefix. Disable the flag for
446-451 which does not support this mode.
### Why are the changes needed?
Fix: #10717
Connector versions 469+ and 473+ reported
`supportCatalogNameWithMetalake() == false`, causing a hard startup
error when `gravitino.use-single-metalake=false`. These versions do
support the feature, so the flag is corrected and previously disabled
multi-metalake tests are re-enabled.
### Does this PR introduce _any_ user-facing change?
Yes: users on Trino 469+ with `gravitino.use-single-metalake=false` can
now start the connector successfully. Documentation for the
`gravitino.use-single-metalake` property has been added to the
configuration reference.
### How was this patch tested?
- Re-enabled `MultiMetalake` tests in `TestGravitinoConnector469` and
`TestGravitinoConnector478`.
- `./gradlew :trino-connector:trino-connector:test
:trino-connector:trino-connector-469-472:test
:trino-connector:trino-connector-473-478:test -PskipITs` — all pass.
---
docs/trino-connector/configuration.md | 3 +++
.../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, 19 insertions(+), 35 deletions(-)
diff --git a/docs/trino-connector/configuration.md
b/docs/trino-connector/configuration.md
index 7380684a90..ba7532049f 100644
--- a/docs/trino-connector/configuration.md
+++ b/docs/trino-connector/configuration.md
@@ -16,11 +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