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 8d664f408e48d..770fa14762828 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 @@ -100,7 +100,7 @@ public static Optional convert(final ExpressionSegment segment) { return ListExpressionConverter.convert((ListExpression) segment); } if (segment instanceof BinaryOperationExpression) { - return BinaryOperationExpressionConverter.convert((BinaryOperationExpression) segment); + return Optional.of(BinaryOperationExpressionConverter.convert((BinaryOperationExpression) segment)); } if (segment instanceof ColumnSegment) { return ColumnConverter.convert((ColumnSegment) segment); diff --git a/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/impl/BinaryOperationExpressionConverter.java b/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/impl/BinaryOperationExpressionConverter.java index 6169e58f0b172..d553662ffd36b 100644 --- a/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/impl/BinaryOperationExpressionConverter.java +++ b/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/impl/BinaryOperationExpressionConverter.java @@ -114,10 +114,10 @@ private static void registerAlias() { * @param segment binary operation expression * @return SQL node */ - public static Optional convert(final BinaryOperationExpression segment) { + public static SqlBasicCall convert(final BinaryOperationExpression segment) { SqlOperator operator = convertOperator(segment); List sqlNodes = convertSqlNodes(segment, operator); - return Optional.of(new SqlBasicCall(operator, sqlNodes, SqlParserPos.ZERO)); + return new SqlBasicCall(operator, sqlNodes, SqlParserPos.ZERO); } private static SqlOperator convertOperator(final BinaryOperationExpression segment) { 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 6ae46c5b2c429..90e67e3f8b4fc 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 @@ -116,9 +116,9 @@ void assertConvertDelegatesToAllSupportedConverters() { SqlNode expectedListNode = mock(SqlNode.class); ListExpression listSegment = new ListExpression(0, 0); when(ListExpressionConverter.convert(listSegment)).thenReturn(Optional.of(expectedListNode)); - SqlNode expectedBinaryNode = mock(SqlNode.class); + SqlBasicCall expectedBinaryNode = mock(SqlBasicCall.class); BinaryOperationExpression binarySegment = new BinaryOperationExpression(0, 0, literalSegment, literalSegment, "+", "text"); - when(BinaryOperationExpressionConverter.convert(binarySegment)).thenReturn(Optional.of(expectedBinaryNode)); + when(BinaryOperationExpressionConverter.convert(binarySegment)).thenReturn(expectedBinaryNode); SqlNode expectedColumnNode = mock(SqlNode.class); ColumnSegment columnSegment = new ColumnSegment(0, 0, new IdentifierValue("col")); when(ColumnConverter.convert(columnSegment)).thenReturn(Optional.of(expectedColumnNode)); diff --git a/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/impl/BinaryOperationExpressionConverterTest.java b/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/impl/BinaryOperationExpressionConverterTest.java index fa871036920fa..0d96e86a35839 100644 --- a/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/impl/BinaryOperationExpressionConverterTest.java +++ b/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/segment/expression/impl/BinaryOperationExpressionConverterTest.java @@ -49,7 +49,6 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -78,8 +77,7 @@ void assertConvertFlattensSqlNodeListOperands() { SqlNode secondRightNode = mock(SqlNode.class); when(ExpressionConverter.convert(left)).thenReturn(Optional.of(leftNode)); when(ExpressionConverter.convert(right)).thenReturn(Optional.of(new SqlNodeList(Arrays.asList(firstRightNode, secondRightNode), SqlParserPos.ZERO))); - SqlBasicCall actual = (SqlBasicCall) BinaryOperationExpressionConverter.convert(expression).orElse(null); - assertNotNull(actual); + SqlBasicCall actual = BinaryOperationExpressionConverter.convert(expression); assertThat(actual.getOperator(), is(SqlStdOperatorTable.PLUS)); assertThat(actual.getOperandList(), is(Arrays.asList(leftNode, firstRightNode, secondRightNode))); } @@ -92,8 +90,7 @@ void assertConvertQuantifySubqueryFallsBackToOriginalOperator() { SqlNode rightNode = mock(SqlNode.class); when(ExpressionConverter.convert(left)).thenReturn(Optional.of(leftNode)); when(ExpressionConverter.convert(right)).thenReturn(Optional.of(rightNode)); - SqlBasicCall actual = (SqlBasicCall) BinaryOperationExpressionConverter.convert(new BinaryOperationExpression(0, 0, left, right, "AND", "")).orElse(null); - assertNotNull(actual); + SqlBasicCall actual = BinaryOperationExpressionConverter.convert(new BinaryOperationExpression(0, 0, left, right, "AND", "")); assertThat(actual.getOperator(), is(SqlStdOperatorTable.AND)); assertThat(actual.getOperandList(), is(Arrays.asList(leftNode, rightNode))); } @@ -106,8 +103,7 @@ void assertConvertIsOperatorVariants(final String displayName, final String righ LiteralExpressionSegment right = new LiteralExpressionSegment(0, 0, rightLiteral); SqlNode leftNode = leftSupplier.get(); when(ExpressionConverter.convert(left)).thenReturn(Optional.of(leftNode)); - SqlBasicCall actual = (SqlBasicCall) BinaryOperationExpressionConverter.convert(new BinaryOperationExpression(0, 0, left, right, "IS", "")).orElse(null); - assertNotNull(actual); + SqlBasicCall actual = BinaryOperationExpressionConverter.convert(new BinaryOperationExpression(0, 0, left, right, "IS", "")); assertThat(actual.getOperator(), is(expectedOperator)); if (null == expectedBoolean) { assertThat(actual.getOperandList(), is(Collections.singletonList(leftNode))); @@ -126,8 +122,7 @@ void assertConvertQuantifySubquery(final String operator, final String quantifyO SqlNode rightNode = mock(SqlNode.class); when(ExpressionConverter.convert(left)).thenReturn(Optional.of(leftNode)); when(ExpressionConverter.convert(right)).thenReturn(Optional.of(rightNode)); - SqlBasicCall actual = (SqlBasicCall) BinaryOperationExpressionConverter.convert(new BinaryOperationExpression(0, 0, left, right, operator, "")).orElse(null); - assertNotNull(actual); + SqlBasicCall actual = BinaryOperationExpressionConverter.convert(new BinaryOperationExpression(0, 0, left, right, operator, "")); assertThat(actual.getOperator(), is(expectedOperator)); assertThat(actual.getOperandList(), is(Arrays.asList(leftNode, rightNode))); }