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

zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 8a72bb1dc07 Add DialectDefaultQueryPropertiesProvider to decuple 
ConnectionProperties.defaultQueryProperties (#36399)
8a72bb1dc07 is described below

commit 8a72bb1dc07b86877e4e21d022d0deb8147d4ef6
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Sun Aug 24 13:18:04 2025 +0800

    Add DialectDefaultQueryPropertiesProvider to decuple 
ConnectionProperties.defaultQueryProperties (#36399)
    
    * Add DialectDefaultQueryPropertiesProvider to decuple 
ConnectionProperties.defaultQueryProperties
    
    * Add DialectDefaultQueryPropertiesProvider to decuple 
ConnectionProperties.defaultQueryProperties
---
 ... => DialectDefaultQueryPropertiesProvider.java} | 34 ++++++++--------------
 .../core/jdbcurl/parser/ConnectionProperties.java  |  6 ----
 .../jdbcurl/judger/DatabaseInstanceJudgerTest.java | 14 +++++----
 .../ClickHouseConnectionPropertiesParser.java      |  4 +--
 .../FirebirdConnectionPropertiesParser.java        |  2 +-
 .../h2/jdbcurl/H2ConnectionPropertiesParser.java   |  3 +-
 .../jdbcurl/HiveConnectionPropertiesParser.java    |  2 +-
 .../jdbcurl/MySQLConnectionPropertiesParser.java   | 25 ++--------------
 ...va => MySQLDefaultQueryPropertiesProvider.java} | 19 +++---------
 ...e.jdbcurl.DialectDefaultQueryPropertiesProvider | 18 ++++++++++++
 .../OpenGaussConnectionPropertiesParser.java       |  5 +---
 .../jdbcurl/OracleConnectionPropertiesParser.java  |  5 ++--
 .../PostgreSQLConnectionPropertiesParser.java      |  5 +---
 .../jdbcurl/PrestoConnectionPropertiesParser.java  |  5 +---
 .../jdbcurl/SQL92ConnectionPropertiesParser.java   |  3 +-
 .../SQLServerConnectionPropertiesParser.java       |  3 +-
 .../pool/creator/DataSourcePoolReflection.java     | 18 ++++++++----
 .../MockedConnectionPropertiesParser.java          |  4 ++-
 18 files changed, 73 insertions(+), 102 deletions(-)

diff --git 
a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/ConnectionProperties.java
 
b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/DialectDefaultQueryPropertiesProvider.java
similarity index 58%
copy from 
database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/ConnectionProperties.java
copy to 
database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/DialectDefaultQueryPropertiesProvider.java
index 69c66338eec..7c303ef077e 100644
--- 
a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/ConnectionProperties.java
+++ 
b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/DialectDefaultQueryPropertiesProvider.java
@@ -15,33 +15,23 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.database.connector.core.jdbcurl.parser;
+package org.apache.shardingsphere.database.connector.core.jdbcurl;
 
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPI;
+import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
 
 import java.util.Properties;
 
 /**
- * Connection properties.
+ * Dialect default query properties provider.
  */
