This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 195c6a90735 Refactor IdentifierValue (#33744)
195c6a90735 is described below
commit 195c6a90735831939a3f243fd66e071181228776
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Nov 21 00:38:25 2024 +0800
Refactor IdentifierValue (#33744)
---
.../metadata/database/enums/QuoteCharacter.java | 5 +----
.../core/value/identifier/IdentifierValue.java | 9 +--------
.../core/value/identifier/IdentifierValueTest.java | 23 ++++++++++++++++++++++
3 files changed, 25 insertions(+), 12 deletions(-)
diff --git
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/enums/QuoteCharacter.java
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/enums/QuoteCharacter.java
index 65c8ad325c7..7cd9cd00374 100644
---
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/enums/QuoteCharacter.java
+++
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/enums/QuoteCharacter.java
@@ -65,10 +65,7 @@ public enum QuoteCharacter {
* @return value of quote character
*/
public static QuoteCharacter getQuoteCharacter(final String value) {
- if (Strings.isNullOrEmpty(value)) {
- return NONE;
- }
- return BY_FIRST_CHAR.getOrDefault(value.charAt(0), NONE);
+ return Strings.isNullOrEmpty(value) ? NONE :
BY_FIRST_CHAR.getOrDefault(value.charAt(0), NONE);
}
/**
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/value/identifier/IdentifierValue.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/value/identifier/IdentifierValue.java
index b748d98bbc9..9c342e7deb0 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/value/identifier/IdentifierValue.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/value/identifier/IdentifierValue.java
@@ -63,13 +63,6 @@ public final class IdentifierValue implements
ValueASTNode<String> {
* @return quote content
*/
public static String getQuotedContent(final String text) {
- if (Strings.isNullOrEmpty(text)) {
- return text;
- }
- QuoteCharacter quoteCharacter = QuoteCharacter.getQuoteCharacter(text);
- if (QuoteCharacter.NONE == quoteCharacter) {
- return text.trim();
- }
- return text.substring(1, text.length() - 1);
+ return Strings.isNullOrEmpty(text) ? text :
QuoteCharacter.getQuoteCharacter(text).unwrap(text).trim();
}
}
diff --git
a/parser/sql/statement/core/src/test/java/org/apache/shardingsphere/sql/parser/statement/core/value/identifier/IdentifierValueTest.java
b/parser/sql/statement/core/src/test/java/org/apache/shardingsphere/sql/parser/statement/core/value/identifier/IdentifierValueTest.java
index fb9bf2f2fcb..f7ce8802bb8 100644
---
a/parser/sql/statement/core/src/test/java/org/apache/shardingsphere/sql/parser/statement/core/value/identifier/IdentifierValueTest.java
+++
b/parser/sql/statement/core/src/test/java/org/apache/shardingsphere/sql/parser/statement/core/value/identifier/IdentifierValueTest.java
@@ -21,6 +21,7 @@ import org.junit.jupiter.api.Test;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertNull;
class IdentifierValueTest {
@@ -53,4 +54,26 @@ class IdentifierValueTest {
String text = "ds_${[1,2]}.t_order";
assertThat(new IdentifierValue(text, "[]").getValue(),
is("ds_${[1,2]}.t_order"));
}
+
+ @Test
+ void assertGetValueWithQuoteCharactersWithNullValue() {
+ assertThat(new IdentifierValue(null).getValueWithQuoteCharacters(),
is(""));
+ }
+
+ @Test
+ void assertGetValueWithQuoteCharactersWithValue() {
+ String text = "[foo]";
+ assertThat(new IdentifierValue(text).getValueWithQuoteCharacters(),
is("[foo]"));
+ }
+
+ @Test
+ void assertGetQuotedContentWithNullValue() {
+ assertNull(IdentifierValue.getQuotedContent(null));
+ }
+
+ @Test
+ void assertGetQuotedContent() {
+ assertThat(IdentifierValue.getQuotedContent(" foo "), is("foo"));
+ assertThat(IdentifierValue.getQuotedContent("`foo`"), is("foo"));
+ }
}