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

panjuan 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 358f7aa1bc6 Fix sql regex sonar issue in SQLUtils (#25666)
358f7aa1bc6 is described below

commit 358f7aa1bc6491f8c6396da4ca6c1f9e4e33c10d
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Mon May 15 09:29:15 2023 +0800

    Fix sql regex sonar issue in SQLUtils (#25666)
    
    * Fix sql regex sonar issue in SQLUtils
    
    * fix unit test
    
    * revert wrong replace
---
 .../sql/parser/sql/common/util/SQLUtils.java       |  4 +-
 .../sql/parser/sql/common/util/SQLUtilsTest.java   | 60 +++++++++++-----------
 2 files changed, 32 insertions(+), 32 deletions(-)

diff --git 
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/util/SQLUtils.java
 
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/util/SQLUtils.java
index df87d8d46df..3149587f9e6 100644
--- 
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/util/SQLUtils.java
+++ 
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/util/SQLUtils.java
@@ -55,11 +55,11 @@ public final class SQLUtils {
     
     private static final String EXCLUDED_CHARACTERS = "[]`'\"";
     
-    private static final Pattern SINGLE_CHARACTER_PATTERN = 
Pattern.compile("^_|([^\\\\])_");
+    private static final Pattern SINGLE_CHARACTER_PATTERN = 
Pattern.compile("([^\\\\])_|^_");
     
     private static final Pattern SINGLE_CHARACTER_ESCAPE_PATTERN = 
Pattern.compile("\\\\_");
     
-    private static final Pattern ANY_CHARACTER_PATTERN = 
Pattern.compile("^%|([^\\\\])%");
+    private static final Pattern ANY_CHARACTER_PATTERN = 
Pattern.compile("([^\\\\])%|^%");
     
     private static final Pattern ANY_CHARACTER_ESCAPE_PATTERN = 
Pattern.compile("\\\\%");
     
diff --git 
a/parser/sql/statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/common/util/SQLUtilsTest.java
 
b/parser/sql/statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/common/util/SQLUtilsTest.java
index 79fd98e2ebf..edf9e76527d 100644
--- 
a/parser/sql/statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/common/util/SQLUtilsTest.java
+++ 
b/parser/sql/statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/common/util/SQLUtilsTest.java
@@ -101,44 +101,44 @@ class SQLUtilsTest {
     
     @Test
     void assertConvertLikePatternToRegexWhenEndWithPattern() {
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding_'"), is("SHOW DATABASES LIKE 'sharding.'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding%'"), is("SHOW DATABASES LIKE 'sharding.*'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding%_'"), is("SHOW DATABASES LIKE 'sharding.*.'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding\\_'"), is("SHOW DATABASES LIKE 'sharding_'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding\\%'"), is("SHOW DATABASES LIKE 'sharding%'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding\\%\\_'"), is("SHOW DATABASES LIKE 'sharding%_'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding_\\_'"), is("SHOW DATABASES LIKE 'sharding._'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding%\\%'"), is("SHOW DATABASES LIKE 'sharding.*%'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding_\\%'"), is("SHOW DATABASES LIKE 'sharding.%'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding\\_%'"), is("SHOW DATABASES LIKE 'sharding_.*'"));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding_"), 
is("sharding."));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding%"), 
is("sharding.*"));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding%_"), 
is("sharding.*."));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding\\_"), 
is("sharding_"));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding\\%"), 
is("sharding%"));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding\\%\\_"), 
is("sharding%_"));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding_\\_"), 
is("sharding._"));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding%\\%"), 
is("sharding.*%"));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding_\\%"), 
is("sharding.%"));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding\\_%"), 
is("sharding_.*"));
     }
     
     @Test
     void assertConvertLikePatternToRegexWhenStartWithPattern() {
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'_sharding'"), is("SHOW DATABASES LIKE '.sharding'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'%sharding'"), is("SHOW DATABASES LIKE '.*sharding'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'%_sharding'"), is("SHOW DATABASES LIKE '.*.sharding'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'\\_sharding'"), is("SHOW DATABASES LIKE '_sharding'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'\\%sharding'"), is("SHOW DATABASES LIKE '%sharding'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'\\%\\_sharding'"), is("SHOW DATABASES LIKE '%_sharding'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'_\\_sharding'"), is("SHOW DATABASES LIKE '._sharding'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'%\\%sharding'"), is("SHOW DATABASES LIKE '.*%sharding'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'_\\%sharding'"), is("SHOW DATABASES LIKE '.%sharding'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'\\_%sharding'"), is("SHOW DATABASES LIKE '_.*sharding'"));
+        assertThat(SQLUtils.convertLikePatternToRegex("_sharding"), 
is(".sharding"));
+        assertThat(SQLUtils.convertLikePatternToRegex("%sharding"), 
is(".*sharding"));
+        assertThat(SQLUtils.convertLikePatternToRegex("%_sharding"), 
is(".*.sharding"));
+        assertThat(SQLUtils.convertLikePatternToRegex("\\_sharding"), 
is("_sharding"));
+        assertThat(SQLUtils.convertLikePatternToRegex("\\%sharding"), 
is("%sharding"));
+        assertThat(SQLUtils.convertLikePatternToRegex("\\%\\_sharding"), 
is("%_sharding"));
+        assertThat(SQLUtils.convertLikePatternToRegex("_\\_sharding"), 
is("._sharding"));
+        assertThat(SQLUtils.convertLikePatternToRegex("%\\%sharding"), 
is(".*%sharding"));
+        assertThat(SQLUtils.convertLikePatternToRegex("_\\%sharding"), 
is(".%sharding"));
+        assertThat(SQLUtils.convertLikePatternToRegex("\\_%sharding"), 
is("_.*sharding"));
     }
     
     @Test
     void assertConvertLikePatternToRegexWhenContainsPattern() {
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding_db'"), is("SHOW DATABASES LIKE 'sharding.db'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding%db'"), is("SHOW DATABASES LIKE 'sharding.*db'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding%_db'"), is("SHOW DATABASES LIKE 'sharding.*.db'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding\\_db'"), is("SHOW DATABASES LIKE 'sharding_db'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding\\%db'"), is("SHOW DATABASES LIKE 'sharding%db'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding\\%\\_db'"), is("SHOW DATABASES LIKE 'sharding%_db'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding_\\_db'"), is("SHOW DATABASES LIKE 'sharding._db'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding%\\%db'"), is("SHOW DATABASES LIKE 'sharding.*%db'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding_\\%db'"), is("SHOW DATABASES LIKE 'sharding.%db'"));
-        assertThat(SQLUtils.convertLikePatternToRegex("SHOW DATABASES LIKE 
'sharding\\_%db'"), is("SHOW DATABASES LIKE 'sharding_.*db'"));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding_db"), 
is("sharding.db"));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding%db"), 
is("sharding.*db"));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding%_db"), 
is("sharding.*.db"));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding\\_db"), 
is("sharding_db"));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding\\%db"), 
is("sharding%db"));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding\\%\\_db"), 
is("sharding%_db"));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding_\\_db"), 
is("sharding._db"));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding%\\%db"), 
is("sharding.*%db"));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding_\\%db"), 
is("sharding.%db"));
+        assertThat(SQLUtils.convertLikePatternToRegex("sharding\\_%db"), 
is("sharding_.*db"));
     }
     
     @Test

Reply via email to