This is an automated email from the ASF dual-hosted git repository.
jerryshao pushed a commit to branch branch-1.3
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/branch-1.3 by this push:
new b7a3c024ee Revert "[Cherry-pick to branch-1.3] [#12707]
improvement(trino-connector): Drop Trino 435-439 support (#12708)" (#12830)
b7a3c024ee is described below
commit b7a3c024ee4069d93673bc353d4b878726f1e4c8
Author: Yuhui <[email protected]>
AuthorDate: Wed Sep 2 14:19:48 2026 +0800
Revert "[Cherry-pick to branch-1.3] [#12707] improvement(trino-connector):
Drop Trino 435-439 support (#12708)" (#12830)
Reverts apache/gravitino#12733
---
.github/workflows/trino-multi-version-test.yml | 6 +
agent-skills/trino-test/trino-test-guide.md | 3 +-
build.gradle.kts | 1 +
docs/how-to-test.md | 2 +
docs/trino-connector/configuration.md | 4 +-
docs/trino-connector/development.md | 5 +-
docs/trino-connector/installation.md | 1 +
docs/trino-connector/requirements.md | 2 +-
gradle.properties | 2 +-
settings.gradle.kts | 1 +
trino-connector/integration-test/build.gradle.kts | 1 +
.../integration/test/TrinoQueryTestTool.java | 7 +-
.../trino-test-tools/run_test_with_versions.sh | 92 ++++++++++++
.../trino-cascading-env/docker-compose.yaml | 4 +-
.../trino-connector-435-439/build.gradle.kts | 163 +++++++++++++++++++++
.../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 ++++++++
trino-connector/trino-connector/build.gradle.kts | 14 --
.../gravitino/trino/connector/GravitinoConfig.java | 2 +-
.../trino/connector/GravitinoConnectorFactory.java | 2 +-
27 files changed, 809 insertions(+), 29 deletions(-)
diff --git a/.github/workflows/trino-multi-version-test.yml
b/.github/workflows/trino-multi-version-test.yml
index 6cf4484f07..a509d4e185 100644
--- a/.github/workflows/trino-multi-version-test.yml
+++ b/.github/workflows/trino-multi-version-test.yml
@@ -79,6 +79,12 @@ 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/agent-skills/trino-test/trino-test-guide.md
b/agent-skills/trino-test/trino-test-guide.md
index 2cf74b156d..fa4a08cc38 100644
--- a/agent-skills/trino-test/trino-test-guide.md
+++ b/agent-skills/trino-test/trino-test-guide.md
@@ -43,7 +43,8 @@ trino-connector/integration-test/
│ ├── tpch/ # TPC-H test set
│ └── tpcds/ # TPC-DS test set
└── trino-test-tools/ # Test scripts
- └── trino_integration_test.sh # Main test script
+ ├── trino_integration_test.sh # Main test script
+ └── run_test_with_versions.sh # Multi-version test script
```
### 1.1 Running Tests with Scripts (Recommended)
diff --git a/build.gradle.kts b/build.gradle.kts
index 846ffc58d3..ae26a4df48 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1025,6 +1025,7 @@ 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/how-to-test.md b/docs/how-to-test.md
index 373a510e06..d9c6416b83 100644
--- a/docs/how-to-test.md
+++ b/docs/how-to-test.md
@@ -70,6 +70,8 @@ To deploy the Gravitino server locally to run the integration
tests, follow thes
Specify the `--trino_worker_num` parameter to make the Trino test sets run
in a distributed environment.
Specify the `--trino_version` parameter to make the Trino test sets run
with specific trino version.
Specify the `--trino_connector_dir` parameter to run Trino tests using the
JAR files located in the `gravitino-trino-connector` plugin directory.
+ Alternatively, use `bash
trino-connector/integration-test/trino-test-tools/run_test_with_versions.sh`
command to execute
+ tests across different Trino versions.
## Skip Tests
diff --git a/docs/trino-connector/configuration.md
b/docs/trino-connector/configuration.md
index ec5f42011a..5bcb98636e 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 440 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 435 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 |
@@ -34,7 +34,7 @@ To configure the Gravitino client, use properties prefixed
with `gravitino.clien
**Note:** Invalid configuration properties will result in exceptions. Please
see [Gravitino Java client
configurations](../how-to-use-gravitino-client.md#java-client-configuration)
for more support client configuration.
-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.
+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.
## Connecting to a TLS-enabled coordinator
diff --git a/docs/trino-connector/development.md
b/docs/trino-connector/development.md
index a80ee05ad4..cd2b54aa47 100644
--- a/docs/trino-connector/development.md
+++ b/docs/trino-connector/development.md
@@ -17,6 +17,8 @@ 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
@@ -69,6 +71,7 @@ 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` |
@@ -309,7 +312,7 @@ If a compile error occurs due to `The following artifacts
could not be resolved:
```
:::note
- Remove `/etc/catalogs/xxx.properties` if the corresponding
`plugin/trino-xxx/pom.xml` is not listed in `plugin.bundles`. For the Hive
plugin, use `plugin/trino-hive/pom.xml`.
+ Remove `/etc/catalogs/xxx.properties` if the corresponding
`plugin/trino-xxx/pom.xml` is not listed in `plugin.bundles`. For the Hive
plugin, use `plugin/trino-hive/pom.xml` for Trino 435 and later; for earlier
versions, use `plugin/trino-hive-hadoop2/pom.xml`.
:::
8. Start the Trino server and connect to the Gravitino server.
diff --git a/docs/trino-connector/installation.md
b/docs/trino-connector/installation.md
index 1bf0568086..9543261510 100644
--- a/docs/trino-connector/installation.md
+++ b/docs/trino-connector/installation.md
@@ -19,6 +19,7 @@ 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 9224e327d1..0c5bb61da4 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-440 and Trino-server-478.
+- Trino server version should be between Trino-server-435 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/gradle.properties b/gradle.properties
index 05f7d7d451..4c1ad7e606 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -48,4 +48,4 @@ skipDockerTests = true
enableFuse = false
# The minimum supported Trino version.
-minSupportedTrinoVersion= 440
+minSupportedTrinoVersion= 435
diff --git a/settings.gradle.kts b/settings.gradle.kts
index d10537e9a2..e49a0e4d11 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -75,6 +75,7 @@ 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 bd39ae2c2e..f66c9e3649 100644
--- a/trino-connector/integration-test/build.gradle.kts
+++ b/trino-connector/integration-test/build.gradle.kts
@@ -82,6 +82,7 @@ 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 32f8d3d79d..e97843c5df 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,10 +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. If not specified, the version
pinned in the test "
- + "docker-compose file is used.");
+ "trino_version", true, "Specify the Trino version to test, the
default value is 435.");
options.addOption(
"trino_connector_dir",
@@ -131,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=440\n\n"
+ + "TrinoTestTool --auto=all --trino_version=435\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
new file mode 100755
index 0000000000..2dd6359acb
--- /dev/null
+++
b/trino-connector/integration-test/trino-test-tools/run_test_with_versions.sh
@@ -0,0 +1,92 @@
+#!/bin/bash
+#
+# 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.
+
+# This script is used to execute tests for the Trino connector across
different Trino versions.
+# It wraps the `trino_test.sh` script and iterates through a configured map of
Trino versions
+# to connector modules.
+#
+# Arguments:
+# --trino_versions_map: Space-separated list of "version:module" pairs.
+# Defaults to "435: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_test_args="--auto=all"
+#
+# This configuration will run tests for:
+# - Trino 435 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.
+
+cd "$(dirname "$0")"
+
+# Set the Gravitino server directories
+GRAVITINO_HOME_DIR=../../../
+GRAVITINO_HOME_DIR=`realpath $GRAVITINO_HOME_DIR`
+
+# Parse arguments
+trino_versions_map=""
+trino_test_args=""
+
+while [[ $# -gt 0 ]]; do
+ case $1 in
+ --trino_versions_map=*)
+ trino_versions_map="${1#*=}"
+ shift
+ ;;
+ --trino_test_args=*)
+ trino_test_args="${1#*=}"
+ shift
+ ;;
+ *)
+ echo "Unknown argument: $1"
+ exit 1
+ ;;
+ esac
+done
+
+if [ -z "$trino_versions_map" ]; then
+ trino_versions_map="435:trino-connector"
+fi
+
+for entry in $trino_versions_map; do
+ trino_version=${entry%%:*}
+ trino_module_name=${entry##*:}
+
+
trino_connector_dir="$GRAVITINO_HOME_DIR/trino-connector/$trino_module_name/build/libs"
+
+ # Combine test arguments with version-specific arguments
+ args="$trino_test_args --trino_version=${trino_version}
--trino_connector_dir=${trino_connector_dir}"
+
+ # execute test
+ echo "Running test for Trino version: $trino_version with connector:
$trino_module_name"
+ echo "The args: $args"
+
+ sleep 5
+
$GRAVITINO_HOME_DIR/trino-connector/integration-test/trino-test-tools/trino_integration_test.sh
$args
+
+ if [ $? -ne 0 ]; then
+ echo "Test failed for Trino version $trino_version"
+ exit 1
+ fi
+done
+
+echo "Test success"
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 38e9f40861..54091d4d62 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:440
+ image: trinodb/trino:435
networks:
- trino-net
container_name: trino-ci-trino-remote
@@ -110,7 +110,7 @@ services:
condition: service_healthy
trino-local:
- image: trinodb/trino:440
+ image: trinodb/trino:435
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
new file mode 100644
index 0000000000..a3864ffec9
--- /dev/null
+++ b/trino-connector/trino-connector-435-439/build.gradle.kts
@@ -0,0 +1,163 @@
+/*
+ * 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.airlift.log)
+ implementation(libs.slf4j.jdk14)
+ 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
new file mode 100644
index 0000000000..9d6dc932d4
--- /dev/null
+++
b/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnector435.java
@@ -0,0 +1,55 @@
+/*
+ * 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
new file mode 100644
index 0000000000..2ac78816ce
--- /dev/null
+++
b/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory435.java
@@ -0,0 +1,52 @@
+/*
+ * 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
new file mode 100644
index 0000000000..e6b8ff0db6
--- /dev/null
+++
b/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoMetadata435.java
@@ -0,0 +1,120 @@
+/*
+ * 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
new file mode 100644
index 0000000000..e45753da54
--- /dev/null
+++
b/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoNodePartitioningProvider435.java
@@ -0,0 +1,30 @@
+/*
+ * 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
new file mode 100644
index 0000000000..9a0e8f328a
--- /dev/null
+++
b/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoPlugin435.java
@@ -0,0 +1,38 @@
+/*
+ * 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
new file mode 100644
index 0000000000..306feea732
--- /dev/null
+++
b/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoSplitManager435.java
@@ -0,0 +1,66 @@
+/*
+ * 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
new file mode 100644
index 0000000000..e3c3074367
--- /dev/null
+++
b/trino-connector/trino-connector-435-439/src/main/java/org/apache/gravitino/trino/connector/GravitinoSystemConnector435.java
@@ -0,0 +1,87 @@
+/*
+ * 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
new file mode 100644
index 0000000000..aafac3a96c
--- /dev/null
+++
b/trino-connector/trino-connector-435-439/src/main/resources/META-INF/services/io.trino.spi.Plugin
@@ -0,0 +1,19 @@
+#
+# 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
new file mode 100644
index 0000000000..eb767c7dda
--- /dev/null
+++
b/trino-connector/trino-connector-435-439/src/test/java/TestGravitinoConnector435.java
@@ -0,0 +1,59 @@
+/*
+ * 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/build.gradle.kts
b/trino-connector/trino-connector/build.gradle.kts
index a43e1a0faa..17b87d889c 100644
--- a/trino-connector/trino-connector/build.gradle.kts
+++ b/trino-connector/trino-connector/build.gradle.kts
@@ -17,8 +17,6 @@
* under the License.
*/
-import net.ltgt.gradle.errorprone.errorprone
-
plugins {
id("java")
id("idea")
@@ -32,18 +30,6 @@ val minSupportedTrinoVersionProperty =
providers.gradleProperty("minSupportedTri
val trinoVersionProperty =
providers.gradleProperty("trinoVersion").orElse(minSupportedTrinoVersionProperty)
val trinoVersion = trinoVersionProperty.map { it.trim().toInt() }.get()
-// Trino 440+'s trino-spi is compiled for JDK 21+, so this module needs the
same JDK 24
-// toolchain the versioned trino-connector-<range> modules use. Error Prone is
incompatible
-// with that toolchain, so it is disabled here too, matching those modules'
own override.
-java {
- toolchain.languageVersion.set(JavaLanguageVersion.of(24))
-}
-
-tasks.withType<JavaCompile>().configureEach {
- options.errorprone.isEnabled.set(false)
- options.release.set(17)
-}
-
dependencies {
implementation(project(":catalogs:catalog-common"))
implementation(project(":clients:client-java-runtime", configuration =
"shadow"))
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 f109b37c7e..817d9f6306 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
@@ -231,7 +231,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 440-478; other
versions are untested.",
+ "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.",
"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 222fb0e99f..722a75e7ea 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
@@ -51,7 +51,7 @@ import
org.apache.gravitino.trino.connector.system.table.GravitinoSystemTableFac
public class GravitinoConnectorFactory implements ConnectorFactory {
private static final Logger LOG =
Logger.get(GravitinoConnectorFactory.class);
- private static final int MIN_SUPPORT_TRINO_SPI_VERSION = 440;
+ private static final int MIN_SUPPORT_TRINO_SPI_VERSION = 435;
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 =