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

terrymanu 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 165be2d0b14 Preserve whitespace in DistSQL properties (#39274)
165be2d0b14 is described below

commit 165be2d0b1440fd0a20622efa89590b196f9bed5
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Jul 30 16:24:42 2026 +0800

    Preserve whitespace in DistSQL properties (#39274)
    
    Replace trim-based property unwrapping with QuoteCharacter.unwrapText 
across DistSQL visitors.
    Remove the obsolete unwrapAndTrimText method and cover quoted boundary 
whitespace.
---
 .../core/metadata/database/enums/QuoteCharacter.java         | 12 ------------
 .../core/metadata/database/enums/QuoteCharacterTest.java     |  6 +-----
 .../distsql/parser/core/EncryptDistSQLStatementVisitor.java  |  2 +-
 .../distsql/parser/core/MaskDistSQLStatementVisitor.java     |  2 +-
 .../core/ReadwriteSplittingDistSQLStatementVisitor.java      |  2 +-
 .../distsql/parser/core/ShadowDistSQLStatementVisitor.java   |  2 +-
 .../distsql/parser/core/ShardingDistSQLStatementVisitor.java |  2 +-
 .../parser/core/ShardingDistSQLStatementVisitorTest.java     |  3 ++-
 .../cdc/distsql/parser/core/CDCDistSQLStatementVisitor.java  |  2 +-
 .../parser/core/MigrationDistSQLStatementVisitor.java        |  2 +-
 .../parser/core/GlobalClockDistSQLStatementVisitor.java      |  2 +-
 .../parser/core/SQLTranslatorDistSQLStatementVisitor.java    |  2 +-
 .../parser/core/TransactionDistSQLStatementVisitor.java      |  2 +-
 .../parser/core/kernel/KernelDistSQLStatementVisitor.java    |  4 ++--
 14 files changed, 15 insertions(+), 30 deletions(-)

diff --git 
a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/database/enums/QuoteCharacter.java
 
b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/database/enums/QuoteCharacter.java
index a25962c7631..4aa86d2fd90 100644
--- 
a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/database/enums/QuoteCharacter.java
+++ 
b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/database/enums/QuoteCharacter.java
@@ -106,16 +106,4 @@ public enum QuoteCharacter {
     public static String unwrapText(final String text) {
         return getQuoteCharacter(text).unwrap(text);
     }
-    
-    /**
-     * Unwrap and trim text.
-     *
-     * @param text text to be unwrapped and trimmed
-     * @return unwrapped and trimmed test
-     */
-    // TODO Should use unwrap instead of this method after new rules defined 
in G4's property key and property key, which should include string but cannot 
permit blank on first and last of the value
-    // TODO @longtao
-    public static String unwrapAndTrimText(final String text) {
-        return unwrapText(text).trim();
-    }
 }
diff --git 
a/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/metadata/database/enums/QuoteCharacterTest.java
 
b/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/metadata/database/enums/QuoteCharacterTest.java
index 3e8210450a0..23a0730a5f1 100644
--- 
a/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/metadata/database/enums/QuoteCharacterTest.java
+++ 
b/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/metadata/database/enums/QuoteCharacterTest.java
@@ -58,11 +58,6 @@ class QuoteCharacterTest {
         assertThat(QuoteCharacter.unwrapText(text), is(expectedText));
     }
     
-    @Test
-    void assertUnwrapAndTrimText() {
-        assertThat(QuoteCharacter.unwrapAndTrimText("` test `"), is("test"));
-    }
-    
     private static Stream<Arguments> getQuoteCharacterArguments() {
         return Stream.of(
                 Arguments.of("null value", null, QuoteCharacter.NONE),
@@ -98,6 +93,7 @@ class QuoteCharacterTest {
                 Arguments.of("double quote text", "\"test\"", "test"),
                 Arguments.of("brackets text", "[test]", "test"),
                 Arguments.of("parentheses text", "(test)", "test"),
+                Arguments.of("single quote text with boundary whitespace", "' 
test '", " test "),
                 Arguments.of("unrecognized wrapper text", "{test}", "{test}"),
                 Arguments.of("unmatched back quote text", "`test'", "`test'"));
     }
diff --git 
a/features/encrypt/distsql/parser/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptDistSQLStatementVisitor.java
 
b/features/encrypt/distsql/parser/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptDistSQLStatementVisitor.java
index 2618078182c..c85d5922a8f 100644
--- 
a/features/encrypt/distsql/parser/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptDistSQLStatementVisitor.java
+++ 
b/features/encrypt/distsql/parser/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptDistSQLStatementVisitor.java
@@ -119,7 +119,7 @@ public final class EncryptDistSQLStatementVisitor extends 
EncryptDistSQLStatemen
             return result;
         }
         for (PropertyContext each : ctx.properties().property()) {
-            
result.setProperty(QuoteCharacter.unwrapAndTrimText(each.key.getText()), 
QuoteCharacter.unwrapAndTrimText(each.value.getText()));
+            result.setProperty(QuoteCharacter.unwrapText(each.key.getText()), 
QuoteCharacter.unwrapText(each.value.getText()));
         }
         return result;
     }
diff --git 
a/features/mask/distsql/parser/src/main/java/org/apache/shardingsphere/mask/distsql/parser/core/MaskDistSQLStatementVisitor.java
 
b/features/mask/distsql/parser/src/main/java/org/apache/shardingsphere/mask/distsql/parser/core/MaskDistSQLStatementVisitor.java
index bc3bd5babbe..bf6863f60c7 100644
--- 
a/features/mask/distsql/parser/src/main/java/org/apache/shardingsphere/mask/distsql/parser/core/MaskDistSQLStatementVisitor.java
+++ 
b/features/mask/distsql/parser/src/main/java/org/apache/shardingsphere/mask/distsql/parser/core/MaskDistSQLStatementVisitor.java
@@ -102,7 +102,7 @@ public final class MaskDistSQLStatementVisitor extends 
MaskDistSQLStatementBaseV
             return result;
         }
         for (PropertyContext each : ctx.properties().property()) {
-            
result.setProperty(QuoteCharacter.unwrapAndTrimText(each.key.getText()), 
QuoteCharacter.unwrapAndTrimText(each.value.getText()));
+            result.setProperty(QuoteCharacter.unwrapText(each.key.getText()), 
QuoteCharacter.unwrapText(each.value.getText()));
         }
         return result;
     }
