This is an automated email from the ASF dual-hosted git repository.

diqiu50 pushed a commit to branch 
revert-12733-cherry-pick-14f359fe-to-branch-1.3
in repository https://gitbox.apache.org/repos/asf/gravitino.git

commit eee6d976e9796588728014fc2dbdbe54fa2c7265
Author: Yuhui <[email protected]>
AuthorDate: Wed Sep 2 09:53:08 2026 +0800

    Revert "[Cherry-pick to branch-1.3] [#12707] improvement(trino-connector): 
Dr…"
    
    This reverts commit 377a1982c0c856dd4e814f9f49fcccf277f5be8c.
---
 .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 =

Reply via email to