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 b4eaf5f4f56 Refactor DataTypeExpressionConverter (#37365)
b4eaf5f4f56 is described below

commit b4eaf5f4f5686e3179751995485db1eb28991d6d
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Dec 12 17:43:54 2025 +0800

    Refactor DataTypeExpressionConverter (#37365)
---
 .../converter/segment/expression/ExpressionConverter.java |  2 +-
 .../expression/impl/DataTypeExpressionConverter.java      | 15 ++++-----------
 .../segment/expression/ExpressionConverterTest.java       |  2 +-
 .../expression/impl/DataTypeExpressionConverterTest.java  | 13 ++-----------
 4 files changed, 8 insertions(+), 24 deletions(-)

diff --git 
a/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/ExpressionConverter.java
 
b/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/ExpressionConverter.java
index 872fad37e2b..79451e716ff 100644
--- 
a/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/ExpressionConverter.java
+++ 
b/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/ExpressionConverter.java
@@ -127,7 +127,7 @@ public final class ExpressionConverter {
             return 
AggregationProjectionConverter.convert((AggregationProjectionSegment) segment);
         }
         if (segment instanceof DataTypeSegment) {
-            return DataTypeExpressionConverter.convert((DataTypeSegment) 
segment);
+            return 
Optional.of(DataTypeExpressionConverter.convert((DataTypeSegment) segment));
         }
         if (segment instanceof CaseWhenExpression) {
             return 
Optional.of(CaseWhenExpressionConverter.convert((CaseWhenExpression) segment));
diff --git 
a/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/impl/DataTypeExpressionConverter.java
 
b/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/impl/DataTypeExpressionConverter.java
index 90f01f14802..f77912f6943 100644
--- 
a/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/impl/DataTypeExpressionConverter.java
+++ 
b/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/impl/DataTypeExpressionConverter.java
@@ -27,7 +27,6 @@ import org.apache.calcite.sql.type.SqlTypeName;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.DataTypeSegment;
 
 import java.util.Objects;
-import java.util.Optional;
 
 /**
  * Data type expression converter. 
@@ -41,17 +40,11 @@ public final class DataTypeExpressionConverter {
      * @param segment data type segment
      * @return SQL node
      */
-    public static Optional<SqlNode> convert(final DataTypeSegment segment) {
-        if (null == segment) {
-            return Optional.empty();
-        }
-        return Optional.of(new 
SqlDataTypeSpec(getSqlBasicTypeNameSpec(segment), SqlParserPos.ZERO));
-    }
-    
-    private static SqlBasicTypeNameSpec getSqlBasicTypeNameSpec(final 
DataTypeSegment segment) {
+    public static SqlNode convert(final DataTypeSegment segment) {
         SqlTypeName sqlTypeName = 
Objects.requireNonNull(SqlTypeName.get(segment.getDataTypeName().toUpperCase()));
-        return segment.getDataTypeLength().isPresent()
+        return new SqlDataTypeSpec(segment.getDataTypeLength().isPresent()
                 ? new SqlBasicTypeNameSpec(sqlTypeName, 
segment.getDataLength().getPrecision(), SqlParserPos.ZERO)
-                : new SqlBasicTypeNameSpec(sqlTypeName, SqlParserPos.ZERO);
+                : new SqlBasicTypeNameSpec(sqlTypeName, SqlParserPos.ZERO), 
SqlParserPos.ZERO);
     }
+    
 }
diff --git 
a/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/ExpressionConverterTest.java
 
b/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/ExpressionConverterTest.java
index b5b0a7f6545..7eaf1dc13ab 100644
--- 
a/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/ExpressionConverterTest.java
+++ 
b/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/ExpressionConverterTest.java
@@ -150,7 +150,7 @@ class ExpressionConverterTest {
         dataTypeSegment.setStopIndex(0);
         dataTypeSegment.setDataTypeName("int");
         SqlNode expectedDataTypeNode = mock(SqlNode.class);
-        
when(DataTypeExpressionConverter.convert(dataTypeSegment)).thenReturn(Optional.of(expectedDataTypeNode));
+        
when(DataTypeExpressionConverter.convert(dataTypeSegment)).thenReturn(expectedDataTypeNode);
         SqlCase expectedCaseWhenNode = mock(SqlCase.class);
         CaseWhenExpression caseWhenExpression = new CaseWhenExpression(0, 0, 
literalSegment, Collections.singleton(literalSegment), 
Collections.singleton(literalSegment), literalSegment);
         
when(CaseWhenExpressionConverter.convert(caseWhenExpression)).thenReturn(expectedCaseWhenNode);
diff --git 
a/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/impl/DataTypeExpressionConverterTest.java
 
b/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/impl/DataTypeExpressionConverterTest.java
index fae75f622a5..90937be57ca 100644
--- 
a/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/impl/DataTypeExpressionConverterTest.java
+++ 
b/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/impl/DataTypeExpressionConverterTest.java
@@ -25,24 +25,16 @@ 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.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 class DataTypeExpressionConverterTest {
     
-    @Test
-    void assertConvertReturnsEmptyForNullSegment() {
-        assertFalse(DataTypeExpressionConverter.convert(null).isPresent());
-    }
-    
     @Test
     void assertConvertWithoutLength() {
         DataTypeSegment segment = new DataTypeSegment();
         segment.setStartIndex(0);
         segment.setStopIndex(0);
         segment.setDataTypeName("INTEGER");
-        SqlDataTypeSpec actual = (SqlDataTypeSpec) 
DataTypeExpressionConverter.convert(segment).orElse(null);
-        assertNotNull(actual);
+        SqlDataTypeSpec actual = (SqlDataTypeSpec) 
DataTypeExpressionConverter.convert(segment);
         SqlBasicTypeNameSpec typeNameSpec = (SqlBasicTypeNameSpec) 
actual.getTypeNameSpec();
         assertThat(typeNameSpec.getTypeName().getSimple(), is("INTEGER"));
         assertThat(typeNameSpec.getPrecision(), is(-1));
@@ -57,8 +49,7 @@ class DataTypeExpressionConverterTest {
         DataTypeLengthSegment dataLength = new DataTypeLengthSegment();
         dataLength.setPrecision(10);
         segment.setDataLength(dataLength);
-        SqlDataTypeSpec actual = (SqlDataTypeSpec) 
DataTypeExpressionConverter.convert(segment).orElse(null);
-        assertNotNull(actual);
+        SqlDataTypeSpec actual = (SqlDataTypeSpec) 
DataTypeExpressionConverter.convert(segment);
         SqlBasicTypeNameSpec typeNameSpec = (SqlBasicTypeNameSpec) 
actual.getTypeNameSpec();
         assertThat(typeNameSpec.getPrecision(), is(10));
     }

Reply via email to