diff --git 
a/features/readwrite-splitting/distsql/parser/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/core/ReadwriteSplittingDistSQLStatementVisitor.java
 
b/features/readwrite-splitting/distsql/parser/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/core/ReadwriteSplittingDistSQLStatementVisitor.java
index f28a823c1ed..6018d9eb6ee 100644
--- 
a/features/readwrite-splitting/distsql/parser/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/core/ReadwriteSplittingDistSQLStatementVisitor.java
+++ 
b/features/readwrite-splitting/distsql/parser/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/core/ReadwriteSplittingDistSQLStatementVisitor.java
@@ -122,7 +122,7 @@ public final class 
ReadwriteSplittingDistSQLStatementVisitor extends ReadwriteSp
             return result;
         }
         for (PropertyContext each : ctx.properties().property()) {
-            
result.setProperty(QuoteCharacter.unwrapAndTrimText(each.key.getText()), 
QuoteCharacter.unwrapAndTrimText(each.value.getText()));
+            result.setProperty(QuoteCharacter.unwrapText(each.key.getText()), 
QuoteCharacter.unwrapText(each.value.getText()));
         }
         return result;
     }
diff --git 
a/features/shadow/distsql/parser/src/main/java/org/apache/shardingsphere/shadow/distsql/parser/core/ShadowDistSQLStatementVisitor.java
 
b/features/shadow/distsql/parser/src/main/java/org/apache/shardingsphere/shadow/distsql/parser/core/ShadowDistSQLStatementVisitor.java
index b97720379cf..cca02b8a4a4 100644
--- 
a/features/shadow/distsql/parser/src/main/java/org/apache/shardingsphere/shadow/distsql/parser/core/ShadowDistSQLStatementVisitor.java
+++ 
b/features/shadow/distsql/parser/src/main/java/org/apache/shardingsphere/shadow/distsql/parser/core/ShadowDistSQLStatementVisitor.java
@@ -125,7 +125,7 @@ public final class ShadowDistSQLStatementVisitor extends 
ShadowDistSQLStatementB
             return result;
         }
         for (PropertyContext each : ctx.properties().property()) {
-            
result.setProperty(QuoteCharacter.unwrapAndTrimText(each.key.getText()), 
QuoteCharacter.unwrapAndTrimText(each.value.getText()));
+            result.setProperty(QuoteCharacter.unwrapText(each.key.getText()), 
QuoteCharacter.unwrapText(each.value.getText()));
         }
         return result;
     }
diff --git 
a/features/sharding/distsql/parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
 
b/features/sharding/distsql/parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
index 161d167fa33..7e9e3c57662 100644
--- 
a/features/sharding/distsql/parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
+++ 
b/features/sharding/distsql/parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
@@ -391,7 +391,7 @@ public final class ShardingDistSQLStatementVisitor extends 
ShardingDistSQLStatem
             return result;
         }
         for (PropertyContext each : ctx.properties().property()) {
-            
result.setProperty(QuoteCharacter.unwrapAndTrimText(each.key.getText()), 
QuoteCharacter.unwrapAndTrimText(each.value.getText()));
+            result.setProperty(QuoteCharacter.unwrapText(each.key.getText()), 
QuoteCharacter.unwrapText(each.value.getText()));
         }
         return result;
     }
