Skip to content

Commit ffeaa5c

Browse files
committed
[#10717] fix(trino-connector): Enable multi-metalake support for Trino 469+
Remove the supportCatalogNameWithMetalake and getTrinoCatalogName overrides in the Trino 469-472 and 473-478 factories so they inherit the default true from the base factory, fixing the startup exception when gravitino.use-single-metalake=false on Trino 469+. For connector versions where multi-metalake mode is not supported (currently 452-468), log a warning instead of throwing; DROP CATALOG and some other operations may fail on those versions. Enable and adapt the MultiMetalake integration test for 469-472 and 473-478, and document which versions support multi-metalake mode.
1 parent cde9c83 commit ffeaa5c

7 files changed

Lines changed: 18 additions & 34 deletions

File tree

docs/trino-connector/configuration.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,14 @@ license: "This software is licensed under the Apache License version 2."
1616
| 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 |
1717
| gravitino.client. | string | (none) | The configuration key prefix for the Gravitino client config. | No | 1.0.0 |
1818
| 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 |
19+
| 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 |
1920

2021
To configure the Gravitino client, use properties prefixed with `gravitino.client.`. These properties will directly passed to the Gravitino client.
2122

2223
**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.
2324

25+
Multi-metalake mode (`gravitino.use-single-metalake=false`) is supported on Trino connector versions 435-451 and 469-478. On versions 452-468, a warning is logged and the connector initializes, but the mode is not fully supported and some operations may fail.
26+
2427
## Authentication
2528

2629
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).

trino-connector/trino-connector-452-468/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory452.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,6 @@ protected int getMaxSupportTrinoSpiVersion() {
3939
return 468;
4040
}
4141

42-
@Override
43-
protected String getTrinoCatalogName(String metalake, String catalog) {
44-
return "\"" + metalake + "." + catalog + "\"";
45-
}
46-
4742
@Override
4843
protected boolean supportCatalogNameWithMetalake() {
4944
return false;

trino-connector/trino-connector-469-472/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory469.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,6 @@ protected int getMaxSupportTrinoSpiVersion() {
3939
return 472;
4040
}
4141

42-
@Override
43-
protected String getTrinoCatalogName(String metalake, String catalog) {
44-
return "\"" + metalake + "." + catalog + "\"";
45-
}
46-
47-
@Override
48-
protected boolean supportCatalogNameWithMetalake() {
49-
return false;
50-
}
51-
5242
@Override
5343
protected GravitinoConnector createConnector(CatalogConnectorContext connectorContext) {
5444
return new GravitinoConnector469(connectorContext);

trino-connector/trino-connector-469-472/src/test/java/TestGravitinoConnector469.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.apache.gravitino.trino.connector.GravitinoPlugin469;
2727
import org.apache.gravitino.trino.connector.TestGravitinoConnector;
2828
import org.apache.gravitino.trino.connector.TestGravitinoConnectorWithMetalakeCatalogName;
29-
import org.junit.jupiter.api.Disabled;
3029
import org.junit.jupiter.api.Nested;
3130

3231
public class TestGravitinoConnector469 {
@@ -45,7 +44,6 @@ protected DistributedQueryRunner createTrinoQueryRunner() throws Exception {
4544
}
4645

4746
@Nested
48-
@Disabled
4947
class MultiMetalake extends TestGravitinoConnectorWithMetalakeCatalogName {
5048
@Override
5149
protected GravitinoPlugin createGravitinoPlugin(GravitinoAdminClient client) {

trino-connector/trino-connector-473-478/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory478.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,6 @@ protected int getMaxSupportTrinoSpiVersion() {
3939
return 478;
4040
}
4141

42-
@Override
43-
protected String getTrinoCatalogName(String metalake, String catalog) {
44-
return "\"" + metalake + "." + catalog + "\"";
45-
}
46-
47-
@Override
48-
protected boolean supportCatalogNameWithMetalake() {
49-
return false;
50-
}
51-
5242
@Override
5343
protected GravitinoConnector createConnector(CatalogConnectorContext connectorContext) {
5444
return new GravitinoConnector478(connectorContext);

trino-connector/trino-connector-473-478/src/test/java/org/apache/gravitino/trino/connector/TestGravitinoConnector478.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import io.trino.Session;
2424
import io.trino.testing.DistributedQueryRunner;
2525
import org.apache.gravitino.client.GravitinoAdminClient;
26-
import org.junit.jupiter.api.Disabled;
2726
import org.junit.jupiter.api.Nested;
2827

2928
public class TestGravitinoConnector478 {
@@ -42,7 +41,6 @@ protected DistributedQueryRunner createTrinoQueryRunner() throws Exception {
4241
}
4342

4443
@Nested
45-
@Disabled
4644
class MultiMetalake extends TestGravitinoConnectorWithMetalakeCatalogName {
4745
@Override
4846
protected GravitinoPlugin createGravitinoPlugin(GravitinoAdminClient client) {
@@ -54,5 +52,15 @@ protected DistributedQueryRunner createTrinoQueryRunner() throws Exception {
5452
Session session = testSessionBuilder().setCatalog("gravitino").build();
5553
return DistributedQueryRunner.builder(session).setWorkerCount(0).build();
5654
}
55+
56+
@Override
57+
protected String getTrinoCliCatalogName(String metalake, String catalog) {
58+
return metalake + "." + catalog;
59+
}
60+
61+
@Override
62+
protected String getTrinoSqlCatalogName(String metalakeName, String catalogName) {
63+
return "\"" + metalakeName + "." + catalogName + "\"";
64+
}
5765
}
5866
}

trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -161,11 +161,11 @@ private void checkTrinoSpiVersion(ConnectorContext context, GravitinoConfig conf
161161

162162
// check catalog name with metalake are supported in this trino version
163163
if (!config.singleMetalakeMode() && !supportCatalogNameWithMetalake()) {
164-
String errmsg =
165-
String.format(
166-
"The trino-connector-%s-%s does not support catalog name with metalake.",
167-
getMinSupportTrinoSpiVersion(), getMaxSupportTrinoSpiVersion());
168-
throw new TrinoException(GravitinoErrorCode.GRAVITINO_UNSUPPORTED_TRINO_VERSION, errmsg);
164+
LOG.warn(
165+
"The trino-connector-{}-{} does not fully support catalog name with metalake. "
166+
+ "The DROP CATALOG operation may not work correctly in multi-metalake mode.",
167+
getMinSupportTrinoSpiVersion(),
168+
getMaxSupportTrinoSpiVersion());
169169
}
170170

171171
// skip version validation

0 commit comments

Comments
 (0)