This is an automated email from the ASF dual-hosted git repository. diqiu50 pushed a commit to branch dell-1.3 in repository https://gitbox.apache.org/repos/asf/gravitino.git
commit 13969fdcf9177b076260c79d6d8a684efc62689b Author: diqiu50 <[email protected]> AuthorDate: Sat Aug 22 20:27:06 2026 +0800 [Cherry-pick to branch-1.3] [#12554] improvement(trino-connector): Drop Trino 435-439 support The Iceberg REST routing sets iceberg.rest-catalog.vended-credentials-enabled, which Trino only recognizes from 439 onwards. Trino rejects unknown catalog properties outright, so 435-438 would fail to load every lakehouse-iceberg catalog. Raise the minimum supported version to 440 and remove the trino-connector-435-439 module. (cherry picked from commit c4b3162a8798439ebb11879eb90d835f204e09be) --- .github/workflows/trino-multi-version-test.yml | 6 - build.gradle.kts | 1 - docs/trino-connector/configuration.md | 4 +- docs/trino-connector/development.md | 3 - docs/trino-connector/installation.md | 1 - docs/trino-connector/requirements.md | 2 +- settings.gradle.kts | 1 - trino-connector/integration-test/build.gradle.kts | 1 - .../integration/test/TrinoQueryTestTool.java | 4 +- .../trino-test-tools/run_test_with_versions.sh | 8 +- .../trino-cascading-env/docker-compose.yaml | 4 +- .../trino-connector-435-439/build.gradle.kts | 162 --------------------- .../trino/connector/GravitinoConnector435.java | 55 ------- .../connector/GravitinoConnectorFactory435.java | 52 ------- .../trino/connector/GravitinoMetadata435.java | 120 --------------- .../GravitinoNodePartitioningProvider435.java | 30 ---- .../trino/connector/GravitinoPlugin435.java | 38 ----- .../trino/connector/GravitinoSplitManager435.java | 66 --------- .../connector/GravitinoSystemConnector435.java | 87 ----------- .../META-INF/services/io.trino.spi.Plugin | 19 --- .../src/test/java/TestGravitinoConnector435.java | 59 -------- .../gravitino/trino/connector/GravitinoConfig.java | 2 +- .../trino/connector/GravitinoConnectorFactory.java | 2 +- 23 files changed, 13 insertions(+), 714 deletions(-) diff --git a/.github/workflows/trino-multi-version-test.yml b/.github/workflows/trino-multi-version-test.yml index a509d4e185..6cf4484f07 100644 --- a/.github/workflows/trino-multi-version-test.yml +++ b/.github/workflows/trino-multi-version-test.yml @@ -79,12 +79,6 @@ jobs: --auto=all --auto_patch --trino_version=440 \ --trino_connector_dir=${{ env.CONNECTOR_DIR }}/trino-connector-440-445/build/libs - - name: Test Trino 435 - run: | - trino-connector/integration-test/trino-test-tools/trino_integration_test.sh \ - --auto=all --auto_patch --trino_version=435 \ - --trino_connector_dir=${{ env.CONNECTOR_DIR }}/trino-connector-435-439/build/libs - - name: Upload test reports uses: actions/upload-artifact@v7 if: failure() diff --git a/build.gradle.kts b/build.gradle.kts index a62a0ea857..08a0128000 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1004,7 +1004,6 @@ tasks { val assembleDistribution by registering(Tar::class) { dependsOn( compileDistribution, - ":trino-connector:trino-connector-435-439:assembleTrinoConnector", ":trino-connector:trino-connector-440-445:assembleTrinoConnector", ":trino-connector:trino-connector-446-451:assembleTrinoConnector", ":trino-connector:trino-connector-452-468:assembleTrinoConnector", diff --git a/docs/trino-connector/configuration.md b/docs/trino-connector/configuration.md index 0436de81c5..1d756be8de 100644 --- a/docs/trino-connector/configuration.md +++ b/docs/trino-connector/configuration.md @@ -25,7 +25,7 @@ license: "This software is licensed under the Apache License version 2." | trino.jdbc.roles | string | (none) | Session roles applied to the internal JDBC connection, for example `system:sysadmin`. Required by deployments that only allow `CREATE CATALOG` with a privileged role. | No | | trino.jdbc.properties. | string | (none) | The configuration key prefix for raw Trino JDBC driver properties, see [Connecting to a TLS-enabled coordinator](#connecting-to-a-tls-enabled-coordinator). | No | | gravitino.metadata.refresh-interval-seconds | integer | 10 | The `gravitino.metadata.refresh-interval-seconds` defines the interval in seconds to refresh metadata from Gravitino server, the default value is 10 seconds. | No | -| 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 | +| 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 440 and 478. If this option is `true`, unsupported Trino versions can still be used, but compatibility is not guaranteed. | No | | gravitino.client. | string | (none) | The configuration key prefix for the Gravitino client config. | No | | 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 | | 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 | @@ -45,7 +45,7 @@ or set `gravitino.iceberg.rest-enabled=false` to keep the previous behavior. See [Iceberg catalog](./catalog-iceberg.md#how-trino-reaches-the-catalog). ::: -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. +Multi-metalake mode (`gravitino.use-single-metalake=false`) is supported on Trino connector versions 440-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. ## Connecting to a TLS-enabled coordinator diff --git a/docs/trino-connector/development.md b/docs/trino-connector/development.md index 5120955a77..a23ce1af19 100644 --- a/docs/trino-connector/development.md +++ b/docs/trino-connector/development.md @@ -17,8 +17,6 @@ The Gravitino Trino connector supports multiple Trino versions (see [Requirement trino-connector/ ├── trino-connector/ # Shared base source code │ └── src/main/java/ # Common implementation used by all versions -├── trino-connector-435-439/ # Version-specific adapters for Trino 435-439 -│ └── src/main/java/ ├── trino-connector-440-445/ # Version-specific adapters for Trino 440-445 │ └── src/main/java/ ├── trino-connector-446-451/ # Version-specific adapters for Trino 446-451 @@ -71,7 +69,6 @@ Change `localhost`, `port`, and the names of metalake and catalogs to match your | Trino Version | Version-Segment Module | |---------------|---------------------------| - | 435-439 | `trino-connector-435-439` | | 440-445 | `trino-connector-440-445` | | 446-451 | `trino-connector-446-451` | | 452-468 | `trino-connector-452-468` | diff --git a/docs/trino-connector/installation.md b/docs/trino-connector/installation.md index d39b200ee3..8df3373edb 100644 --- a/docs/trino-connector/installation.md +++ b/docs/trino-connector/installation.md @@ -19,7 +19,6 @@ Choose the package by your Trino server version first. | Trino server version | Connector package segment | |----------------------|---------------------------| -| 435-439 | `trino-connector-435-439` | | 440-445 | `trino-connector-440-445` | | 446-451 | `trino-connector-446-451` | | 452-468 | `trino-connector-452-468` | diff --git a/docs/trino-connector/requirements.md b/docs/trino-connector/requirements.md index 0c5bb61da4..9224e327d1 100644 --- a/docs/trino-connector/requirements.md +++ b/docs/trino-connector/requirements.md @@ -9,7 +9,7 @@ license: "This software is licensed under the Apache License version 2." To install and deploy the Apache Gravitino Trino connector, the following environmental setup is necessary: -- Trino server version should be between Trino-server-435 and Trino-server-478. +- Trino server version should be between Trino-server-440 and Trino-server-478. The examples in this document use Trino `469` by default. - If you use an unsupported Trino version, you can set `gravitino.trino.skip-version-validation` to `true`. Unsupported versions have not undergone thorough testing. diff --git a/settings.gradle.kts b/settings.gradle.kts index e49a0e4d11..d10537e9a2 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -75,7 +75,6 @@ val skipTrinoConnector: Boolean = if (!skipTrinoConnector) { include( "trino-connector:trino-connector", - "trino-connector:trino-connector-435-439", "trino-connector:trino-connector-440-445", "trino-connector:trino-connector-446-451", "trino-connector:trino-connector-452-468", diff --git a/trino-connector/integration-test/build.gradle.kts b/trino-connector/integration-test/build.gradle.kts index c48e9719bf..8264535b6c 100644 --- a/trino-connector/integration-test/build.gradle.kts +++ b/trino-connector/integration-test/build.gradle.kts @@ -83,7 +83,6 @@ dependencies { } tasks.register("setupDependencies") { - dependsOn(":trino-connector:trino-connector-435-439:copyLibs") dependsOn(":trino-connector:trino-connector-440-445:copyLibs") dependsOn(":trino-connector:trino-connector-446-451:copyLibs") dependsOn(":trino-connector:trino-connector-452-468:copyLibs") diff --git a/trino-connector/integration-test/src/test/java/org/apache/gravitino/trino/connector/integration/test/TrinoQueryTestTool.java b/trino-connector/integration-test/src/test/java/org/apache/gravitino/trino/connector/integration/test/TrinoQueryTestTool.java index e97843c5df..c0f62d5816 100644 --- a/trino-connector/integration-test/src/test/java/org/apache/gravitino/trino/connector/integration/test/TrinoQueryTestTool.java +++ b/trino-connector/integration-test/src/test/java/org/apache/gravitino/trino/connector/integration/test/TrinoQueryTestTool.java @@ -99,7 +99,7 @@ public class TrinoQueryTestTool { + "otherwise fall back to a single-node setup with combined coordinator-worker roles."); options.addOption( - "trino_version", true, "Specify the Trino version to test, the default value is 435."); + "trino_version", true, "Specify the Trino version to test, the default value is 440."); options.addOption( "trino_connector_dir", @@ -128,7 +128,7 @@ public class TrinoQueryTestTool { + "Run all the testers in the 'testsets' directory with a distributed cluster:\n" + "TrinoTestTool --auto=all --trino_worker_num=3\n\n" + "Run all the testers in the 'testsets' directory with specific trino version:\n" - + "TrinoTestTool --auto=all --trino_version=435\n\n" + + "TrinoTestTool --auto=all --trino_version=440\n\n" + "Run all the testers in the 'testsets' directory with specific trino connector JAR files:\n" + "TrinoTestTool --auto=all --trino_connector_dir=./trino-connector/libs\n\n" + "Run all the tpch testset's testers in the 'testsets/tpch' directory:\n" diff --git a/trino-connector/integration-test/trino-test-tools/run_test_with_versions.sh b/trino-connector/integration-test/trino-test-tools/run_test_with_versions.sh index 2dd6359acb..64c05a2664 100755 --- a/trino-connector/integration-test/trino-test-tools/run_test_with_versions.sh +++ b/trino-connector/integration-test/trino-test-tools/run_test_with_versions.sh @@ -23,16 +23,16 @@ # # Arguments: # --trino_versions_map: Space-separated list of "version:module" pairs. -# Defaults to "435:trino-connector" if not provided. +# Defaults to "440:trino-connector" if not provided. # --trino_test_args: Arguments passed directly to the underlying test script. # # Example: # ./run_test_with_versions.sh \ -# --trino_versions_map="435:trino-connector 478:trino-connector-470-478" \ +# --trino_versions_map="440:trino-connector 478:trino-connector-470-478" \ # --trino_test_args="--auto=all" # # This configuration will run tests for: -# - Trino 435 using the connector in 'trino-connector' directory +# - Trino 440 using the connector in 'trino-connector' directory # - Trino 478 using the connector in 'trino-connector-470-478' directory # And pass "--auto=all" to the underlying test script for each version. @@ -64,7 +64,7 @@ while [[ $# -gt 0 ]]; do done if [ -z "$trino_versions_map" ]; then - trino_versions_map="435:trino-connector" + trino_versions_map="440:trino-connector" fi for entry in $trino_versions_map; do diff --git a/trino-connector/integration-test/trino-test-tools/trino-cascading-env/docker-compose.yaml b/trino-connector/integration-test/trino-test-tools/trino-cascading-env/docker-compose.yaml index 54091d4d62..38e9f40861 100644 --- a/trino-connector/integration-test/trino-test-tools/trino-cascading-env/docker-compose.yaml +++ b/trino-connector/integration-test/trino-test-tools/trino-cascading-env/docker-compose.yaml @@ -79,7 +79,7 @@ services: start_period: 30s trino-remote: - image: trinodb/trino:435 + image: trinodb/trino:440 networks: - trino-net container_name: trino-ci-trino-remote @@ -110,7 +110,7 @@ services: condition: service_healthy trino-local: - image: trinodb/trino:435 + image: trinodb/trino:440 networks: - trino-net container_name: trino-ci-trino-local diff --git a/trino-connector/trino-connector-435-439/build.gradle.kts b/trino-connector/trino-connector-435-439/build.gradle.kts deleted file mode 100644 index befe0343a7..0000000000 --- a/trino-connector/trino-connector-435-439/build.gradle.kts +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import com.diffplug.gradle.spotless.SpotlessExtension -import net.ltgt.gradle.errorprone.errorprone -import org.gradle.internal.hash.ChecksumService -import org.gradle.kotlin.dsl.support.serviceOf - -plugins { - `java-library` - `maven-publish` -} - -// This module supports Trino versions 435-439 -val minTrinoVersion = 435 -val maxTrinoVersion = 439 - -val trinoVersion = providers.gradleProperty("trinoVersion") - .map { it.trim().toInt() } - .orElse(minTrinoVersion) - .get() - -// Validate version range -check(trinoVersion in minTrinoVersion..maxTrinoVersion) { - "Module ${project.path} supports Trino versions $minTrinoVersion-$maxTrinoVersion, " + - "but trinoVersion=$trinoVersion was specified. " + - "Please set '-PtrinoVersion=$minTrinoVersion' (or any version in the supported range)." -} - -java { - toolchain.languageVersion.set(JavaLanguageVersion.of(24)) -} - -dependencies { - implementation(project(":catalogs:catalog-common")) - implementation(project(":clients:client-java-runtime", configuration = "shadow")) - implementation(libs.airlift.json) - implementation(libs.bundles.log4j) - implementation(libs.commons.collections4) - implementation(libs.commons.lang3) - implementation("io.trino:trino-jdbc:$trinoVersion") - compileOnly(libs.airlift.resolver) - compileOnly("io.trino:trino-spi:$trinoVersion") { - exclude("org.apache.logging.log4j") - } - testImplementation(libs.awaitility) - testImplementation(libs.mockito.core) - testImplementation(libs.mysql.driver) - testImplementation("io.trino:trino-memory:$trinoVersion") { - exclude("org.antlr") - exclude("org.apache.logging.log4j") - } - testImplementation("io.trino:trino-testing:$trinoVersion") { - exclude("org.apache.logging.log4j") - } - testRuntimeOnly(libs.junit.jupiter.engine) -} - -sourceSets { - main { - java.srcDirs("../trino-connector/src/main/java") - } - test { - java.srcDirs("../trino-connector/src/test/java") - resources.srcDirs("../trino-connector/src/test/resources") - } -} - -plugins.withId("com.diffplug.spotless") { - configure<SpotlessExtension> { - java { - // Keep Spotless within this module to avoid cross-project target errors. - target(project.fileTree("src") { include("**/*.java") }) - } - } -} - -tasks.withType<JavaCompile>().configureEach { - // Error Prone is incompatible with the JDK 24 toolchain required by this Trino range. - options.errorprone.isEnabled.set(false) - options.release.set(17) -} - -tasks.withType<Test>().configureEach { - extensions - .findByType(org.gradle.testing.jacoco.plugins.JacocoTaskExtension::class.java) - ?.isEnabled = false -} - -tasks { - val copyRuntimeLibs by registering(Copy::class) { - dependsOn("jar") - from({ configurations.runtimeClasspath.get().filter(File::isFile) }) - into(layout.buildDirectory.dir("libs")) - } - - val distributionDir = rootProject.layout.projectDirectory.dir("distribution/${rootProject.name}-${project.name}") - - val copyLibs by registering(Copy::class) { - dependsOn(copyRuntimeLibs, "build") - from(layout.buildDirectory.dir("libs")) - from(rootProject.layout.projectDirectory.dir("licenses")) { - into("licenses") - } - from(rootProject.file("LICENSE.trino")) - from(rootProject.file("NOTICE.trino")) - from(rootProject.file("README.md")) - into(distributionDir) - rename { fileName -> - fileName.replace(".trino", "") - } - outputs.dir(distributionDir) - } - - val assembleTrinoConnector by registering(Tar::class) { - dependsOn(copyLibs) - group = "gravitino distribution" - finalizedBy("checksumTrinoConnector") - val archiveBase = "${rootProject.name}-${project.name}-$version" - into(archiveBase) - from(distributionDir) - compression = Compression.GZIP - archiveFileName.set("$archiveBase.tar.gz") - destinationDirectory.set(rootProject.layout.projectDirectory.dir("distribution")) - } - - val checksumTrinoConnector by registering { - group = "gravitino distribution" - dependsOn(assembleTrinoConnector) - val archiveFile = assembleTrinoConnector.flatMap { it.archiveFile } - val checksumFile = archiveFile.map { archive -> - archive.asFile.let { it.resolveSibling("${it.name}.sha256") } - } - inputs.file(archiveFile) - outputs.file(checksumFile) - doLast { - checksumFile.get().writeText( - serviceOf<ChecksumService>().sha256(archiveFile.get().asFile).toString() - ) - } - } - - named("build") { - finalizedBy(copyRuntimeLibs) - } -} diff --git a/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnector435.java b/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnector435.java deleted file mode 100644 index 9d6dc932d4..0000000000 --- a/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnector435.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.gravitino.trino.connector; - -import io.trino.spi.connector.ConnectorMetadata; -import io.trino.spi.connector.ConnectorNodePartitioningProvider; -import io.trino.spi.connector.ConnectorSplitManager; -import org.apache.gravitino.trino.connector.catalog.CatalogConnectorContext; -import org.apache.gravitino.trino.connector.catalog.CatalogConnectorMetadata; -import org.apache.gravitino.trino.connector.catalog.CatalogConnectorMetadataAdapter; - -public class GravitinoConnector435 extends GravitinoConnector { - - public GravitinoConnector435(CatalogConnectorContext connectorContext) { - super(connectorContext); - } - - @Override - protected GravitinoMetadata createGravitinoMetadata( - CatalogConnectorMetadata catalogConnectorMetadata, - CatalogConnectorMetadataAdapter metadataAdapter, - ConnectorMetadata internalMetadata) { - return new GravitinoMetadata435(catalogConnectorMetadata, metadataAdapter, internalMetadata); - } - - @Override - public ConnectorSplitManager getSplitManager() { - ConnectorSplitManager splitManager = - catalogConnectorContext.getInternalConnector().getSplitManager(); - return new GravitinoSplitManager435(splitManager); - } - - @Override - public ConnectorNodePartitioningProvider getNodePartitioningProvider() { - ConnectorNodePartitioningProvider nodePartitioningProvider = - catalogConnectorContext.getInternalConnector().getNodePartitioningProvider(); - return new GravitinoNodePartitioningProvider435(nodePartitioningProvider); - } -} diff --git a/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory435.java b/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory435.java deleted file mode 100644 index 2ac78816ce..0000000000 --- a/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory435.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.gravitino.trino.connector; - -import org.apache.gravitino.client.GravitinoAdminClient; -import org.apache.gravitino.trino.connector.catalog.CatalogConnectorContext; -import org.apache.gravitino.trino.connector.system.GravitinoSystemConnector; -import org.apache.gravitino.trino.connector.system.storedprocedure.GravitinoStoredProcedureFactory; - -public class GravitinoConnectorFactory435 extends GravitinoConnectorFactory { - - public GravitinoConnectorFactory435(GravitinoAdminClient client) { - super(client); - } - - @Override - protected int getMinSupportTrinoSpiVersion() { - return 435; - } - - @Override - protected int getMaxSupportTrinoSpiVersion() { - return 439; - } - - @Override - protected GravitinoConnector createConnector(CatalogConnectorContext connectorContext) { - return new GravitinoConnector435(connectorContext); - } - - @Override - protected GravitinoSystemConnector createSystemConnector( - GravitinoStoredProcedureFactory storedProcedureFactory) { - return new GravitinoSystemConnector435(storedProcedureFactory); - } -} diff --git a/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoMetadata435.java b/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoMetadata435.java deleted file mode 100644 index e6b8ff0db6..0000000000 --- a/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoMetadata435.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.gravitino.trino.connector; - -import io.airlift.slice.Slice; -import io.trino.spi.connector.ColumnMetadata; -import io.trino.spi.connector.ConnectorInsertTableHandle; -import io.trino.spi.connector.ConnectorMergeTableHandle; -import io.trino.spi.connector.ConnectorOutputMetadata; -import io.trino.spi.connector.ConnectorOutputTableHandle; -import io.trino.spi.connector.ConnectorSession; -import io.trino.spi.connector.ConnectorTableExecuteHandle; -import io.trino.spi.connector.ConnectorTableHandle; -import io.trino.spi.connector.RetryMode; -import io.trino.spi.connector.SchemaTableName; -import io.trino.spi.statistics.ComputedStatistics; -import java.util.Collection; -import java.util.Map; -import java.util.Optional; -import org.apache.gravitino.trino.connector.catalog.CatalogConnectorMetadata; -import org.apache.gravitino.trino.connector.catalog.CatalogConnectorMetadataAdapter; -import org.apache.gravitino.trino.connector.metadata.GravitinoColumn; - -public class GravitinoMetadata435 extends GravitinoMetadata { - - public GravitinoMetadata435( - CatalogConnectorMetadata catalogConnectorMetadata, - CatalogConnectorMetadataAdapter metadataAdapter, - io.trino.spi.connector.ConnectorMetadata internalMetadata) { - super(catalogConnectorMetadata, metadataAdapter, internalMetadata); - } - - @Override - public void addColumn( - ConnectorSession session, ConnectorTableHandle tableHandle, ColumnMetadata column) { - GravitinoColumn gravitinoColumn = metadataAdapter.createColumn(column); - catalogConnectorMetadata.addColumn(getTableName(tableHandle), gravitinoColumn); - } - - @Override - public Optional<ConnectorTableExecuteHandle> getTableHandleForExecute( - ConnectorSession session, - ConnectorTableHandle tableHandle, - String procedureName, - Map<String, Object> executeProperties, - RetryMode retryMode) { - return internalMetadata - .getTableHandleForExecute( - session, - GravitinoHandle.unWrap(tableHandle), - procedureName, - executeProperties, - retryMode) - .map(GravitinoTableExecuteHandle::new); - } - - @Override - public void executeTableExecute( - ConnectorSession session, ConnectorTableExecuteHandle tableExecuteHandle) { - internalMetadata.executeTableExecute(session, GravitinoHandle.unWrap(tableExecuteHandle)); - } - - @Override - public Optional<ConnectorOutputMetadata> finishInsert( - ConnectorSession session, - ConnectorInsertTableHandle insertHandle, - Collection<Slice> fragments, - Collection<ComputedStatistics> computedStatistics) { - return internalMetadata.finishInsert( - session, GravitinoHandle.unWrap(insertHandle), fragments, computedStatistics); - } - - @Override - public Optional<ConnectorOutputMetadata> finishCreateTable( - ConnectorSession session, - ConnectorOutputTableHandle tableHandle, - Collection<Slice> fragments, - Collection<ComputedStatistics> computedStatistics) { - ConnectorInsertTableHandle insertHandle = - ((GravitinoOutputTableHandle) tableHandle).getInternalHandle(); - return internalMetadata.finishInsert(session, insertHandle, fragments, computedStatistics); - } - - @Override - public ConnectorMergeTableHandle beginMerge( - ConnectorSession session, ConnectorTableHandle tableHandle, RetryMode retryMode) { - ConnectorMergeTableHandle connectorMergeTableHandle = - internalMetadata.beginMerge(session, GravitinoHandle.unWrap(tableHandle), retryMode); - SchemaTableName tableName = getTableName(tableHandle); - - return new GravitinoMergeTableHandle( - tableName.getSchemaName(), tableName.getTableName(), connectorMergeTableHandle); - } - - @Override - public void finishMerge( - ConnectorSession session, - ConnectorMergeTableHandle mergeTableHandle, - Collection<Slice> fragments, - Collection<ComputedStatistics> computedStatistics) { - internalMetadata.finishMerge( - session, GravitinoHandle.unWrap(mergeTableHandle), fragments, computedStatistics); - } -} diff --git a/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoNodePartitioningProvider435.java b/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoNodePartitioningProvider435.java deleted file mode 100644 index e45753da54..0000000000 --- a/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoNodePartitioningProvider435.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.gravitino.trino.connector; - -import io.trino.spi.connector.ConnectorNodePartitioningProvider; - -/** Trino NodePartitioningProvider implementation with the new split bucket function signature. */ -public class GravitinoNodePartitioningProvider435 extends GravitinoNodePartitioningProvider { - - public GravitinoNodePartitioningProvider435( - ConnectorNodePartitioningProvider nodePartitioningProvider) { - super(nodePartitioningProvider); - } -} diff --git a/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoPlugin435.java b/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoPlugin435.java deleted file mode 100644 index 9a0e8f328a..0000000000 --- a/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoPlugin435.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.gravitino.trino.connector; - -import org.apache.gravitino.client.GravitinoAdminClient; - -/** Trino plugin endpoint, using java spi mechanism */ -public class GravitinoPlugin435 extends GravitinoPlugin { - - public GravitinoPlugin435() { - super(); - } - - public GravitinoPlugin435(GravitinoAdminClient client) { - super(client); - } - - @Override - protected GravitinoConnectorFactory createConnectorFactory(GravitinoAdminClient client) { - return new GravitinoConnectorFactory435(client); - } -} diff --git a/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoSplitManager435.java b/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoSplitManager435.java deleted file mode 100644 index 306feea732..0000000000 --- a/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoSplitManager435.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.gravitino.trino.connector; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.trino.spi.connector.ConnectorSplit; -import io.trino.spi.connector.ConnectorSplitManager; -import io.trino.spi.connector.ConnectorSplitSource; - -public class GravitinoSplitManager435 extends GravitinoSplitManager { - - public GravitinoSplitManager435(ConnectorSplitManager internalSplitManager) { - super(internalSplitManager); - } - - @Override - protected ConnectorSplitSource createSplitSource(ConnectorSplitSource splits) { - return new GravitinoSplitSource435(splits); - } - - static class GravitinoSplitSource435 extends GravitinoSplitSource { - - GravitinoSplitSource435(ConnectorSplitSource connectorSplitSource) { - super(connectorSplitSource); - } - - @Override - protected ConnectorSplit createSplit(ConnectorSplit split) { - return new GravitinoSplit435(split); - } - } - - public static class GravitinoSplit435 extends GravitinoSplit { - - @JsonCreator - public GravitinoSplit435(@JsonProperty(HANDLE_STRING) String handleString) { - super(handleString); - } - - public GravitinoSplit435(ConnectorSplit split) { - super(split); - } - - @Override - public Object getInfo() { - return getInternalHandle().getInfo(); - } - } -} diff --git a/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoSystemConnector435.java b/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoSystemConnector435.java deleted file mode 100644 index e3c3074367..0000000000 --- a/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoSystemConnector435.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.gravitino.trino.connector; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.trino.spi.Page; -import io.trino.spi.connector.ConnectorPageSource; -import io.trino.spi.connector.ConnectorPageSourceProvider; -import io.trino.spi.connector.ConnectorSplit; -import io.trino.spi.connector.ConnectorSplitManager; -import io.trino.spi.connector.SchemaTableName; -import org.apache.gravitino.trino.connector.system.GravitinoSystemConnector; -import org.apache.gravitino.trino.connector.system.storedprocedure.GravitinoStoredProcedureFactory; - -public class GravitinoSystemConnector435 extends GravitinoSystemConnector { - - public GravitinoSystemConnector435( - GravitinoStoredProcedureFactory gravitinoStoredProcedureFactory) { - super(gravitinoStoredProcedureFactory); - } - - @Override - protected ConnectorSplitManager createSplitManager() { - return new GravitinoSplitManager435(); - } - - @Override - protected ConnectorPageSourceProvider createPageSourceProvider() { - return new DatasourceProvider435(); - } - - static class DatasourceProvider435 extends DatasourceProvider { - - @Override - protected ConnectorPageSource createPageSource(Page page) { - return new SystemTablePageSource435(page); - } - } - - static class GravitinoSplitManager435 extends SplitManager { - - protected ConnectorSplit createSplit(SchemaTableName tableName) { - return new Split435(tableName); - } - } - - static class SystemTablePageSource435 extends SystemTablePageSource { - - public SystemTablePageSource435(Page page) { - super(page); - } - - public Page getNextPage() { - return nextPage(); - } - } - - public static class Split435 extends Split { - - @JsonCreator - public Split435(@JsonProperty("tableName") SchemaTableName tableName) { - super(tableName); - } - - @Override - public Object getInfo() { - return this; - } - } -} diff --git a/trino-connector/trino-connector-435-439/src/main/resources/META-INF/services/io.trino.spi.Plugin b/trino-connector/trino-connector-435-439/src/main/resources/META-INF/services/io.trino.spi.Plugin deleted file mode 100644 index aafac3a96c..0000000000 --- a/trino-connector/trino-connector-435-439/src/main/resources/META-INF/services/io.trino.spi.Plugin +++ /dev/null @@ -1,19 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# -org.apache.gravitino.trino.connector.GravitinoPlugin435 \ No newline at end of file diff --git a/trino-connector/trino-connector-435-439/src/test/java/TestGravitinoConnector435.java b/trino-connector/trino-connector-435-439/src/test/java/TestGravitinoConnector435.java deleted file mode 100644 index eb767c7dda..0000000000 --- a/trino-connector/trino-connector-435-439/src/test/java/TestGravitinoConnector435.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import static io.trino.testing.TestingSession.testSessionBuilder; - -import io.trino.Session; -import io.trino.testing.DistributedQueryRunner; -import org.apache.gravitino.client.GravitinoAdminClient; -import org.apache.gravitino.trino.connector.GravitinoPlugin; -import org.apache.gravitino.trino.connector.GravitinoPlugin435; -import org.apache.gravitino.trino.connector.TestGravitinoConnector; -import org.apache.gravitino.trino.connector.TestGravitinoConnectorWithMetalakeCatalogName; -import org.junit.jupiter.api.Nested; - -public class TestGravitinoConnector435 { - @Nested - class SingleMetalake extends TestGravitinoConnector { - @Override - protected GravitinoPlugin createGravitinoPlugin(GravitinoAdminClient client) { - return new GravitinoPlugin435(client); - } - - @Override - protected DistributedQueryRunner createTrinoQueryRunner() throws Exception { - Session session = testSessionBuilder().setCatalog("gravitino").build(); - return DistributedQueryRunner.builder(session).setNodeCount(1).build(); - } - } - - @Nested - class MultiMetalake extends TestGravitinoConnectorWithMetalakeCatalogName { - @Override - protected GravitinoPlugin createGravitinoPlugin(GravitinoAdminClient client) { - return new GravitinoPlugin435(client); - } - - @Override - protected DistributedQueryRunner createTrinoQueryRunner() throws Exception { - Session session = testSessionBuilder().setCatalog("gravitino").build(); - return DistributedQueryRunner.builder(session).setNodeCount(1).build(); - } - } -} diff --git a/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/GravitinoConfig.java b/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/GravitinoConfig.java index e79645d0e6..b6a518584a 100644 --- a/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/GravitinoConfig.java +++ b/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/GravitinoConfig.java @@ -234,7 +234,7 @@ public class GravitinoConfig { private static final ConfigEntry GRAVITINO_TRINO_SKIP_VERSION_VALIDATION = new ConfigEntry( "gravitino.trino.skip-version-validation", - "When true, skips Trino version validation and logs a warning instead of throwing an error. Gravitino supports Trino versions 435-439; other versions are untested.", + "When true, skips Trino version validation and logs a warning instead of throwing an error. Gravitino supports Trino versions 440-478; other versions are untested.", "false", false); 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 6308b7d1bc..b248ed7f82 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 @@ -52,7 +52,7 @@ import org.slf4j.LoggerFactory; public class GravitinoConnectorFactory implements ConnectorFactory { private static final Logger LOG = LoggerFactory.getLogger(GravitinoConnectorFactory.class); - private static final int MIN_SUPPORT_TRINO_SPI_VERSION = 435; + private static final int MIN_SUPPORT_TRINO_SPI_VERSION = 440; private static final int MAX_SUPPORT_TRINO_SPI_VERSION = Integer.MAX_VALUE; private static final Pattern TRINO_SPI_VERSION_PATTERN = Pattern.compile("^(\\d+)"); private static final Set<String> SECURITY_SENSITIVE_PROPERTY_SUFFIXES =
