This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 2c7ff0bdd0e Support Left and Right Joins Using the Plus (+) Sign in
Oracle. (#28417)
2c7ff0bdd0e is described below
commit 2c7ff0bdd0e86435837f2b442937b0ed0f89057e
Author: Cong Hu <[email protected]>
AuthorDate: Tue Sep 12 17:05:50 2023 +0800
Support Left and Right Joins Using the Plus (+) Sign in Oracle. (#28417)
---
.../segment/dml/expr/simple/ColumnWithJoinOperatorSegment.java | 3 ++-
.../shardingsphere/sql/parser/sql/common/util/ColumnExtractor.java | 7 +++++++
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/expr/simple/ColumnWithJoinOperatorSegment.java
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/expr/simple/ColumnWithJoinOperatorSegment.java
index 2959c6ded31..66e8be1f1b1 100644
---
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/expr/simple/ColumnWithJoinOperatorSegment.java
+++
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/expr/simple/ColumnWithJoinOperatorSegment.java
@@ -20,13 +20,14 @@ package
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
/**
* Column with join operator segment.
*/
@RequiredArgsConstructor
@Getter
-public class ColumnWithJoinOperatorSegment implements SimpleExpressionSegment {
+public class ColumnWithJoinOperatorSegment implements ExpressionSegment {
private final int startIndex;
diff --git
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/util/ColumnExtractor.java
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/util/ColumnExtractor.java
index f0ddac8045c..b4be86f36c6 100644
---
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/util/ColumnExtractor.java
+++
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/util/ColumnExtractor.java
@@ -24,6 +24,7 @@ import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BetweenE
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BinaryOperationExpression;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.InExpression;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.ColumnWithJoinOperatorSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.predicate.AndPredicate;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.predicate.WhereSegment;
@@ -51,6 +52,12 @@ public final class ColumnExtractor {
if (((BinaryOperationExpression) expression).getRight() instanceof
ColumnSegment) {
result.add((ColumnSegment) ((BinaryOperationExpression)
expression).getRight());
}
+ if (((BinaryOperationExpression) expression).getLeft() instanceof
ColumnWithJoinOperatorSegment) {
+ result.add(((ColumnWithJoinOperatorSegment)
((BinaryOperationExpression) expression).getLeft()).getColumnName());
+ }
+ if (((BinaryOperationExpression) expression).getRight() instanceof
ColumnWithJoinOperatorSegment) {
+ result.add(((ColumnWithJoinOperatorSegment)
((BinaryOperationExpression) expression).getRight()).getColumnName());
+ }
}
if (expression instanceof InExpression && ((InExpression)
expression).getLeft() instanceof ColumnSegment) {
result.add((ColumnSegment) ((InExpression) expression).getLeft());