-@RequiredArgsConstructor
-@Getter
-public final class ConnectionProperties {
+@SingletonSPI
+public interface DialectDefaultQueryPropertiesProvider extends 
DatabaseTypedSPI {
     
-    private final String hostname;
-    
-    private final int port;
-    
-    private final String catalog;
-    
-    private final String schema;
-    
-    private final Properties queryProperties;
-    
-    private final Properties defaultQueryProperties;
-    
-    public ConnectionProperties(final String hostname, final int port, final 
String catalog, final String schema) {
-        this(hostname, port, catalog, schema, new Properties(), new 
Properties());
-    }
+    /**
+     * Get default query properties.
+     *
+     * @return default query properties
+     */
+    Properties getDefaultQueryProperties();
 }
diff --git 
a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/ConnectionProperties.java
 
b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/ConnectionProperties.java
index 69c66338eec..be803b5f14e 100644
--- 
a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/ConnectionProperties.java
+++ 
b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/jdbcurl/parser/ConnectionProperties.java
@@ -38,10 +38,4 @@ public final class ConnectionProperties {
     private final String schema;
     
     private final Properties queryProperties;
-    
-    private final Properties defaultQueryProperties;
-    
-    public ConnectionProperties(final String hostname, final int port, final 
String catalog, final String schema) {
-        this(hostname, port, catalog, schema, new Properties(), new 
Properties());
-    }
 }
diff --git 
a/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/jdbcurl/judger/DatabaseInstanceJudgerTest.java
 
b/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/jdbcurl/judger/DatabaseInstanceJudgerTest.java
index 9581f2c7458..5b5e2971bf6 100644
--- 
a/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/jdbcurl/judger/DatabaseInstanceJudgerTest.java
+++ 
b/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/jdbcurl/judger/DatabaseInstanceJudgerTest.java
@@ -20,6 +20,8 @@ package 
org.apache.shardingsphere.database.connector.core.jdbcurl.judger;
 import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionProperties;
 import org.junit.jupiter.api.Test;
 
+import java.util.Properties;
+
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
@@ -27,22 +29,22 @@ class DatabaseInstanceJudgerTest {
     
     @Test
     void assertIsInSameDatabaseInstance() {
-        ConnectionProperties connectionProps1 = new 
ConnectionProperties("127.0.0.1", 9999, "foo", "foo");
-        ConnectionProperties connectionProps2 = new 
ConnectionProperties("127.0.0.1", 9999, "bar", "bar");
+        ConnectionProperties connectionProps1 = new 
ConnectionProperties("127.0.0.1", 9999, "foo", "foo", new Properties());
+        ConnectionProperties connectionProps2 = new 
ConnectionProperties("127.0.0.1", 9999, "bar", "bar", new Properties());
         
assertTrue(DatabaseInstanceJudger.isInSameDatabaseInstance(connectionProps1, 
connectionProps2));
     }
     
     @Test
     void assertIsNotInSameDatabaseInstanceWithDifferentHostname() {
-        ConnectionProperties connectionProps1 = new 
ConnectionProperties("127.0.0.1", 9999, "foo", "foo");
-        ConnectionProperties connectionProps2 = new 
ConnectionProperties("127.0.0.2", 9999, "foo", "foo");
+        ConnectionProperties connectionProps1 = new 
ConnectionProperties("127.0.0.1", 9999, "foo", "foo", new Properties());
+        ConnectionProperties connectionProps2 = new 
ConnectionProperties("127.0.0.2", 9999, "foo", "foo", new Properties());
         
assertFalse(DatabaseInstanceJudger.isInSameDatabaseInstance(connectionProps1, 
connectionProps2));
     }
     
     @Test
     void assertIsNotInSameDatabaseInstanceWithDifferentPort() {
-        ConnectionProperties connectionProps1 = new 
ConnectionProperties("127.0.0.1", 9999, "foo", "foo");
-        ConnectionProperties connectionProps2 = new 
ConnectionProperties("127.0.0.1", 8888, "foo", "foo");
+        ConnectionProperties connectionProps1 = new 
ConnectionProperties("127.0.0.1", 9999, "foo", "foo", new Properties());
+        ConnectionProperties connectionProps2 = new 
ConnectionProperties("127.0.0.1", 8888, "foo", "foo", new Properties());
         
assertFalse(DatabaseInstanceJudger.isInSameDatabaseInstance(connectionProps1, 
connectionProps2));
     }
 }
diff --git 
a/database/connector/dialect/clickhouse/src/main/java/org/apache/shardingsphere/database/connector/clickhouse/jdbcurl/ClickHouseConnectionPropertiesParser.java
 
b/database/connector/dialect/clickhouse/src/main/java/org/apache/shardingsphere/database/connector/clickhouse/jdbcurl/ClickHouseConnectionPropertiesParser.java
index 2c71901557f..1f3d39d722f 100644
--- 
a/database/connector/dialect/clickhouse/src/main/java/org/apache/shardingsphere/database/connector/clickhouse/jdbcurl/ClickHouseConnectionPropertiesParser.java
+++ 
b/database/connector/dialect/clickhouse/src/main/java/org/apache/shardingsphere/database/connector/clickhouse/jdbcurl/ClickHouseConnectionPropertiesParser.java
@@ -22,8 +22,6 @@ import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.Connecti
 import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrl;
 import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrlParser;
 
-import java.util.Properties;
-
 /**
  * Connection properties parser of ClickHouse.
  */
@@ -35,7 +33,7 @@ public final class ClickHouseConnectionPropertiesParser 
implements ConnectionPro
     public ConnectionProperties parse(final String url, final String username, 
final String catalog) {
         StandardJdbcUrl standardJdbcUrl = new 
StandardJdbcUrlParser().parse(url);
         return new ConnectionProperties(
-                standardJdbcUrl.getHostname(), 
standardJdbcUrl.getPort(DEFAULT_PORT), standardJdbcUrl.getDatabase(), null, 
standardJdbcUrl.getQueryProperties(), new Properties());
+                standardJdbcUrl.getHostname(), 
standardJdbcUrl.getPort(DEFAULT_PORT), standardJdbcUrl.getDatabase(), null, 
standardJdbcUrl.getQueryProperties());
     }
     
     @Override
