Skip to content

Commit b4eaf5f

Browse files
authored
Refactor DataTypeExpressionConverter (#37365)
1 parent 3819ea6 commit b4eaf5f

4 files changed

Lines changed: 8 additions & 24 deletions

File tree

kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/ExpressionConverter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ public static Optional<SqlNode> convert(final ExpressionSegment segment) {
127127
return AggregationProjectionConverter.convert((AggregationProjectionSegment) segment);
128128
}
129129
if (segment instanceof DataTypeSegment) {
130-
return DataTypeExpressionConverter.convert((DataTypeSegment) segment);
130+
return Optional.of(DataTypeExpressionConverter.convert((DataTypeSegment) segment));
131131
}
132132
if (segment instanceof CaseWhenExpression) {
133133
return Optional.of(CaseWhenExpressionConverter.convert((CaseWhenExpression) segment));

kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/impl/DataTypeExpressionConverter.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.DataTypeSegment;
2828

2929
import java.util.Objects;
30-
import java.util.Optional;
3130

3231
/**
3332
* Data type expression converter.
@@ -41,17 +40,11 @@ public final class DataTypeExpressionConverter {
4140
* @param segment data type segment
4241
* @return SQL node
4342
*/
44-
public static Optional<SqlNode> convert(final DataTypeSegment segment) {
45-
if (null == segment) {
46-
return Optional.empty();
47-
}
48-
return Optional.of(new SqlDataTypeSpec(getSqlBasicTypeNameSpec(segment), SqlParserPos.ZERO));
49-
}
50-
51-
private static SqlBasicTypeNameSpec getSqlBasicTypeNameSpec(final DataTypeSegment segment) {
43+
public static SqlNode convert(final DataTypeSegment segment) {
5244
SqlTypeName sqlTypeName = Objects.requireNonNull(SqlTypeName.get(segment.getDataTypeName().toUpperCase()));
53-
return segment.getDataTypeLength().isPresent()
45+
return new SqlDataTypeSpec(segment.getDataTypeLength().isPresent()
5446
? new SqlBasicTypeNameSpec(sqlTypeName, segment.getDataLength().getPrecision(), SqlParserPos.ZERO)
55-
: new SqlBasicTypeNameSpec(sqlTypeName, SqlParserPos.ZERO);
47+
: new SqlBasicTypeNameSpec(sqlTypeName, SqlParserPos.ZERO), SqlParserPos.ZERO);
5648
}
49+
5750
}

kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/ExpressionConverterTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ void assertConvertDelegatesToAllSupportedConverters() {
150150
dataTypeSegment.setStopIndex(0);
151151
dataTypeSegment.setDataTypeName("int");
152152
SqlNode expectedDataTypeNode = mock(SqlNode.class);
153-
when(DataTypeExpressionConverter.convert(dataTypeSegment)).thenReturn(Optional.of(expectedDataTypeNode));
153+
when(DataTypeExpressionConverter.convert(dataTypeSegment)).thenReturn(expectedDataTypeNode);
154154
SqlCase expectedCaseWhenNode = mock(SqlCase.class);
155155
CaseWhenExpression caseWhenExpression = new CaseWhenExpression(0, 0, literalSegment, Collections.singleton(literalSegment), Collections.singleton(literalSegment), literalSegment);
156156
when(CaseWhenExpressionConverter.convert(caseWhenExpression)).thenReturn(expectedCaseWhenNode);

kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/impl/DataTypeExpressionConverterTest.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,24 +25,16 @@
2525

2626
import static org.hamcrest.CoreMatchers.is;
2727
import static org.hamcrest.MatcherAssert.assertThat;
28-
import static org.junit.jupiter.api.Assertions.assertFalse;
29-
import static org.junit.jupiter.api.Assertions.assertNotNull;
3028

3129
class DataTypeExpressionConverterTest {
3230

33-
@Test
34-
void assertConvertReturnsEmptyForNullSegment() {
35-
assertFalse(DataTypeExpressionConverter.convert(null).isPresent());
36-
}
37-
3831
@Test
3932
void assertConvertWithoutLength() {
4033
DataTypeSegment segment = new DataTypeSegment();
4134
segment.setStartIndex(0);
4235
segment.setStopIndex(0);
4336
segment.setDataTypeName("INTEGER");
44-
SqlDataTypeSpec actual = (SqlDataTypeSpec) DataTypeExpressionConverter.convert(segment).orElse(null);
45-
assertNotNull(actual);
37+
SqlDataTypeSpec actual = (SqlDataTypeSpec) DataTypeExpressionConverter.convert(segment);
4638
SqlBasicTypeNameSpec typeNameSpec = (SqlBasicTypeNameSpec) actual.getTypeNameSpec();
4739
assertThat(typeNameSpec.getTypeName().getSimple(), is("INTEGER"));
4840
assertThat(typeNameSpec.getPrecision(), is(-1));
@@ -57,8 +49,7 @@ void assertConvertWithLength() {
5749
DataTypeLengthSegment dataLength = new DataTypeLengthSegment();
5850
dataLength.setPrecision(10);
5951
segment.setDataLength(dataLength);
60-
SqlDataTypeSpec actual = (SqlDataTypeSpec) DataTypeExpressionConverter.convert(segment).orElse(null);
61-
assertNotNull(actual);
52+
SqlDataTypeSpec actual = (SqlDataTypeSpec) DataTypeExpressionConverter.convert(segment);
6253
SqlBasicTypeNameSpec typeNameSpec = (SqlBasicTypeNameSpec) actual.getTypeNameSpec();
6354
assertThat(typeNameSpec.getPrecision(), is(10));
6455
}

0 commit comments

Comments
 (0)