diff --git 
a/features/sharding/distsql/parser/src/test/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitorTest.java
 
b/features/sharding/distsql/parser/src/test/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitorTest.java
index b5018f67306..1de53032f77 100644
--- 
a/features/sharding/distsql/parser/src/test/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitorTest.java
+++ 
b/features/sharding/distsql/parser/src/test/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitorTest.java
@@ -66,10 +66,11 @@ class ShardingDistSQLStatementVisitorTest {
     @Test
     void assertCreateKeyGenerator() {
         CreateShardingKeyGeneratorStatement actual = 
(CreateShardingKeyGeneratorStatement) parse(
-                "CREATE SHARDING KEY GENERATOR snowflake_generator 
(TYPE(NAME='SNOWFLAKE', PROPERTIES('worker-id'=1)))");
+                "CREATE SHARDING KEY GENERATOR snowflake_generator 
(TYPE(NAME='SNOWFLAKE', PROPERTIES('worker-id'=1, ' foo_key '=' bar_value 
')))");
         assertThat(actual.getName(), is("snowflake_generator"));
         assertThat(actual.getAlgorithmSegment().getName(), is("SNOWFLAKE"));
         
assertThat(actual.getAlgorithmSegment().getProps().getProperty("worker-id"), 
is("1"));
+        assertThat(actual.getAlgorithmSegment().getProps().getProperty(" 
foo_key "), is(" bar_value "));
     }
     
     @Test
diff --git 
a/kernel/data-pipeline/scenario/cdc/distsql/parser/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/distsql/parser/core/CDCDistSQLStatementVisitor.java
 
b/kernel/data-pipeline/scenario/cdc/distsql/parser/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/distsql/parser/core/CDCDistSQLStatementVisitor.java
index 82df8dfd991..03b10617b52 100644
--- 
a/kernel/data-pipeline/scenario/cdc/distsql/parser/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/distsql/parser/core/CDCDistSQLStatementVisitor.java
+++ 
b/kernel/data-pipeline/scenario/cdc/distsql/parser/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/distsql/parser/core/CDCDistSQLStatementVisitor.java
@@ -141,7 +141,7 @@ public final class CDCDistSQLStatementVisitor extends 
CDCDistSQLStatementBaseVis
             return result;
         }
         for (PropertyContext each : ctx.properties().property()) {
-            
result.setProperty(QuoteCharacter.unwrapAndTrimText(each.key.getText()), 
QuoteCharacter.unwrapAndTrimText(each.value.getText()));
+            result.setProperty(QuoteCharacter.unwrapText(each.key.getText()), 
QuoteCharacter.unwrapText(each.value.getText()));
         }
         return result;
     }
diff --git 
a/kernel/data-pipeline/scenario/migration/distsql/parser/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/distsql/parser/core/MigrationDistSQLStatementVisitor.java
 
b/kernel/data-pipeline/scenario/migration/distsql/parser/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/distsql/parser/core/MigrationDistSQLStatementVisitor.java
index 047c6e8c39c..ae2f0e12b4b 100644
--- 
a/kernel/data-pipeline/scenario/migration/distsql/parser/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/distsql/parser/core/MigrationDistSQLStatementVisitor.java
+++ 
b/kernel/data-pipeline/scenario/migration/distsql/parser/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/distsql/parser/core/MigrationDistSQLStatementVisitor.java
@@ -253,7 +253,7 @@ public final class MigrationDistSQLStatementVisitor extends 
MigrationDistSQLStat
             return result;
         }
         for (PropertyContext each : ctx.properties().property()) {
-            
result.setProperty(QuoteCharacter.unwrapAndTrimText(each.key.getText()), 
QuoteCharacter.unwrapAndTrimText(each.value.getText()));
+            result.setProperty(QuoteCharacter.unwrapText(each.key.getText()), 
QuoteCharacter.unwrapText(each.value.getText()));
         }
         return result;
     }
diff --git 
a/kernel/global-clock/distsql/parser/src/main/java/org/apache/shardingsphere/globalclock/distsql/parser/core/GlobalClockDistSQLStatementVisitor.java
 
b/kernel/global-clock/distsql/parser/src/main/java/org/apache/shardingsphere/globalclock/distsql/parser/core/GlobalClockDistSQLStatementVisitor.java
index ec47a9d4def..86a2f1db081 100644
--- 
a/kernel/global-clock/distsql/parser/src/main/java/org/apache/shardingsphere/globalclock/distsql/parser/core/GlobalClockDistSQLStatementVisitor.java
+++ 
b/kernel/global-clock/distsql/parser/src/main/java/org/apache/shardingsphere/globalclock/distsql/parser/core/GlobalClockDistSQLStatementVisitor.java
@@ -56,7 +56,7 @@ public final class GlobalClockDistSQLStatementVisitor extends 
GlobalClockDistSQL
             return result;
         }
         for (PropertyContext each : ctx.properties().property()) {
-            
result.setProperty(QuoteCharacter.unwrapAndTrimText(each.key.getText()), 
QuoteCharacter.unwrapAndTrimText(each.value.getText()));
+            result.setProperty(QuoteCharacter.unwrapText(each.key.getText()), 
QuoteCharacter.unwrapText(each.value.getText()));
         }
         return result;
     }
diff --git 
a/kernel/sql-translator/distsql/parser/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/parser/core/SQLTranslatorDistSQLStatementVisitor.java
 
b/kernel/sql-translator/distsql/parser/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/parser/core/SQLTranslatorDistSQLStatementVisitor.java
index 2db3409ddc1..281ea49ecef 100644
--- 
a/kernel/sql-translator/distsql/parser/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/parser/core/SQLTranslatorDistSQLStatementVisitor.java
+++ 
b/kernel/sql-translator/distsql/parser/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/parser/core/SQLTranslatorDistSQLStatementVisitor.java
@@ -61,7 +61,7 @@ public final class SQLTranslatorDistSQLStatementVisitor 
extends SQLTranslatorDis
             return result;
         }
         for (PropertyContext each : ctx.properties().property()) {
-            
result.setProperty(QuoteCharacter.unwrapAndTrimText(each.key.getText()), 
QuoteCharacter.unwrapAndTrimText(each.value.getText()));
+            result.setProperty(QuoteCharacter.unwrapText(each.key.getText()), 
QuoteCharacter.unwrapText(each.value.getText()));
         }
         return result;
     }
