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 83fe25fdb50 Correct OuterJoinExpression getText logic and add text
assertion in sql parse test case (#31215)
83fe25fdb50 is described below
commit 83fe25fdb509039d2fbdf87c9f7e27032ab5cb8a
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Sun May 12 15:09:45 2024 +0800
Correct OuterJoinExpression getText logic and add text assertion in sql
parse test case (#31215)
---
.../parser/oracle/visitor/statement/OracleStatementVisitor.java | 2 +-
.../sql/dialect/segment/oracle/join/OuterJoinExpression.java | 4 +++-
.../asserts/segment/column/OuterJoinExpressionAssert.java | 5 ++++-
.../jaxb/segment/impl/expr/ExpectedOuterJoinExpression.java | 3 +++
test/it/parser/src/main/resources/case/ddl/create-view.xml | 8 ++++----
test/it/parser/src/main/resources/case/dml/select-join.xml | 2 +-
6 files changed, 16 insertions(+), 8 deletions(-)
diff --git
a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java
b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java
index 0b171b968ef..e21c72f7937 100644
---
a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java
+++
b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java
@@ -625,7 +625,7 @@ public abstract class OracleStatementVisitor extends
OracleStatementBaseVisitor<
}
if (null != ctx.columnName()) {
return null == ctx.joinOperator() ? visit(ctx.columnName())
- : new OuterJoinExpression(startIndex, stopIndex,
(ColumnSegment) visitColumnName(ctx.columnName()),
ctx.joinOperator().getText());
+ : new OuterJoinExpression(startIndex, stopIndex,
(ColumnSegment) visitColumnName(ctx.columnName()),
ctx.joinOperator().getText(), getOriginalText(ctx));
}
if (null != ctx.privateExprOfDb()) {
return visit(ctx.privateExprOfDb());
diff --git
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/segment/oracle/join/OuterJoinExpression.java
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/segment/oracle/join/OuterJoinExpression.java
index fb28bcb9eec..8c8f6cfd51d 100644
---
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/segment/oracle/join/OuterJoinExpression.java
+++
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/segment/oracle/join/OuterJoinExpression.java
@@ -37,8 +37,10 @@ public class OuterJoinExpression implements
ExpressionSegment {
private final String joinOperator;
+ private final String text;
+
@Override
public String getText() {
- return getColumnName().toString();
+ return text;
}
}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/column/OuterJoinExpressionAssert.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/column/OuterJoinExpressionAssert.java
index a4d6deb188d..ef883d67fff 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/column/OuterJoinExpressionAssert.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/column/OuterJoinExpressionAssert.java
@@ -21,6 +21,7 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.sql.parser.sql.dialect.segment.oracle.join.OuterJoinExpression;
import
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.SQLSegmentAssert;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.expr.ExpectedOuterJoinExpression;
import static org.hamcrest.CoreMatchers.is;
@@ -42,6 +43,8 @@ public final class OuterJoinExpressionAssert {
*/
public static void assertIs(final SQLCaseAssertContext assertContext,
final OuterJoinExpression actual, final ExpectedOuterJoinExpression expected) {
ColumnAssert.assertIs(assertContext, actual.getColumnName(),
expected.getColumn());
- assertThat(actual.getJoinOperator(), is(expected.getJoinOperator()));
+ assertThat(assertContext.getText("Outer join expression join operator
assertion error: "), actual.getJoinOperator(), is(expected.getJoinOperator()));
+ assertThat(assertContext.getText("Outer join expression text assertion
error: "), actual.getText(), is(expected.getText()));
+ SQLSegmentAssert.assertIs(assertContext, actual, expected);
}
}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/expr/ExpectedOuterJoinExpression.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/expr/ExpectedOuterJoinExpression.java
index 6e94e8e0d69..60dbb82dcf7 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/expr/ExpectedOuterJoinExpression.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/expr/ExpectedOuterJoinExpression.java
@@ -22,6 +22,7 @@ import lombok.Setter;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.AbstractExpectedSQLSegment;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.column.ExpectedColumn;
+import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
/**
@@ -37,4 +38,6 @@ public final class ExpectedOuterJoinExpression extends
AbstractExpectedSQLSegmen
@XmlElement(name = "join-operator")
private String joinOperator;
+ @XmlAttribute
+ private String text;
}
diff --git a/test/it/parser/src/main/resources/case/ddl/create-view.xml
b/test/it/parser/src/main/resources/case/ddl/create-view.xml
index 077655e596c..3b5c93f0e2f 100644
--- a/test/it/parser/src/main/resources/case/ddl/create-view.xml
+++ b/test/it/parser/src/main/resources/case/ddl/create-view.xml
@@ -206,7 +206,7 @@
</column>
</left>
<right>
- <outer-join-expression>
+ <outer-join-expression start-index="130"
stop-index="145" text="m.planet_name(+)">
<column name="planet_name"
start-index="130" stop-index="142">
<owner name="m" start-index="130"
stop-index="130" />
</column>
@@ -219,7 +219,7 @@
<right>
<binary-operation-expression start-index="151"
stop-index="174">
<left>
- <outer-join-expression>
+ <outer-join-expression start-index="151"
stop-index="159" text="m.name(+)">
<column name="name" start-index="151"
stop-index="156">
<owner name="m" start-index="151"
stop-index="151" />
</column>
@@ -583,7 +583,7 @@
</column>
</left>
<right>
- <outer-join-expression>
+ <outer-join-expression start-index="91"
stop-index="102" text="d.deptno (+)">
<column name="deptno" start-index="91"
stop-index="98">
<owner name="d" start-index="91"
stop-index="91" />
</column>
@@ -708,7 +708,7 @@
<expr>
<binary-operation-expression start-index="103"
stop-index="125">
<left>
- <outer-join-expression>
+ <outer-join-expression start-index="103"
stop-index="114" text="e.deptno (+)">
<column name="deptno" start-index="103"
stop-index="110">
<owner name="e" start-index="103"
stop-index="103" />
</column>
diff --git a/test/it/parser/src/main/resources/case/dml/select-join.xml
b/test/it/parser/src/main/resources/case/dml/select-join.xml
index 8be0db91320..2d32fb4713d 100644
--- a/test/it/parser/src/main/resources/case/dml/select-join.xml
+++ b/test/it/parser/src/main/resources/case/dml/select-join.xml
@@ -574,7 +574,7 @@
<expr>
<binary-operation-expression start-index="47" stop-index="72">
<left>
- <outer-join-expression start-index="47"
stop-index="48">
+ <outer-join-expression start-index="47"
stop-index="59" text="o.order_id(+)">
<column name="order_id" start-index="47"
stop-index="56">
<owner name="o" start-index="47"
stop-index="47" />
</column>