diff --git 
a/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/jdbcurl/FirebirdConnectionPropertiesParser.java
 
b/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/jdbcurl/FirebirdConnectionPropertiesParser.java
index 93330aaa600..95391c31b60 100644
--- 
a/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/jdbcurl/FirebirdConnectionPropertiesParser.java
+++ 
b/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/jdbcurl/FirebirdConnectionPropertiesParser.java
@@ -42,7 +42,7 @@ public final class FirebirdConnectionPropertiesParser 
implements ConnectionPrope
         String databaseName = attachObjectName.contains("?") ? 
attachObjectName.split("\\?")[0] : attachObjectName;
         Properties queryProps = new Properties();
         queryProps.putAll(FBDriver.normalizeProperties(url, new Properties()));
-        return new ConnectionProperties(dbAttachInfo.getServerName(), 
dbAttachInfo.getPortNumber(), databaseName, null, queryProps, new Properties());
+        return new ConnectionProperties(dbAttachInfo.getServerName(), 
dbAttachInfo.getPortNumber(), databaseName, null, queryProps);
     }
     
     @Override
diff --git 
a/database/connector/dialect/h2/src/main/java/org/apache/shardingsphere/database/connector/h2/jdbcurl/H2ConnectionPropertiesParser.java
 
b/database/connector/dialect/h2/src/main/java/org/apache/shardingsphere/database/connector/h2/jdbcurl/H2ConnectionPropertiesParser.java
index 609ee9e83df..aeb8513add1 100644
--- 
a/database/connector/dialect/h2/src/main/java/org/apache/shardingsphere/database/connector/h2/jdbcurl/H2ConnectionPropertiesParser.java
+++ 
b/database/connector/dialect/h2/src/main/java/org/apache/shardingsphere/database/connector/h2/jdbcurl/H2ConnectionPropertiesParser.java
@@ -25,7 +25,6 @@ import 
org.apache.shardingsphere.infra.exception.ShardingSpherePreconditions;
 import org.apache.shardingsphere.infra.util.props.PropertiesBuilder;
 import org.apache.shardingsphere.infra.util.props.PropertiesBuilder.Property;
 
-import java.util.Properties;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -46,7 +45,7 @@ public final class H2ConnectionPropertiesParser implements 
ConnectionPropertiesP
     public ConnectionProperties parse(final String url, final String username, 
final String catalog) {
         Matcher matcher = URL_PATTERN.matcher(url);
         ShardingSpherePreconditions.checkState(matcher.find(), () -> new 
UnrecognizedDatabaseURLException(url, URL_PATTERN.pattern()));
-        return new ConnectionProperties(getHostname(matcher), 
getPort(matcher), getCatalog(matcher), null, PropertiesBuilder.build(new 
Property("model", getModel(matcher))), new Properties());
+        return new ConnectionProperties(getHostname(matcher), 
getPort(matcher), getCatalog(matcher), null, PropertiesBuilder.build(new 
Property("model", getModel(matcher))));
     }
     
     private String getHostname(final Matcher matcher) {
diff --git 
a/database/connector/dialect/hive/src/main/java/org/apache/shardingsphere/database/connector/hive/jdbcurl/HiveConnectionPropertiesParser.java
 
b/database/connector/dialect/hive/src/main/java/org/apache/shardingsphere/database/connector/hive/jdbcurl/HiveConnectionPropertiesParser.java
index 4e320b7a0b8..680f2954621 100644
--- 
a/database/connector/dialect/hive/src/main/java/org/apache/shardingsphere/database/connector/hive/jdbcurl/HiveConnectionPropertiesParser.java
+++ 
b/database/connector/dialect/hive/src/main/java/org/apache/shardingsphere/database/connector/hive/jdbcurl/HiveConnectionPropertiesParser.java
@@ -46,7 +46,7 @@ public final class HiveConnectionPropertiesParser implements 
ConnectionPropertie
         queryProps.putAll(params.getSessionVars());
         queryProps.putAll(params.getHiveConfs());
         queryProps.putAll(params.getHiveVars());
-        return new ConnectionProperties(params.getHost(), params.getPort(), 
params.getDbName(), null, queryProps, new Properties());
+        return new ConnectionProperties(params.getHost(), params.getPort(), 
params.getDbName(), null, queryProps);
     }
     
     @Override
diff --git 
a/database/connector/dialect/mysql/src/main/java/org/apache/shardingsphere/database/connector/mysql/jdbcurl/MySQLConnectionPropertiesParser.java
 
