You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by su...@apache.org on 2022/11/30 10:12:20 UTC
[shardingsphere] branch master updated: Refactor CaseWhenExpression parse logic (#22535)
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 <du...@apache.org>
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>