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"));
+    }
 }

Reply via email to