b/database/connector/dialect/mysql/src/main/java/org/apache/shardingsphere/database/connector/mysql/jdbcurl/MySQLConnectionPropertiesParser.java
index 6c04a99e6eb..348a471cddf 100644
--- 
a/database/connector/dialect/mysql/src/main/java/org/apache/shardingsphere/database/connector/mysql/jdbcurl/MySQLConnectionPropertiesParser.java
+++ 
b/database/connector/dialect/mysql/src/main/java/org/apache/shardingsphere/database/connector/mysql/jdbcurl/MySQLConnectionPropertiesParser.java
@@ -22,8 +22,6 @@ import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.Connecti
 import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrl;
 import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrlParser;
 
-import java.util.Properties;
-
 /**
  * Connection properties parser of MySQL.
  */
@@ -34,27 +32,8 @@ public final class MySQLConnectionPropertiesParser 
implements ConnectionProperti
     @Override
     public ConnectionProperties parse(final String url, final String username, 
final String catalog) {
         StandardJdbcUrl standardJdbcUrl = new 
StandardJdbcUrlParser().parse(url);
-        return new ConnectionProperties(standardJdbcUrl.getHostname(), 
standardJdbcUrl.getPort(DEFAULT_PORT),
-                null == catalog ? standardJdbcUrl.getDatabase() : catalog, 
null, standardJdbcUrl.getQueryProperties(), buildDefaultQueryProperties());
-    }
-    
-    private Properties buildDefaultQueryProperties() {
-        Properties result = new Properties();
-        result.setProperty("useServerPrepStmts", Boolean.TRUE.toString());
-        result.setProperty("cachePrepStmts", Boolean.TRUE.toString());
-        result.setProperty("prepStmtCacheSize", "8192");
-        result.setProperty("prepStmtCacheSqlLimit", "2048");
-        result.setProperty("useLocalSessionState", Boolean.TRUE.toString());
-        result.setProperty("rewriteBatchedStatements", 
Boolean.TRUE.toString());
-        result.setProperty("cacheResultSetMetadata", Boolean.FALSE.toString());
-        result.setProperty("cacheServerConfiguration", 
Boolean.TRUE.toString());
-        result.setProperty("elideSetAutoCommits", Boolean.TRUE.toString());
-        result.setProperty("maintainTimeStats", Boolean.FALSE.toString());
-        result.setProperty("netTimeoutForStreamingResults", "0");
-        result.setProperty("tinyInt1isBit", Boolean.FALSE.toString());
-        result.setProperty("useSSL", Boolean.FALSE.toString());
-        result.setProperty("zeroDateTimeBehavior", "round");
-        return result;
+        return new ConnectionProperties(
+                standardJdbcUrl.getHostname(), 
standardJdbcUrl.getPort(DEFAULT_PORT), null == catalog ? 
standardJdbcUrl.getDatabase() : catalog, null, 
standardJdbcUrl.getQueryProperties());
     }
     
     @Override
diff --git 
a/database/connector/dialect/mysql/src/main/java/org/apache/shardingsphere/database/connector/mysql/jdbcurl/MySQLConnectionPropertiesParser.java
 
b/database/connector/dialect/mysql/src/main/java/org/apache/shardingsphere/database/connector/mysql/jdbcurl/MySQLDefaultQueryPropertiesProvider.java
similarity index 67%
copy from 
database/connector/dialect/mysql/src/main/java/org/apache/shardingsphere/database/connector/mysql/jdbcurl/MySQLConnectionPropertiesParser.java
copy to 
database/connector/dialect/mysql/src/main/java/org/apache/shardingsphere/database/connector/mysql/jdbcurl/MySQLDefaultQueryPropertiesProvider.java
index 6c04a99e6eb..78973b88fbf 100644
--- 
a/database/connector/dialect/mysql/src/main/java/org/apache/shardingsphere/database/connector/mysql/jdbcurl/MySQLConnectionPropertiesParser.java
+++ 
b/database/connector/dialect/mysql/src/main/java/org/apache/shardingsphere/database/connector/mysql/jdbcurl/MySQLDefaultQueryPropertiesProvider.java
@@ -17,28 +17,17 @@
 
 package org.apache.shardingsphere.database.connector.mysql.jdbcurl;
 
-import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionProperties;
-import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionPropertiesParser;
-import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrl;
-import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrlParser;
+import 
org.apache.shardingsphere.database.connector.core.jdbcurl.DialectDefaultQueryPropertiesProvider;
 
 import java.util.Properties;
 
 /**
- * Connection properties parser of MySQL.
+ * Default query properties provider for MySQL.
  */
