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