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