You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2025/08/24 05:18:10 UTC
(shardingsphere) branch master updated: Add DialectDefaultQueryPropertiesProvider to decuple ConnectionProperties.defaultQueryProperties (#36399)
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 <zh...@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