You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2022/12/01 07:42:07 UTC

[shardingsphere] branch master updated: Fix datasource properties comparison not right when properties are map type. (#22548)

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 116bef3d010 Fix datasource properties comparison not right when properties are map type. (#22548)
116bef3d010 is described below

commit 116bef3d01083deeaf98459c3f185f9478b244fa
Author: zhaojinchao <zh...@apache.org>
AuthorDate: Thu Dec 1 15:42:00 2022 +0800

    Fix datasource properties comparison not right when properties are map type. (#22548)
    
    * Fix datasource properties comparison not right when properties are map type
    
    * Adjustment code
    
    * Add some unit test
---
 .../infra/datasource/props/DataSourceProperties.java             | 3 +++
 .../infra/datasource/props/DataSourcePropertiesTest.java         | 9 +++++++++
 2 files changed, 12 insertions(+)

diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/datasource/props/DataSourceProperties.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/datasource/props/DataSourceProperties.java
index 7460aed4f22..0dd2d1ef53e 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/datasource/props/DataSourceProperties.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/datasource/props/DataSourceProperties.java
@@ -104,6 +104,9 @@ public final class DataSourceProperties {
             if (!dataSourceProps.getAllLocalProperties().containsKey(entry.getKey())) {
                 continue;
             }
+            if (entry.getValue() instanceof Map) {
+                return entry.getValue().equals(dataSourceProps.getAllLocalProperties().get(entry.getKey()));
+            }
             if (!String.valueOf(entry.getValue()).equals(String.valueOf(dataSourceProps.getAllLocalProperties().get(entry.getKey())))) {
                 return false;
             }
diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/datasource/props/DataSourcePropertiesTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/datasource/props/DataSourcePropertiesTest.java
index a311714d9bb..6b8f48a03ab 100644
--- a/infra/common/src/test/java/org/apache/shardingsphere/infra/datasource/props/DataSourcePropertiesTest.java
+++ b/infra/common/src/test/java/org/apache/shardingsphere/infra/datasource/props/DataSourcePropertiesTest.java
@@ -135,6 +135,15 @@ public final class DataSourcePropertiesTest {
     private Map<String, Object> createUserProperties(final String username) {
         Map<String, Object> result = new LinkedHashMap<>(1, 1);
         result.put("username", username);
+        result.put("dataSourceProperties", getDataSourceProperties());
+        return result;
+    }
+    
+    private Map<String, String> getDataSourceProperties() {
+        Map<String, String> result = new LinkedHashMap<>(3, 1);
+        result.put("maintainTimeStats", "false");
+        result.put("rewriteBatchedStatements", "true");
+        result.put("useLocalSessionState", "true");
         return result;
     }
 }