diff --git 
a/kernel/transaction/distsql/parser/src/main/java/org/apache/shardingsphere/transaction/distsql/parser/core/TransactionDistSQLStatementVisitor.java
 
b/kernel/transaction/distsql/parser/src/main/java/org/apache/shardingsphere/transaction/distsql/parser/core/TransactionDistSQLStatementVisitor.java
index 143bc168a71..da0490e822d 100644
--- 
a/kernel/transaction/distsql/parser/src/main/java/org/apache/shardingsphere/transaction/distsql/parser/core/TransactionDistSQLStatementVisitor.java
+++ 
b/kernel/transaction/distsql/parser/src/main/java/org/apache/shardingsphere/transaction/distsql/parser/core/TransactionDistSQLStatementVisitor.java
@@ -66,7 +66,7 @@ public final class TransactionDistSQLStatementVisitor extends 
TransactionDistSQL
             return result;
         }
         for (PropertyContext each : ctx.properties().property()) {
-            
result.setProperty(QuoteCharacter.unwrapAndTrimText(each.key.getText()), 
QuoteCharacter.unwrapAndTrimText(each.value.getText()));
+            result.setProperty(QuoteCharacter.unwrapText(each.key.getText()), 
QuoteCharacter.unwrapText(each.value.getText()));
         }
         return result;
     }
diff --git 
a/parser/distsql/engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/kernel/KernelDistSQLStatementVisitor.java
 
b/parser/distsql/engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/kernel/KernelDistSQLStatementVisitor.java
index 0567c36c026..597e8f28a1b 100644
--- 
a/parser/distsql/engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/kernel/KernelDistSQLStatementVisitor.java
+++ 
b/parser/distsql/engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/kernel/KernelDistSQLStatementVisitor.java
@@ -189,7 +189,7 @@ public final class KernelDistSQLStatementVisitor extends 
KernelDistSQLStatementB
             return result;
         }
         for (PropertyContext each : ctx.properties().property()) {
-            
result.setProperty(QuoteCharacter.unwrapAndTrimText(each.key.getText()), 
QuoteCharacter.unwrapAndTrimText(each.value.getText()));
+            result.setProperty(QuoteCharacter.unwrapText(each.key.getText()), 
QuoteCharacter.unwrapText(each.value.getText()));
         }
         return result;
     }
@@ -306,7 +306,7 @@ public final class KernelDistSQLStatementVisitor extends 
KernelDistSQLStatementB
             return result;
         }
         for (PropertyContext each : ctx.properties().property()) {
-            
result.setProperty(QuoteCharacter.unwrapAndTrimText(each.key.getText()), 
QuoteCharacter.unwrapAndTrimText(each.value.getText()));
+            result.setProperty(QuoteCharacter.unwrapText(each.key.getText()), 
QuoteCharacter.unwrapText(each.value.getText()));
         }
         return result;
     }

Reply via email to