From 9fda1d690a0f85c0a7bdcb71ec9e18730dbb9a61 Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Mon, 3 Aug 2026 15:52:01 +0800 Subject: [PATCH] fix(prestosql): avoid duplicate JDBC URL parameters Closes #5207 --- crates/dbx-core/src/connection.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/crates/dbx-core/src/connection.rs b/crates/dbx-core/src/connection.rs index 1ef5b44519..2b24223dd4 100644 --- a/crates/dbx-core/src/connection.rs +++ b/crates/dbx-core/src/connection.rs @@ -620,6 +620,7 @@ pub fn prestosql_jdbc_config_for_endpoint(config: &ConnectionConfig, host: &str, let mut jdbc_config = config.clone(); jdbc_config.connection_string = Some(trino_like_jdbc_connection_string(config, host, port, config.effective_database().unwrap_or(""))); + jdbc_config.url_params = None; if jdbc_config.jdbc_driver_class.as_deref().is_none_or(|value| value.trim().is_empty()) { jdbc_config.jdbc_driver_class = Some(PRESTOSQL_JDBC_DRIVER_CLASS.to_string()); } @@ -4896,6 +4897,26 @@ mod tests { assert_eq!(jdbc_config.jdbc_driver_paths, vec!["D:\\software\\jar\\presto-jdbc-350.jar"]); } + #[test] + fn prestosql_jdbc_config_consumes_url_params_after_building_url() { + let mut config = mysql_config(None); + config.db_type = DatabaseType::PrestoSql; + config.ssl = true; + config.url_params = Some( + "SSL=true&SSLKeyStorePassword=secret&SSLKeyStorePath=D:/keystore/presto/presto_keystore.jks".to_string(), + ); + + let jdbc_config = prestosql_jdbc_config_for_endpoint(&config, "presto.example.com", 8443); + + assert_eq!( + jdbc_config.connection_string.as_deref(), + Some( + "jdbc:presto://presto.example.com:8443?SSL=true&SSLKeyStorePassword=secret&SSLKeyStorePath=D:/keystore/presto/presto_keystore.jks" + ) + ); + assert_eq!(jdbc_config.url_params, None); + } + #[test] fn gaussdb_m_profile_uses_vendor_jdbc_url_and_driver() { let mut config = mysql_config(Some("业务库"));