This is an automated email from the ASF dual-hosted git repository.
sunnianjun 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 51306de476e Refactor CaseWhenExpression parse logic (#22535)
51306de476e is described below
commit 51306de476e1a2ddf95fe52bee62fc077ffb430b
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Wed Nov 30 18:12:10 2022 +0800
Refactor CaseWhenExpression parse logic (#22535)
---
.../segment/expression/ExpressionConverter.java | 8 ++---
...erter.java => CaseWhenExpressionConverter.java} | 36 +++++++++++-----------
.../impl/OpenGaussStatementSQLVisitor.java | 20 ++++++------
.../impl/PostgreSQLStatementSQLVisitor.java | 20 ++++++------
...aseWhenSegment.java => CaseWhenExpression.java} | 12 ++++----
.../segment/expression/ExpressionAssert.java | 28 ++++++++---------
.../impl/expr/ExpectedCaseWhenExpression.java | 16 +++++-----
.../main/resources/case/dml/select-expression.xml | 32 +++++++++----------
8 files changed, 86 insertions(+), 86 deletions(-)
diff --git
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/converter/segment/expression/ExpressionConverter.java
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/converter/segment/expression/ExpressionConverter.java
index b943744a04c..a4bad66841b 100644
---
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/converter/segment/expression/ExpressionConverter.java
+++
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/converter/segment/expression/ExpressionConverter.java
@@ -22,7 +22,7 @@ import
org.apache.shardingsphere.infra.util.exception.external.sql.type.generic.
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BetweenExpression;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BinaryOperationExpression;
-import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.CaseWhenSegment;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.CaseWhenExpression;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExistsSubqueryExpression;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.FunctionSegment;
@@ -37,7 +37,7 @@ import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DataTypeS
import
org.apache.shardingsphere.sqlfederation.optimizer.converter.segment.SQLSegmentConverter;
import
org.apache.shardingsphere.sqlfederation.optimizer.converter.segment.expression.impl.BetweenExpressionConverter;
import
org.apache.shardingsphere.sqlfederation.optimizer.converter.segment.expression.impl.BinaryOperationExpressionConverter;
-import
org.apache.shardingsphere.sqlfederation.optimizer.converter.segment.expression.impl.CaseWhenConverter;
+import
org.apache.shardingsphere.sqlfederation.optimizer.converter.segment.expression.impl.CaseWhenExpressionConverter;
import
org.apache.shardingsphere.sqlfederation.optimizer.converter.segment.expression.impl.ColumnConverter;
import
org.apache.shardingsphere.sqlfederation.optimizer.converter.segment.expression.impl.ExistsSubqueryExpressionConverter;
import
org.apache.shardingsphere.sqlfederation.optimizer.converter.segment.expression.impl.FunctionConverter;
@@ -101,8 +101,8 @@ public final class ExpressionConverter implements
SQLSegmentConverter<Expression
if (segment instanceof DataTypeSegment) {
return new DataTypeConverter().convert((DataTypeSegment) segment);
}
- if (segment instanceof CaseWhenSegment) {
- return new CaseWhenConverter().convert((CaseWhenSegment) segment);
+ if (segment instanceof CaseWhenExpression) {
+ return new
CaseWhenExpressionConverter().convert((CaseWhenExpression) segment);
}
throw new UnsupportedSQLOperationException("unsupported TableSegment
type: " + segment.getClass());
}
diff --git
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/converter/segment/expression/impl/CaseWhenConverter.java
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/converter/segment/expression/impl/CaseWhenExpressionConverter.java
similarity index 64%
rename from
kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/converter/segment/expression/impl/CaseWhenConverter.java
rename to
kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/converter/segment/expression/impl/CaseWhenExpressionConverter.java
index 9db5040b00a..2c694d96295 100644
---
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/converter/segment/expression/impl/CaseWhenConverter.java
+++
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/converter/segment/expression/impl/CaseWhenExpressionConverter.java
@@ -24,7 +24,7 @@ import org.apache.calcite.sql.SqlNodeList;
import org.apache.calcite.sql.fun.SqlCase;
import org.apache.calcite.sql.fun.SqlStdOperatorTable;
import org.apache.calcite.sql.parser.SqlParserPos;
-import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.CaseWhenSegment;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.CaseWhenExpression;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
import
org.apache.shardingsphere.sqlfederation.optimizer.converter.segment.SQLSegmentConverter;
import
org.apache.shardingsphere.sqlfederation.optimizer.converter.segment.expression.ExpressionConverter;
@@ -35,25 +35,25 @@ import java.util.LinkedList;
import java.util.Optional;
/**
- * Case when converter.
+ * Case when expression converter.
*/
-public final class CaseWhenConverter implements
SQLSegmentConverter<CaseWhenSegment, SqlNode> {
+public final class CaseWhenExpressionConverter implements
SQLSegmentConverter<CaseWhenExpression, SqlNode> {
@Override
- public Optional<SqlNode> convert(final CaseWhenSegment segment) {
- Collection<SqlNode> whenList = convertWhenList(segment.getCaseArg(),
segment.getWhenList());
- Collection<SqlNode> thenList = new LinkedList<>();
- segment.getThenList().forEach(each -> new
ExpressionConverter().convert(each).ifPresent(thenList::add));
- Optional<SqlNode> elseExpr = new
ExpressionConverter().convert(segment.getElseExpression());
- return Optional.of(new SqlCase(SqlParserPos.ZERO, null, new
SqlNodeList(whenList, SqlParserPos.ZERO), new SqlNodeList(thenList,
SqlParserPos.ZERO),
+ public Optional<SqlNode> convert(final CaseWhenExpression segment) {
+ Collection<SqlNode> whenExprs =
convertWhenExprs(segment.getCaseExpr(), segment.getWhenExprs());
+ Collection<SqlNode> thenExprs = new LinkedList<>();
+ segment.getThenExprs().forEach(each -> new
ExpressionConverter().convert(each).ifPresent(thenExprs::add));
+ Optional<SqlNode> elseExpr = new
ExpressionConverter().convert(segment.getElseExpr());
+ return Optional.of(new SqlCase(SqlParserPos.ZERO, null, new
SqlNodeList(whenExprs, SqlParserPos.ZERO), new SqlNodeList(thenExprs,
SqlParserPos.ZERO),
elseExpr.orElseGet(() -> SqlLiteral.createCharString("NULL",
SqlParserPos.ZERO))));
}
- private Collection<SqlNode> convertWhenList(final ExpressionSegment
caseArg, final Collection<ExpressionSegment> whenList) {
+ private Collection<SqlNode> convertWhenExprs(final ExpressionSegment
caseExpr, final Collection<ExpressionSegment> whenExprs) {
Collection<SqlNode> result = new LinkedList<>();
- for (ExpressionSegment each : whenList) {
- if (null != caseArg) {
- convertWithCaseArg(caseArg, each, result);
+ for (ExpressionSegment each : whenExprs) {
+ if (null != caseExpr) {
+ convertCaseExpr(caseExpr, each).ifPresent(result::add);
} else {
new ExpressionConverter().convert(each).ifPresent(result::add);
}
@@ -61,12 +61,12 @@ public final class CaseWhenConverter implements
SQLSegmentConverter<CaseWhenSegm
return result;
}
- private void convertWithCaseArg(final ExpressionSegment caseArg, final
ExpressionSegment expressionSegment, final Collection<SqlNode> result) {
- Optional<SqlNode> leftExpr = new
ExpressionConverter().convert(caseArg);
- Optional<SqlNode> rightExpr = new
ExpressionConverter().convert(expressionSegment);
+ private Optional<SqlNode> convertCaseExpr(final ExpressionSegment
caseExpr, final ExpressionSegment whenExpr) {
+ Optional<SqlNode> leftExpr = new
ExpressionConverter().convert(caseExpr);
+ Optional<SqlNode> rightExpr = new
ExpressionConverter().convert(whenExpr);
if (leftExpr.isPresent() && rightExpr.isPresent()) {
- new
ExpressionConverter().convert(expressionSegment).ifPresent(optional ->
result.add(
- new SqlBasicCall(SqlStdOperatorTable.EQUALS,
Arrays.asList(leftExpr.get(), rightExpr.get()), SqlParserPos.ZERO)));
+ return new ExpressionConverter().convert(whenExpr).map(optional ->
new SqlBasicCall(SqlStdOperatorTable.EQUALS, Arrays.asList(leftExpr.get(),
rightExpr.get()), SqlParserPos.ZERO));
}
+ return Optional.empty();
}
}
diff --git
a/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussStatementSQLVisitor.java
b/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussStatementSQLVisitor.java
index 9c755dd5023..2d30493d2ef 100644
---
a/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussStatementSQLVisitor.java
+++
b/sql-parser/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussStatementSQLVisitor.java
@@ -128,7 +128,7 @@ import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.OnDupl
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.combine.CombineSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BetweenExpression;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BinaryOperationExpression;
-import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.CaseWhenSegment;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.CaseWhenExpression;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExistsSubqueryExpression;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.FunctionSegment;
@@ -406,15 +406,15 @@ public abstract class OpenGaussStatementSQLVisitor
extends OpenGaussStatementBas
@Override
public ASTNode visitCaseExpr(final CaseExprContext ctx) {
- Collection<ExpressionSegment> whenList = new LinkedList<>();
- Collection<ExpressionSegment> thenList = new LinkedList<>();
+ Collection<ExpressionSegment> whenExprs = new LinkedList<>();
+ Collection<ExpressionSegment> thenExprs = new LinkedList<>();
for (WhenClauseContext each : ctx.whenClauseList().whenClause()) {
- whenList.add((ExpressionSegment) visit(each.aExpr(0)));
- thenList.add((ExpressionSegment) visit(each.aExpr(1)));
+ whenExprs.add((ExpressionSegment) visit(each.aExpr(0)));
+ thenExprs.add((ExpressionSegment) visit(each.aExpr(1)));
}
- ExpressionSegment argExpression = null == ctx.caseArg() ? null :
(ExpressionSegment) visit(ctx.caseArg().aExpr());
- ExpressionSegment elseExpression = null == ctx.caseDefault() ? null :
(ExpressionSegment) visit(ctx.caseDefault().aExpr());
- return new CaseWhenSegment(ctx.getStart().getStartIndex(),
ctx.getStop().getStopIndex(), argExpression, whenList, thenList,
elseExpression);
+ ExpressionSegment caseExpr = null == ctx.caseArg() ? null :
(ExpressionSegment) visit(ctx.caseArg().aExpr());
+ ExpressionSegment elseExpr = null == ctx.caseDefault() ? null :
(ExpressionSegment) visit(ctx.caseDefault().aExpr());
+ return new CaseWhenExpression(ctx.getStart().getStartIndex(),
ctx.getStop().getStopIndex(), caseExpr, whenExprs, thenExprs, elseExpr);
}
@Override
@@ -1090,8 +1090,8 @@ public abstract class OpenGaussStatementSQLVisitor
extends OpenGaussStatementBas
if (projection instanceof LiteralExpressionSegment) {
return Optional.of(new
ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(),
getOriginalText(expr), (LiteralExpressionSegment) projection));
}
- if (projection instanceof CaseWhenSegment) {
- return Optional.of(new
ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(),
getOriginalText(expr), (CaseWhenSegment) projection));
+ if (projection instanceof CaseWhenExpression) {
+ return Optional.of(new
ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(),
getOriginalText(expr), (CaseWhenExpression) projection));
}
return Optional.empty();
}
diff --git
a/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLStatementSQLVisitor.java
b/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLStatementSQLVisitor.java
index 2d346ffa0e2..8d3c6bb3f51 100644
---
a/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLStatementSQLVisitor.java
+++
b/sql-parser/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLStatementSQLVisitor.java
@@ -128,7 +128,7 @@ import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.OnDupl
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.combine.CombineSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BetweenExpression;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BinaryOperationExpression;
-import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.CaseWhenSegment;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.CaseWhenExpression;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExistsSubqueryExpression;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.FunctionSegment;
@@ -403,15 +403,15 @@ public abstract class PostgreSQLStatementSQLVisitor
extends PostgreSQLStatementP
@Override
public ASTNode visitCaseExpr(final CaseExprContext ctx) {
- Collection<ExpressionSegment> whenList = new LinkedList<>();
- Collection<ExpressionSegment> thenList = new LinkedList<>();
+ Collection<ExpressionSegment> whenExprs = new LinkedList<>();
+ Collection<ExpressionSegment> thenExprs = new LinkedList<>();
for (WhenClauseContext each : ctx.whenClauseList().whenClause()) {
- whenList.add((ExpressionSegment) visit(each.aExpr(0)));
- thenList.add((ExpressionSegment) visit(each.aExpr(1)));
+ whenExprs.add((ExpressionSegment) visit(each.aExpr(0)));
+ thenExprs.add((ExpressionSegment) visit(each.aExpr(1)));
}
- ExpressionSegment argExpression = null == ctx.caseArg() ? null :
(ExpressionSegment) visit(ctx.caseArg().aExpr());
- ExpressionSegment elseExpression = null == ctx.caseDefault() ? null :
(ExpressionSegment) visit(ctx.caseDefault().aExpr());
- return new CaseWhenSegment(ctx.getStart().getStartIndex(),
ctx.getStop().getStopIndex(), argExpression, whenList, thenList,
elseExpression);
+ ExpressionSegment caseExpr = null == ctx.caseArg() ? null :
(ExpressionSegment) visit(ctx.caseArg().aExpr());
+ ExpressionSegment elseExpr = null == ctx.caseDefault() ? null :
(ExpressionSegment) visit(ctx.caseDefault().aExpr());
+ return new CaseWhenExpression(ctx.getStart().getStartIndex(),
ctx.getStop().getStopIndex(), caseExpr, whenExprs, thenExprs, elseExpr);
}
@Override
@@ -1057,8 +1057,8 @@ public abstract class PostgreSQLStatementSQLVisitor
extends PostgreSQLStatementP
if (projection instanceof LiteralExpressionSegment) {
return Optional.of(new
ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(),
getOriginalText(expr), (LiteralExpressionSegment) projection));
}
- if (projection instanceof CaseWhenSegment) {
- return Optional.of(new
ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(),
getOriginalText(expr), (CaseWhenSegment) projection));
+ if (projection instanceof CaseWhenExpression) {
+ return Optional.of(new
ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(),
getOriginalText(expr), (CaseWhenExpression) projection));
}
return Optional.empty();
}
diff --git
a/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/expr/CaseWhenSegment.java
b/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/expr/CaseWhenExpression.java
similarity index 79%
rename from
sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/expr/CaseWhenSegment.java
rename to
sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/expr/CaseWhenExpression.java
index b6a8ddb4456..81368d6c790 100644
---
a/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/expr/CaseWhenSegment.java
+++
b/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/expr/CaseWhenExpression.java
@@ -24,22 +24,22 @@ import lombok.ToString;
import java.util.Collection;
/**
- * Case when segment.
+ * Case when expression.
*/
@RequiredArgsConstructor
@Getter
@ToString
-public final class CaseWhenSegment implements ExpressionSegment {
+public final class CaseWhenExpression implements ExpressionSegment {
private final int startIndex;
private final int stopIndex;
- private final ExpressionSegment caseArg;
+ private final ExpressionSegment caseExpr;
- private final Collection<ExpressionSegment> whenList;
+ private final Collection<ExpressionSegment> whenExprs;
- private final Collection<ExpressionSegment> thenList;
+ private final Collection<ExpressionSegment> thenExprs;
- private final ExpressionSegment elseExpression;
+ private final ExpressionSegment elseExpr;
}
diff --git
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/expression/ExpressionAssert.java
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/expression/ExpressionAssert.java
index b29f88d9828..49a9fe1c6a2 100644
---
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/expression/ExpressionAssert.java
+++
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/expression/ExpressionAssert.java
@@ -22,7 +22,7 @@ import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BetweenExpression;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BinaryOperationExpression;
-import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.CaseWhenSegment;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.CaseWhenExpression;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.CollateExpression;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExistsSubqueryExpression;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
@@ -334,19 +334,19 @@ public final class ExpressionAssert {
* @param actual actual case when expression
* @param expected expected case when expression
*/
- public static void assertCaseWhenExpression(final SQLCaseAssertContext
assertContext, final CaseWhenSegment actual, final ExpectedCaseWhenExpression
expected) {
- assertThat(assertContext.getText("When list size is not same!"),
actual.getWhenList().size(), is(expected.getWhenList().size()));
- assertThat(assertContext.getText("Then list size is not same!"),
actual.getThenList().size(), is(expected.getThenList().size()));
- Iterator<ExpectedExpression> whenListIterator =
expected.getWhenList().iterator();
- for (ExpressionSegment each : actual.getWhenList()) {
- assertExpression(assertContext, each, whenListIterator.next());
+ public static void assertCaseWhenExpression(final SQLCaseAssertContext
assertContext, final CaseWhenExpression actual, final
ExpectedCaseWhenExpression expected) {
+ assertThat(assertContext.getText("When list size is not same!"),
actual.getWhenExprs().size(), is(expected.getWhenExprs().size()));
+ assertThat(assertContext.getText("Then list size is not same!"),
actual.getThenExprs().size(), is(expected.getThenExprs().size()));
+ Iterator<ExpectedExpression> whenExprsIterator =
expected.getWhenExprs().iterator();
+ for (ExpressionSegment each : actual.getWhenExprs()) {
+ assertExpression(assertContext, each, whenExprsIterator.next());
}
- Iterator<ExpectedExpression> thenListIterator =
expected.getThenList().iterator();
- for (ExpressionSegment each : actual.getThenList()) {
- assertExpression(assertContext, each, thenListIterator.next());
+ Iterator<ExpectedExpression> thenExprsIterator =
expected.getThenExprs().iterator();
+ for (ExpressionSegment each : actual.getThenExprs()) {
+ assertExpression(assertContext, each, thenExprsIterator.next());
}
- assertExpression(assertContext, actual.getCaseArg(),
expected.getCaseArg());
- assertExpression(assertContext, actual.getElseExpression(),
expected.getElseExpr());
+ assertExpression(assertContext, actual.getCaseExpr(),
expected.getCaseExpr());
+ assertExpression(assertContext, actual.getElseExpr(),
expected.getElseExpr());
}
/**
@@ -397,8 +397,8 @@ public final class ExpressionAssert {
assertFunction(assertContext, (FunctionSegment) actual,
expected.getFunction());
} else if (actual instanceof CollateExpression) {
assertCollateExpression(assertContext, (CollateExpression) actual,
expected.getCollateExpression());
- } else if (actual instanceof CaseWhenSegment) {
- assertCaseWhenExpression(assertContext, (CaseWhenSegment) actual,
expected.getCaseWhenExpression());
+ } else if (actual instanceof CaseWhenExpression) {
+ assertCaseWhenExpression(assertContext, (CaseWhenExpression)
actual, expected.getCaseWhenExpression());
} else {
throw new UnsupportedOperationException(String.format("Unsupported
expression: %s", actual.getClass().getName()));
}
diff --git
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/jaxb/segment/impl/expr/ExpectedCaseWhenExpression.java
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/jaxb/segment/impl/expr/ExpectedCaseWhenExpression.java
index e8d630c190a..f308b9270d4 100644
---
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/jaxb/segment/impl/expr/ExpectedCaseWhenExpression.java
+++
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/jaxb/segment/impl/expr/ExpectedCaseWhenExpression.java
@@ -26,21 +26,21 @@ import java.util.LinkedList;
import java.util.List;
/**
- * Expected case when in expression.
+ * Expected case when expression.
*/
@Getter
@Setter
public final class ExpectedCaseWhenExpression extends
AbstractExpectedSQLSegment implements ExpectedExpressionSegment {
- @XmlElement(name = "case-arg")
- private ExpectedExpression caseArg;
+ @XmlElement(name = "case-expr")
+ private ExpectedExpression caseExpr;
- @XmlElement(name = "when-list")
- private final List<ExpectedExpression> whenList = new LinkedList<>();
+ @XmlElement(name = "when-exprs")
+ private final List<ExpectedExpression> whenExprs = new LinkedList<>();
- @XmlElement(name = "then-list")
- private final List<ExpectedExpression> thenList = new LinkedList<>();
+ @XmlElement(name = "then-exprs")
+ private final List<ExpectedExpression> thenExprs = new LinkedList<>();
- @XmlElement(name = "else-expression")
+ @XmlElement(name = "else-expr")
private ExpectedExpression elseExpr;
}
diff --git a/test/parser/src/main/resources/case/dml/select-expression.xml
b/test/parser/src/main/resources/case/dml/select-expression.xml
index 9a4663f358a..92a9899ccbb 100644
--- a/test/parser/src/main/resources/case/dml/select-expression.xml
+++ b/test/parser/src/main/resources/case/dml/select-expression.xml
@@ -1897,18 +1897,18 @@
<expression-projection start-index="13" stop-index="56" text="CASE
order_id WHEN 1 THEN '11' ELSE '00' END">
<expr>
<case-when-expression>
- <case-arg>
+ <case-expr>
<column name="order_id" start-index="18"
stop-index="25" />
- </case-arg>
- <when-list>
+ </case-expr>
+ <when-exprs>
<literal-expression value="1" start-index="32"
stop-index="32" />
- </when-list>
- <then-list>
+ </when-exprs>
+ <then-exprs>
<literal-expression value="11" start-index="39"
stop-index="42" />
- </then-list>
- <else-expression>
+ </then-exprs>
+ <else-expr>
<literal-expression value="00" start-index="49"
stop-index="52" />
- </else-expression>
+ </else-expr>
</case-when-expression>
</expr>
</expression-projection>
@@ -1928,18 +1928,18 @@
<expression-projection start-index="7" stop-index="50" text="CASE
order_id WHEN 1 THEN '11' ELSE '00' END">
<expr>
<case-when-expression>
- <case-arg>
+ <case-expr>
<column name="order_id" start-index="12"
stop-index="19" />
- </case-arg>
- <when-list>
+ </case-expr>
+ <when-exprs>
<literal-expression value="1" start-index="26"
stop-index="26" />
- </when-list>
- <then-list>
+ </when-exprs>
+ <then-exprs>
<literal-expression value="11" start-index="33"
stop-index="36" />
- </then-list>
- <else-expression>
+ </then-exprs>
+ <else-expr>
<literal-expression value="00" start-index="43"
stop-index="46" />
- </else-expression>
+ </else-expr>
</case-when-expression>
</expr>
</expression-projection>