-public final class MySQLConnectionPropertiesParser implements 
ConnectionPropertiesParser {
-    
-    private static final int DEFAULT_PORT = 3306;
+public final class MySQLDefaultQueryPropertiesProvider implements 
DialectDefaultQueryPropertiesProvider {
     
     @Override
-    public ConnectionProperties parse(final String url, final String username, 
final String catalog) {
-        StandardJdbcUrl standardJdbcUrl = new 
StandardJdbcUrlParser().parse(url);
-        return new ConnectionProperties(standardJdbcUrl.getHostname(), 
standardJdbcUrl.getPort(DEFAULT_PORT),
-                null == catalog ? standardJdbcUrl.getDatabase() : catalog, 
null, standardJdbcUrl.getQueryProperties(), buildDefaultQueryProperties());
-    }
-    
-    private Properties buildDefaultQueryProperties() {
+    public Properties getDefaultQueryProperties() {
         Properties result = new Properties();
         result.setProperty("useServerPrepStmts", Boolean.TRUE.toString());
         result.setProperty("cachePrepStmts", Boolean.TRUE.toString());
diff --git 
a/database/connector/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.database.connector.core.jdbcurl.DialectDefaultQueryPropertiesProvider
 
b/database/connector/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.database.connector.core.jdbcurl.DialectDefaultQueryPropertiesProvider
new file mode 100644
index 00000000000..ae4b6ca7a07
--- /dev/null
+++ 
b/database/connector/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.database.connector.core.jdbcurl.DialectDefaultQueryPropertiesProvider
@@ -0,0 +1,18 @@
+#
+# 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.shardingsphere.database.connector.mysql.jdbcurl.MySQLDefaultQueryPropertiesProvider
diff --git 
a/database/connector/dialect/opengauss/src/main/java/org/apache/shardingsphere/database/connector/opengauss/jdbcurl/OpenGaussConnectionPropertiesParser.java
 
b/database/connector/dialect/opengauss/src/main/java/org/apache/shardingsphere/database/connector/opengauss/jdbcurl/OpenGaussConnectionPropertiesParser.java
index 5ce6d098fef..986f109ccd7 100644
--- 
a/database/connector/dialect/opengauss/src/main/java/org/apache/shardingsphere/database/connector/opengauss/jdbcurl/OpenGaussConnectionPropertiesParser.java
+++ 
b/database/connector/dialect/opengauss/src/main/java/org/apache/shardingsphere/database/connector/opengauss/jdbcurl/OpenGaussConnectionPropertiesParser.java
@@ -22,8 +22,6 @@ import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.Connecti
 import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrl;
 import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrlParser;
 
-import java.util.Properties;
-
 /**
  * Connection properties parser of openGauss.
  */
@@ -34,8 +32,7 @@ public final class OpenGaussConnectionPropertiesParser 
implements ConnectionProp
     @Override
     public ConnectionProperties parse(final String url, final String username, 
final String catalog) {
         StandardJdbcUrl standardJdbcUrl = new 
StandardJdbcUrlParser().parse(url);
-        return new ConnectionProperties(
-                standardJdbcUrl.getHostname(), 
standardJdbcUrl.getPort(DEFAULT_PORT), standardJdbcUrl.getDatabase(), null, 
standardJdbcUrl.getQueryProperties(), new Properties());
+        return new ConnectionProperties(standardJdbcUrl.getHostname(), 
standardJdbcUrl.getPort(DEFAULT_PORT), standardJdbcUrl.getDatabase(), null, 
standardJdbcUrl.getQueryProperties());
     }
     
     @Override
diff --git 
a/database/connector/dialect/oracle/src/main/java/org/apache/shardingsphere/database/connector/oracle/jdbcurl/OracleConnectionPropertiesParser.java
 
b/database/connector/dialect/oracle/src/main/java/org/apache/shardingsphere/database/connector/oracle/jdbcurl/OracleConnectionPropertiesParser.java
index 357d63ee58b..40b3e0f1131 100644
--- 
a/database/connector/dialect/oracle/src/main/java/org/apache/shardingsphere/database/connector/oracle/jdbcurl/OracleConnectionPropertiesParser.java
+++ 
b/database/connector/dialect/oracle/src/main/java/org/apache/shardingsphere/database/connector/oracle/jdbcurl/OracleConnectionPropertiesParser.java
@@ -24,6 +24,7 @@ import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.Connecti
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.Properties;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -50,11 +51,11 @@ public final class OracleConnectionPropertiesParser 
implements ConnectionPropert
     }
     
     private ConnectionProperties getThinConnectionProperties(final String 
username, final Matcher matcher) {
-        return new ConnectionProperties(matcher.group(3), 
Strings.isNullOrEmpty(matcher.group(4)) ? DEFAULT_PORT : 
Integer.parseInt(matcher.group(4)), matcher.group(5), username);
+        return new ConnectionProperties(matcher.group(3), 
Strings.isNullOrEmpty(matcher.group(4)) ? DEFAULT_PORT : 
Integer.parseInt(matcher.group(4)), matcher.group(5), username, new 
Properties());
     }
     
     private ConnectionProperties getStandardConnectionProperties(final String 
username, final Matcher matcher) {
-        return new ConnectionProperties(matcher.group(2), 
Strings.isNullOrEmpty(matcher.group(3)) ? DEFAULT_PORT : 
Integer.parseInt(matcher.group(3)), matcher.group(4), username);
+        return new ConnectionProperties(matcher.group(2), 
Strings.isNullOrEmpty(matcher.group(3)) ? DEFAULT_PORT : 
Integer.parseInt(matcher.group(3)), matcher.group(4), username, new 
Properties());
     }
     
     @Override
diff --git 
a/database/connector/dialect/postgresql/src/main/java/org/apache/shardingsphere/database/connector/postgresql/jdbcurl/PostgreSQLConnectionPropertiesParser.java
 
b/database/connector/dialect/postgresql/src/main/java/org/apache/shardingsphere/database/connector/postgresql/jdbcurl/PostgreSQLConnectionPropertiesParser.java
index d30be21a5b1..985415e9c2b 100644
--- 
a/database/connector/dialect/postgresql/src/main/java/org/apache/shardingsphere/database/connector/postgresql/jdbcurl/PostgreSQLConnectionPropertiesParser.java
+++ 
b/database/connector/dialect/postgresql/src/main/java/org/apache/shardingsphere/database/connector/postgresql/jdbcurl/PostgreSQLConnectionPropertiesParser.java
@@ -22,8 +22,6 @@ import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.Connecti
 import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrl;
 import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrlParser;
 
-import java.util.Properties;
-
 /**
  * Connection properties parser of PostgreSQL.
  */
@@ -34,8 +32,7 @@ public final class PostgreSQLConnectionPropertiesParser 
implements ConnectionPro
     @Override
     public ConnectionProperties parse(final String url, final String username, 
final String catalog) {
         StandardJdbcUrl standardJdbcUrl = new 
StandardJdbcUrlParser().parse(url);
-        return new ConnectionProperties(
-                standardJdbcUrl.getHostname(), 
standardJdbcUrl.getPort(DEFAULT_PORT), standardJdbcUrl.getDatabase(), null, 
standardJdbcUrl.getQueryProperties(), new Properties());
+        return new ConnectionProperties(standardJdbcUrl.getHostname(), 
standardJdbcUrl.getPort(DEFAULT_PORT), standardJdbcUrl.getDatabase(), null, 
standardJdbcUrl.getQueryProperties());
     }
     
     @Override
diff --git 
a/database/connector/dialect/presto/src/main/java/org/apache/shardingsphere/database/connector/presto/jdbcurl/PrestoConnectionPropertiesParser.java
 
b/database/connector/dialect/presto/src/main/java/org/apache/shardingsphere/database/connector/presto/jdbcurl/PrestoConnectionPropertiesParser.java
index 8336ee34eb8..61b423f5a0c 100644
--- 
a/database/connector/dialect/presto/src/main/java/org/apache/shardingsphere/database/connector/presto/jdbcurl/PrestoConnectionPropertiesParser.java
+++ 
b/database/connector/dialect/presto/src/main/java/org/apache/shardingsphere/database/connector/presto/jdbcurl/PrestoConnectionPropertiesParser.java
@@ -22,8 +22,6 @@ import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.Connecti
 import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrl;
 import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrlParser;
 
-import java.util.Properties;
-
 /**
  * Connection properties parser of Presto.
  */
@@ -34,8 +32,7 @@ public final class PrestoConnectionPropertiesParser 
implements ConnectionPropert
     @Override
     public ConnectionProperties parse(final String url, final String username, 
final String catalog) {
         StandardJdbcUrl standardJdbcUrl = new 
StandardJdbcUrlParser().parse(url);
-        return new ConnectionProperties(
-                standardJdbcUrl.getHostname(), 
standardJdbcUrl.getPort(DEFAULT_PORT), standardJdbcUrl.getDatabase(), null, 
standardJdbcUrl.getQueryProperties(), new Properties());
+        return new ConnectionProperties(standardJdbcUrl.getHostname(), 
standardJdbcUrl.getPort(DEFAULT_PORT), standardJdbcUrl.getDatabase(), null, 
standardJdbcUrl.getQueryProperties());
     }
     
     @Override
diff --git 
a/database/connector/dialect/sql92/src/main/java/org/apache/shardingsphere/database/connector/sql92/jdbcurl/SQL92ConnectionPropertiesParser.java
 
b/database/connector/dialect/sql92/src/main/java/org/apache/shardingsphere/database/connector/sql92/jdbcurl/SQL92ConnectionPropertiesParser.java
index 42b18e8a8e2..675f0f2b27c 100644
--- 
a/database/connector/dialect/sql92/src/main/java/org/apache/shardingsphere/database/connector/sql92/jdbcurl/SQL92ConnectionPropertiesParser.java
+++ 
b/database/connector/dialect/sql92/src/main/java/org/apache/shardingsphere/database/connector/sql92/jdbcurl/SQL92ConnectionPropertiesParser.java
@@ -22,6 +22,7 @@ import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.Connecti
 import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionPropertiesParser;
 import org.apache.shardingsphere.infra.exception.ShardingSpherePreconditions;
 
+import java.util.Properties;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -38,7 +39,7 @@ public final class SQL92ConnectionPropertiesParser implements 
ConnectionProperti
     public ConnectionProperties parse(final String url, final String username, 
final String catalog) {
         Matcher matcher = URL_PATTERN.matcher(url);
         ShardingSpherePreconditions.checkState(matcher.find(), () -> new 
UnrecognizedDatabaseURLException(url, URL_PATTERN.pattern()));
-        return new ConnectionProperties("", DEFAULT_PORT, "", null);
+        return new ConnectionProperties("", DEFAULT_PORT, "", null, new 
Properties());
     }
     
     @Override
diff --git 
a/database/connector/dialect/sqlserver/src/main/java/org/apache/shardingsphere/database/connector/sql92/sqlserver/jdbcurl/SQLServerConnectionPropertiesParser.java
 
b/database/connector/dialect/sqlserver/src/main/java/org/apache/shardingsphere/database/connector/sql92/sqlserver/jdbcurl/SQLServerConnectionPropertiesParser.java
index 9ffaa97e128..ab05209c92c 100644
--- 
a/database/connector/dialect/sqlserver/src/main/java/org/apache/shardingsphere/database/connector/sql92/sqlserver/jdbcurl/SQLServerConnectionPropertiesParser.java
+++ 
b/database/connector/dialect/sqlserver/src/main/java/org/apache/shardingsphere/database/connector/sql92/sqlserver/jdbcurl/SQLServerConnectionPropertiesParser.java
@@ -23,6 +23,7 @@ import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.Connecti
 import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionPropertiesParser;
 import org.apache.shardingsphere.infra.exception.ShardingSpherePreconditions;
 
+import java.util.Properties;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -39,7 +40,7 @@ public final class SQLServerConnectionPropertiesParser 
implements ConnectionProp
     public ConnectionProperties parse(final String url, final String username, 
final String catalog) {
         Matcher matcher = URL_PATTERN.matcher(url);
         ShardingSpherePreconditions.checkState(matcher.find(), () -> new 
UnrecognizedDatabaseURLException(url, URL_PATTERN.pattern()));
-        return new ConnectionProperties(matcher.group(2), 
Strings.isNullOrEmpty(matcher.group(3)) ? DEFAULT_PORT : 
Integer.parseInt(matcher.group(3)), matcher.group(5), null);
+        return new ConnectionProperties(matcher.group(2), 
Strings.isNullOrEmpty(matcher.group(3)) ? DEFAULT_PORT : 
Integer.parseInt(matcher.group(3)), matcher.group(5), null, new Properties());
     }
     
     @Override
diff --git 
a/infra/data-source-pool/core/src/main/java/org/apache/shardingsphere/infra/datasource/pool/creator/DataSourcePoolReflection.java
 
b/infra/data-source-pool/core/src/main/java/org/apache/shardingsphere/infra/datasource/pool/creator/DataSourcePoolReflection.java
index 0223d2b3305..9ae608439cb 100644
--- 
a/infra/data-source-pool/core/src/main/java/org/apache/shardingsphere/infra/datasource/pool/creator/DataSourcePoolReflection.java
+++ 
b/infra/data-source-pool/core/src/main/java/org/apache/shardingsphere/infra/datasource/pool/creator/DataSourcePoolReflection.java
@@ -19,9 +19,11 @@ package 
org.apache.shardingsphere.infra.datasource.pool.creator;
 
 import com.google.common.base.CaseFormat;
 import lombok.SneakyThrows;
+import 
org.apache.shardingsphere.database.connector.core.jdbcurl.DialectDefaultQueryPropertiesProvider;
 import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionProperties;
 import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.ConnectionPropertiesParser;
 import 
org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import 
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeFactory;
 import 
org.apache.shardingsphere.infra.datasource.pool.metadata.DataSourcePoolMetaData;
 import 
org.apache.shardingsphere.infra.datasource.pool.metadata.DataSourcePoolMetaDataReflection;
@@ -177,14 +179,18 @@ public final class DataSourcePoolReflection {
         if (!jdbcUrl.isPresent() || !jdbcConnectionProps.isPresent()) {
             return;
         }
-        ConnectionProperties connectionProps = 
DatabaseTypedSPILoader.getService(ConnectionPropertiesParser.class, 
DatabaseTypeFactory.get(jdbcUrl.get())).parse(jdbcUrl.get(), null, null);
+        DatabaseType databaseType = DatabaseTypeFactory.get(jdbcUrl.get());
+        ConnectionProperties connectionProps = 
DatabaseTypedSPILoader.getService(ConnectionPropertiesParser.class, 
databaseType).parse(jdbcUrl.get(), null, null);
         Properties queryProps = connectionProps.getQueryProperties();
         Properties jdbcProps = jdbcConnectionProps.get();
-        for (Entry<Object, Object> entry : 
connectionProps.getDefaultQueryProperties().entrySet()) {
-            String defaultPropertyKey = entry.getKey().toString();
-            String defaultPropertyValue = entry.getValue().toString();
-            if (!containsDefaultProperty(defaultPropertyKey, jdbcProps, 
queryProps)) {
-                jdbcProps.setProperty(defaultPropertyKey, 
defaultPropertyValue);
+        Optional<DialectDefaultQueryPropertiesProvider> 
defaultQueryPropertiesProvider = 
DatabaseTypedSPILoader.findService(DialectDefaultQueryPropertiesProvider.class, 
databaseType);
+        if (defaultQueryPropertiesProvider.isPresent()) {
+            for (Entry<Object, Object> entry : 
defaultQueryPropertiesProvider.get().getDefaultQueryProperties().entrySet()) {
+                String defaultPropertyKey = entry.getKey().toString();
+                String defaultPropertyValue = entry.getValue().toString();
+                if (!containsDefaultProperty(defaultPropertyKey, jdbcProps, 
queryProps)) {
+                    jdbcProps.setProperty(defaultPropertyKey, 
defaultPropertyValue);
+                }
             }
         }
         setField(metaData.getFieldMetaData().getJdbcUrlPropertiesFieldName(), 
jdbcProps);
diff --git 
a/test/infra/fixture/database/src/main/java/org/apache/shardingsphere/test/infra/fixture/connector/MockedConnectionPropertiesParser.java
 
b/test/infra/fixture/database/src/main/java/org/apache/shardingsphere/test/infra/fixture/connector/MockedConnectionPropertiesParser.java
index 4bc2c6f07cf..b2d53136845 100644
--- 
a/test/infra/fixture/database/src/main/java/org/apache/shardingsphere/test/infra/fixture/connector/MockedConnectionPropertiesParser.java
+++ 
b/test/infra/fixture/database/src/main/java/org/apache/shardingsphere/test/infra/fixture/connector/MockedConnectionPropertiesParser.java
@@ -23,6 +23,8 @@ import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.Connecti
 import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrl;
 import 
org.apache.shardingsphere.database.connector.core.jdbcurl.parser.standard.StandardJdbcUrlParser;
 
+import java.util.Properties;
+
 /**
  * Mocked connection properties parser.
  */
@@ -32,7 +34,7 @@ public final class MockedConnectionPropertiesParser 
implements ConnectionPropert
     public ConnectionProperties parse(final String url, final String username, 
final String catalog) {
         StandardJdbcUrl standardJdbcUrl = new 
StandardJdbcUrlParser().parse(url);
         return new ConnectionProperties(
-                standardJdbcUrl.getHostname(), standardJdbcUrl.getPort(), 
Strings.isNullOrEmpty(catalog) ? standardJdbcUrl.getDatabase() : catalog, 
standardJdbcUrl.getDatabase());
+                standardJdbcUrl.getHostname(), standardJdbcUrl.getPort(), 
Strings.isNullOrEmpty(catalog) ? standardJdbcUrl.getDatabase() : catalog, 
standardJdbcUrl.getDatabase(), new Properties());
     }
     
     @Override


Reply via email to