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

duanzhengqiang 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 cad7aff7fbc Support underscore property name for storage units (#35098)
cad7aff7fbc is described below

commit cad7aff7fbcbf12db70cda0976340369df0a4777
Author: Raigor <raigor.ji...@gmail.com>
AuthorDate: Fri Mar 28 14:09:02 2025 +0800

    Support underscore property name for storage units (#35098)
---
 .../pool/props/domain/DataSourcePoolProperties.java    | 18 +++++++++++++++---
 .../converter/DataSourceSegmentsConverterTest.java     |  3 ++-
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git 
a/infra/data-source-pool/core/src/main/java/org/apache/shardingsphere/infra/datasource/pool/props/domain/DataSourcePoolProperties.java
 
b/infra/data-source-pool/core/src/main/java/org/apache/shardingsphere/infra/datasource/pool/props/domain/DataSourcePoolProperties.java
index 7a1fd34d784..940be09f84e 100644
--- 
a/infra/data-source-pool/core/src/main/java/org/apache/shardingsphere/infra/datasource/pool/props/domain/DataSourcePoolProperties.java
+++ 
b/infra/data-source-pool/core/src/main/java/org/apache/shardingsphere/infra/datasource/pool/props/domain/DataSourcePoolProperties.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.infra.datasource.pool.props.domain;
 
+import com.google.common.base.CaseFormat;
 import com.google.common.base.Objects;
 import lombok.Getter;
 import 
org.apache.shardingsphere.infra.datasource.pool.metadata.DataSourcePoolMetaData;
@@ -39,6 +40,8 @@ import java.util.Optional;
 @Getter
 public final class DataSourcePoolProperties {
     
+    private static final String UNDERSCORE = "_";
+    
     private final String poolClassName;
     
     private final ConnectionPropertySynonyms connectionPropertySynonyms;
@@ -51,10 +54,19 @@ public final class DataSourcePoolProperties {
         Optional<DataSourcePoolMetaData> metaData = 
TypedSPILoader.findService(DataSourcePoolMetaData.class, poolClassName);
         this.poolClassName = metaData.map(optional -> 
optional.getType().toString()).orElse(poolClassName);
         Map<String, String> propertySynonyms = 
metaData.map(DataSourcePoolMetaData::getPropertySynonyms).orElse(Collections.emptyMap());
-        connectionPropertySynonyms = new ConnectionPropertySynonyms(props, 
propertySynonyms);
-        poolPropertySynonyms = new PoolPropertySynonyms(props, 
propertySynonyms);
+        Map<String, Object> effectiveProps = convertToCamelKeys(props);
+        connectionPropertySynonyms = new 
ConnectionPropertySynonyms(effectiveProps, propertySynonyms);
+        poolPropertySynonyms = new PoolPropertySynonyms(effectiveProps, 
propertySynonyms);
         Collection<String> transientFieldNames = 
metaData.map(DataSourcePoolMetaData::getTransientFieldNames).orElse(Collections.emptyList());
-        customProperties = new CustomDataSourcePoolProperties(props, 
getStandardPropertyKeys(), transientFieldNames, propertySynonyms);
+        customProperties = new CustomDataSourcePoolProperties(effectiveProps, 
getStandardPropertyKeys(), transientFieldNames, propertySynonyms);
+    }
+    
+    private Map<String, Object> convertToCamelKeys(final Map<String, Object> 
props) {
+        Map<String, Object> result = new LinkedHashMap<>(props.size(), 1F);
+        for (Entry<String, Object> entry : props.entrySet()) {
+            result.put(entry.getKey().contains(UNDERSCORE) ? 
CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, entry.getKey()) : 
entry.getKey(), entry.getValue());
+        }
+        return result;
     }
     
     private Collection<String> getStandardPropertyKeys() {
diff --git 
a/parser/distsql/statement/src/test/java/org/apache/shardingsphere/distsql/segment/converter/DataSourceSegmentsConverterTest.java
 
b/parser/distsql/statement/src/test/java/org/apache/shardingsphere/distsql/segment/converter/DataSourceSegmentsConverterTest.java
index 794bdb36d4e..73dcafb71d5 100644
--- 
a/parser/distsql/statement/src/test/java/org/apache/shardingsphere/distsql/segment/converter/DataSourceSegmentsConverterTest.java
+++ 
b/parser/distsql/statement/src/test/java/org/apache/shardingsphere/distsql/segment/converter/DataSourceSegmentsConverterTest.java
@@ -46,11 +46,12 @@ class DataSourceSegmentsConverterTest {
         assertTrue(actual.keySet().containsAll(Arrays.asList("ds0", "ds1")));
         
assertThat(actual.values().iterator().next().getAllLocalProperties().get("username"),
 is("root0"));
         
assertThat(actual.values().iterator().next().getAllStandardProperties().get("maxPoolSize"),
 is("30"));
+        
assertThat(actual.values().iterator().next().getAllStandardProperties().get("minPoolSize"),
 is("10"));
     }
     
     private Collection<DataSourceSegment> createDataSourceSegments() {
         Collection<DataSourceSegment> result = new LinkedList<>();
-        Properties customPoolProps = PropertiesBuilder.build(new 
Property("maxPoolSize", "30"));
+        Properties customPoolProps = PropertiesBuilder.build(new 
Property("maxPoolSize", "30"), new Property("min_pool_size", "10"));
         result.add(new HostnameAndPortBasedDataSourceSegment("ds0", 
"127.0.0.1", "3306", "demo_ds_0", "root0", "root0", customPoolProps));
         result.add(new URLBasedDataSourceSegment("ds1", 
"jdbc:mysql://127.0.0.1:3306/demo_ds_1?useSSL=false", "root1", "root1", 
customPoolProps));
         return result;

Reply via email to