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 d88bb11ad09 Refactor ExpressionSegmentBinder (#32090)
d88bb11ad09 is described below
commit d88bb11ad09debb6034cac1f3d0b09513077ee5f
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Jul 13 15:46:39 2024 +0800
Refactor ExpressionSegmentBinder (#32090)
* Refactor ExpressionSegmentBinder
* Refactor ExpressionSegmentBinder
* Refactor ExpressionSegmentBinder
---
.../segment/assign/AssignmentSegmentBinder.java | 2 +-
.../segment/column/InsertColumnsSegmentBinder.java | 2 +-
.../expression/ExpressionSegmentBinder.java | 18 +++----
.../impl/SubqueryExpressionSegmentBinder.java | 46 -----------------
.../BinaryOperationExpressionBinder.java | 4 +-
.../{impl => type}/ColumnSegmentBinder.java | 2 +-
.../ExistsSubqueryExpressionBinder.java | 4 +-
.../FunctionExpressionSegmentBinder.java | 13 +++--
.../{impl => type}/InExpressionBinder.java | 2 +-
.../{impl => type}/NotExpressionBinder.java | 6 +--
.../{impl => type}/SubquerySegmentBinder.java | 2 +-
.../segment/from/type/JoinTableSegmentBinder.java | 2 +-
.../binder/segment/lock/LockSegmentBinder.java | 2 +-
.../type/ColumnProjectionSegmentBinder.java | 2 +-
.../type/SubqueryProjectionSegmentBinder.java | 2 +-
.../with/CommonTableExpressionSegmentBinder.java | 2 +-
.../statement/dml/InsertStatementBinder.java | 2 +-
.../impl/SubqueryExpressionSegmentBinderTest.java | 60 ----------------------
.../BinaryOperationExpressionBinderTest.java | 2 +-
.../{impl => type}/ColumnSegmentBinderTest.java | 2 +-
.../ExistsSubqueryExpressionBinderTest.java | 2 +-
.../FunctionExpressionSegmentBinderTest.java | 2 +-
.../{impl => type}/InExpressionBinderTest.java | 5 +-
.../{impl => type}/NotExpressionBinderTest.java | 2 +-
.../{impl => type}/SubquerySegmentBinderTest.java | 14 ++---
25 files changed, 47 insertions(+), 155 deletions(-)
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/assign/AssignmentSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/assign/AssignmentSegmentBinder.java
index e97c18e2d53..545af242184 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/assign/AssignmentSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/assign/AssignmentSegmentBinder.java
@@ -21,7 +21,7 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.infra.binder.segment.SegmentType;
import
org.apache.shardingsphere.infra.binder.segment.expression.ExpressionSegmentBinder;
-import
org.apache.shardingsphere.infra.binder.segment.expression.impl.ColumnSegmentBinder;
+import
org.apache.shardingsphere.infra.binder.segment.expression.type.ColumnSegmentBinder;
import
org.apache.shardingsphere.infra.binder.segment.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.statement.SQLStatementBinderContext;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.assignment.ColumnAssignmentSegment;
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/column/InsertColumnsSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/column/InsertColumnsSegmentBinder.java
index 23c5ab15ec5..783a450f6aa 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/column/InsertColumnsSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/column/InsertColumnsSegmentBinder.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.infra.binder.segment.column;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.infra.binder.segment.SegmentType;
-import
org.apache.shardingsphere.infra.binder.segment.expression.impl.ColumnSegmentBinder;
+import
org.apache.shardingsphere.infra.binder.segment.expression.type.ColumnSegmentBinder;
import
org.apache.shardingsphere.infra.binder.segment.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.statement.SQLStatementBinderContext;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/ExpressionSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/ExpressionSegmentBinder.java
index 28aa5769b41..54706c31d1d 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/ExpressionSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/ExpressionSegmentBinder.java
@@ -20,13 +20,13 @@ package
org.apache.shardingsphere.infra.binder.segment.expression;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.infra.binder.segment.SegmentType;
-import
org.apache.shardingsphere.infra.binder.segment.expression.impl.BinaryOperationExpressionBinder;
-import
org.apache.shardingsphere.infra.binder.segment.expression.impl.ColumnSegmentBinder;
-import
org.apache.shardingsphere.infra.binder.segment.expression.impl.ExistsSubqueryExpressionBinder;
-import
org.apache.shardingsphere.infra.binder.segment.expression.impl.FunctionExpressionSegmentBinder;
-import
org.apache.shardingsphere.infra.binder.segment.expression.impl.InExpressionBinder;
-import
org.apache.shardingsphere.infra.binder.segment.expression.impl.NotExpressionBinder;
-import
org.apache.shardingsphere.infra.binder.segment.expression.impl.SubqueryExpressionSegmentBinder;
+import
org.apache.shardingsphere.infra.binder.segment.expression.type.BinaryOperationExpressionBinder;
+import
org.apache.shardingsphere.infra.binder.segment.expression.type.ColumnSegmentBinder;
+import
org.apache.shardingsphere.infra.binder.segment.expression.type.ExistsSubqueryExpressionBinder;
+import
org.apache.shardingsphere.infra.binder.segment.expression.type.FunctionExpressionSegmentBinder;
+import
org.apache.shardingsphere.infra.binder.segment.expression.type.InExpressionBinder;
+import
org.apache.shardingsphere.infra.binder.segment.expression.type.NotExpressionBinder;
+import
org.apache.shardingsphere.infra.binder.segment.expression.type.SubquerySegmentBinder;
import
org.apache.shardingsphere.infra.binder.segment.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.statement.SQLStatementBinderContext;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
@@ -69,7 +69,7 @@ public final class ExpressionSegmentBinder {
Map<String, TableSegmentBinderContext> newOuterTableBinderContexts
= new LinkedHashMap<>();
newOuterTableBinderContexts.putAll(outerTableBinderContexts);
newOuterTableBinderContexts.putAll(tableBinderContexts);
- return
SubqueryExpressionSegmentBinder.bind((SubqueryExpressionSegment) segment,
binderContext, newOuterTableBinderContexts);
+ return new
SubqueryExpressionSegment(SubquerySegmentBinder.bind(((SubqueryExpressionSegment)
segment).getSubquery(), binderContext, newOuterTableBinderContexts));
}
if (segment instanceof InExpression) {
return InExpressionBinder.bind((InExpression) segment,
parentSegmentType, binderContext, tableBinderContexts,
outerTableBinderContexts);
@@ -83,7 +83,7 @@ public final class ExpressionSegmentBinder {
if (segment instanceof FunctionSegment) {
return FunctionExpressionSegmentBinder.bind((FunctionSegment)
segment, parentSegmentType, binderContext, tableBinderContexts,
outerTableBinderContexts);
}
- // TODO support more ExpressionSegment bind
+ // TODO support more ExpressionSegment bound
return segment;
}
}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/SubqueryExpressionSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/SubqueryExpressionSegmentBinder.java
deleted file mode 100644
index 3baa1c464af..00000000000
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/SubqueryExpressionSegmentBinder.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.infra.binder.segment.expression.impl;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import
org.apache.shardingsphere.infra.binder.segment.from.context.TableSegmentBinderContext;
-import
org.apache.shardingsphere.infra.binder.statement.SQLStatementBinderContext;
-import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.subquery.SubqueryExpressionSegment;
-
-import java.util.Map;
-
-/**
- * Subquery expression segment binder.
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class SubqueryExpressionSegmentBinder {
-
- /**
- * Bind subquery expression segment.
- *
- * @param segment subquery expression segment
- * @param binderContext SQL statement binder context
- * @param tableBinderContexts table binder contexts
- * @return bound subquery expression segment
- */
- public static SubqueryExpressionSegment bind(final
SubqueryExpressionSegment segment, final SQLStatementBinderContext
binderContext,
- final Map<String,
TableSegmentBinderContext> tableBinderContexts) {
- return new
SubqueryExpressionSegment(SubquerySegmentBinder.bind(segment.getSubquery(),
binderContext, tableBinderContexts));
- }
-}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/BinaryOperationExpressionBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/BinaryOperationExpressionBinder.java
similarity index 97%
rename from
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/BinaryOperationExpressionBinder.java
rename to
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/BinaryOperationExpressionBinder.java
index 9cfa5f44236..38b9e75c21f 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/BinaryOperationExpressionBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/BinaryOperationExpressionBinder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.binder.segment.expression.impl;
+package org.apache.shardingsphere.infra.binder.segment.expression.type;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
@@ -35,7 +35,7 @@ import java.util.Map;
public final class BinaryOperationExpressionBinder {
/**
- * Bind binary operation expression with metadata.
+ * Bind binary operation expression.
*
* @param segment binary operation expression segment
* @param parentSegmentType parent segment type
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/ColumnSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/ColumnSegmentBinder.java
similarity index 99%
rename from
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/ColumnSegmentBinder.java
rename to
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/ColumnSegmentBinder.java
index a30447d269a..16880e73d98 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/ColumnSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/ColumnSegmentBinder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.binder.segment.expression.impl;
+package org.apache.shardingsphere.infra.binder.segment.expression.type;
import com.google.common.base.Strings;
import lombok.AccessLevel;
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/ExistsSubqueryExpressionBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/ExistsSubqueryExpressionBinder.java
similarity index 97%
rename from
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/ExistsSubqueryExpressionBinder.java
rename to
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/ExistsSubqueryExpressionBinder.java
index 450db44d563..050fe98d430 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/ExistsSubqueryExpressionBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/ExistsSubqueryExpressionBinder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.binder.segment.expression.impl;
+package org.apache.shardingsphere.infra.binder.segment.expression.type;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
@@ -33,7 +33,7 @@ import java.util.Map;
public final class ExistsSubqueryExpressionBinder {
/**
- * Bind exists subquery expression with metadata.
+ * Bind exists subquery expression.
*
* @param segment exists subquery expression segment
* @param binderContext SQL statement binder context
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/FunctionExpressionSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/FunctionExpressionSegmentBinder.java
similarity index 85%
rename from
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/FunctionExpressionSegmentBinder.java
rename to
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/FunctionExpressionSegmentBinder.java
index 157be3e2640..a10b1cfceb9 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/FunctionExpressionSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/FunctionExpressionSegmentBinder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.binder.segment.expression.impl;
+package org.apache.shardingsphere.infra.binder.segment.expression.type;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
@@ -23,10 +23,10 @@ import
org.apache.shardingsphere.infra.binder.segment.SegmentType;
import
org.apache.shardingsphere.infra.binder.segment.expression.ExpressionSegmentBinder;
import
org.apache.shardingsphere.infra.binder.segment.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.statement.SQLStatementBinderContext;
-import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.ExpressionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.FunctionSegment;
import java.util.Map;
+import java.util.stream.Collectors;
/**
* Function expression binder.
@@ -35,22 +35,21 @@ import java.util.Map;
public final class FunctionExpressionSegmentBinder {
/**
- * Bind function expression with metadata.
+ * Bind function expression.
*
* @param segment function expression segment
* @param parentSegmentType parent segment type
* @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @param outerTableBinderContexts outer table binder contexts
- * @return function segment
+ * @return bound function segment
*/
public static FunctionSegment bind(final FunctionSegment segment, final
SegmentType parentSegmentType, final SQLStatementBinderContext binderContext,
final Map<String,
TableSegmentBinderContext> tableBinderContexts, final Map<String,
TableSegmentBinderContext> outerTableBinderContexts) {
FunctionSegment result = new FunctionSegment(segment.getStartIndex(),
segment.getStopIndex(), segment.getFunctionName(), segment.getText());
result.setOwner(segment.getOwner());
- for (ExpressionSegment each : segment.getParameters()) {
- result.getParameters().add(ExpressionSegmentBinder.bind(each,
parentSegmentType, binderContext, tableBinderContexts,
outerTableBinderContexts));
- }
+ result.getParameters().addAll(segment.getParameters().stream()
+ .map(each -> ExpressionSegmentBinder.bind(each,
parentSegmentType, binderContext, tableBinderContexts,
outerTableBinderContexts)).collect(Collectors.toList()));
return result;
}
}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/InExpressionBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/InExpressionBinder.java
similarity index 99%
rename from
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/InExpressionBinder.java
rename to
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/InExpressionBinder.java
index d416b98e921..f0d3d228426 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/InExpressionBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/InExpressionBinder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.binder.segment.expression.impl;
+package org.apache.shardingsphere.infra.binder.segment.expression.type;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/NotExpressionBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/NotExpressionBinder.java
similarity index 92%
rename from
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/NotExpressionBinder.java
rename to
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/NotExpressionBinder.java
index 61397019bef..1b48d82632b 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/NotExpressionBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/NotExpressionBinder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.binder.segment.expression.impl;
+package org.apache.shardingsphere.infra.binder.segment.expression.type;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
@@ -44,8 +44,8 @@ public final class NotExpressionBinder {
* @param tableBinderContexts table binder contexts
* @return bound not expression
*/
- public static NotExpression bind(final NotExpression segment, final
SegmentType parentSegmentType, final SQLStatementBinderContext binderContext,
- final Map<String,
TableSegmentBinderContext> tableBinderContexts) {
+ public static NotExpression bind(final NotExpression segment, final
SegmentType parentSegmentType,
+ final SQLStatementBinderContext
binderContext, final Map<String, TableSegmentBinderContext>
tableBinderContexts) {
ExpressionSegment boundExpression =
ExpressionSegmentBinder.bind(segment.getExpression(), parentSegmentType,
binderContext, tableBinderContexts, Collections.emptyMap());
return new NotExpression(segment.getStartIndex(),
segment.getStopIndex(), boundExpression, segment.getNotSign());
}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/SubquerySegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/SubquerySegmentBinder.java
similarity index 99%
rename from
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/SubquerySegmentBinder.java
rename to
infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/SubquerySegmentBinder.java
index 41de81d286f..c0b8f1a2bac 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/SubquerySegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/type/SubquerySegmentBinder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.binder.segment.expression.impl;
+package org.apache.shardingsphere.infra.binder.segment.expression.type;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/type/JoinTableSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/type/JoinTableSegmentBinder.java
index a91d5c99ade..5a5aa53a83e 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/type/JoinTableSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/type/JoinTableSegmentBinder.java
@@ -23,7 +23,7 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.infra.binder.segment.SegmentType;
import
org.apache.shardingsphere.infra.binder.segment.expression.ExpressionSegmentBinder;
-import
org.apache.shardingsphere.infra.binder.segment.expression.impl.ColumnSegmentBinder;
+import
org.apache.shardingsphere.infra.binder.segment.expression.type.ColumnSegmentBinder;
import org.apache.shardingsphere.infra.binder.segment.from.TableSegmentBinder;
import
org.apache.shardingsphere.infra.binder.segment.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.statement.SQLStatementBinderContext;
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/lock/LockSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/lock/LockSegmentBinder.java
index 4ce31c6a731..67ae5f28431 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/lock/LockSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/lock/LockSegmentBinder.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.infra.binder.segment.lock;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.infra.binder.segment.SegmentType;
-import
org.apache.shardingsphere.infra.binder.segment.expression.impl.ColumnSegmentBinder;
+import
org.apache.shardingsphere.infra.binder.segment.expression.type.ColumnSegmentBinder;
import
org.apache.shardingsphere.infra.binder.segment.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.statement.SQLStatementBinderContext;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.predicate.LockSegment;
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/type/ColumnProjectionSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/type/ColumnProjectionSegmentBinder.java
index 73ac0b2f445..5c661bdb918 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/type/ColumnProjectionSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/type/ColumnProjectionSegmentBinder.java
@@ -20,7 +20,7 @@ package
org.apache.shardingsphere.infra.binder.segment.projection.type;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.infra.binder.segment.SegmentType;
-import
org.apache.shardingsphere.infra.binder.segment.expression.impl.ColumnSegmentBinder;
+import
org.apache.shardingsphere.infra.binder.segment.expression.type.ColumnSegmentBinder;
import
org.apache.shardingsphere.infra.binder.segment.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.statement.SQLStatementBinderContext;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/type/SubqueryProjectionSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/type/SubqueryProjectionSegmentBinder.java
index a6343c98102..a7a7a193e85 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/type/SubqueryProjectionSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/type/SubqueryProjectionSegmentBinder.java
@@ -19,7 +19,7 @@ package
org.apache.shardingsphere.infra.binder.segment.projection.type;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import
org.apache.shardingsphere.infra.binder.segment.expression.impl.SubquerySegmentBinder;
+import
org.apache.shardingsphere.infra.binder.segment.expression.type.SubquerySegmentBinder;
import
org.apache.shardingsphere.infra.binder.segment.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.statement.SQLStatementBinderContext;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.subquery.SubquerySegment;
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/with/CommonTableExpressionSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/with/CommonTableExpressionSegmentBinder.java
index 59f569a4c71..f868ff2a688 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/with/CommonTableExpressionSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/with/CommonTableExpressionSegmentBinder.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.infra.binder.segment.with;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import
org.apache.shardingsphere.infra.binder.segment.expression.impl.SubquerySegmentBinder;
+import
org.apache.shardingsphere.infra.binder.segment.expression.type.SubquerySegmentBinder;
import
org.apache.shardingsphere.infra.binder.segment.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.statement.SQLStatementBinderContext;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.complex.CommonTableExpressionSegment;
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/InsertStatementBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/InsertStatementBinder.java
index 71925f476ff..0285f04fa88 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/InsertStatementBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/InsertStatementBinder.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.infra.binder.statement.dml;
import lombok.SneakyThrows;
import
org.apache.shardingsphere.infra.binder.segment.column.InsertColumnsSegmentBinder;
-import
org.apache.shardingsphere.infra.binder.segment.expression.impl.SubquerySegmentBinder;
+import
org.apache.shardingsphere.infra.binder.segment.expression.type.SubquerySegmentBinder;
import
org.apache.shardingsphere.infra.binder.segment.from.context.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.segment.from.type.SimpleTableSegmentBinder;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementBinder;
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/SubqueryExpressionSegmentBinderTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/SubqueryExpressionSegmentBinderTest.java
deleted file mode 100644
index fe7bbc4dfc3..00000000000
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/SubqueryExpressionSegmentBinderTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.infra.binder.segment.expression.impl;
-
-import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.subquery.SubqueryExpressionSegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.subquery.SubquerySegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.item.ProjectionsSegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.dml.SelectStatement;
-import
org.apache.shardingsphere.sql.parser.statement.sqlserver.dml.SQLServerSelectStatement;
-import
org.apache.shardingsphere.infra.binder.segment.from.context.TableSegmentBinderContext;
-import
org.apache.shardingsphere.infra.binder.statement.SQLStatementBinderContext;
-
-import org.junit.jupiter.api.Test;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.hamcrest.CoreMatchers.isA;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-class SubqueryExpressionSegmentBinderTest {
-
- @Test
- void assertBind() {
- SelectStatement selectStatement = new SQLServerSelectStatement();
- selectStatement.setProjections(new ProjectionsSegment(0, 0));
- SubquerySegment subquery = new SubquerySegment(0, 10, selectStatement,
"subquery");
- SubqueryExpressionSegment segment = new
SubqueryExpressionSegment(subquery);
- SQLStatementBinderContext binderContext = new
SQLStatementBinderContext(null, null, null, null);
- Map<String, TableSegmentBinderContext> tableBinderContexts = new
HashMap<>();
- SubqueryExpressionSegment actual =
SubqueryExpressionSegmentBinder.bind(segment, binderContext,
tableBinderContexts);
- SubqueryExpressionSegment expected = new
SubqueryExpressionSegment(SubquerySegmentBinder.bind(segment.getSubquery(),
binderContext, tableBinderContexts));
- assertThat(actual, isA(SubqueryExpressionSegment.class));
- assertThat(actual.getStartIndex(), is(expected.getStartIndex()));
- assertThat(actual.getStopIndex(), is(expected.getStopIndex()));
- assertThat(actual.getText(), is(expected.getText()));
- assertThat(actual.getSubquery().getStartIndex(),
is(expected.getSubquery().getStartIndex()));
- assertThat(actual.getSubquery().getStopIndex(),
is(expected.getSubquery().getStopIndex()));
- assertThat(actual.getSubquery().getSubqueryType(),
is(expected.getSubquery().getSubqueryType()));
- assertThat(actual.getSubquery().getText(),
is(expected.getSubquery().getText()));
- assertThat(actual.getSubquery().getSelect().getDatabaseType(),
is(expected.getSubquery().getSelect().getDatabaseType()));
-
assertThat(actual.getSubquery().getSelect().getProjections().getProjections(),
is(expected.getSubquery().getSelect().getProjections().getProjections()));
- }
-}
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/BinaryOperationExpressionBinderTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/BinaryOperationExpressionBinderTest.java
similarity index 99%
rename from
infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/BinaryOperationExpressionBinderTest.java
rename to
infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/BinaryOperationExpressionBinderTest.java
index d3937cccfbe..1f23575a61c 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/BinaryOperationExpressionBinderTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/BinaryOperationExpressionBinderTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.binder.segment.expression.impl;
+package org.apache.shardingsphere.infra.binder.segment.expression.type;
import org.apache.shardingsphere.infra.binder.segment.SegmentType;
import
org.apache.shardingsphere.infra.binder.statement.SQLStatementBinderContext;
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/ColumnSegmentBinderTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/ColumnSegmentBinderTest.java
similarity index 99%
rename from
infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/ColumnSegmentBinderTest.java
rename to
infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/ColumnSegmentBinderTest.java
index d4ce6decb40..630ba5e9cf3 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/ColumnSegmentBinderTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/ColumnSegmentBinderTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.binder.segment.expression.impl;
+package org.apache.shardingsphere.infra.binder.segment.expression.type;
import org.apache.shardingsphere.infra.binder.segment.SegmentType;
import
org.apache.shardingsphere.infra.binder.segment.from.context.type.SimpleTableSegmentBinderContext;
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/ExistsSubqueryExpressionBinderTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/ExistsSubqueryExpressionBinderTest.java
similarity index 99%
rename from
infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/ExistsSubqueryExpressionBinderTest.java
rename to
infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/ExistsSubqueryExpressionBinderTest.java
index e4033eaf4e7..51dc57d9cc2 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/ExistsSubqueryExpressionBinderTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/ExistsSubqueryExpressionBinderTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.binder.segment.expression.impl;
+package org.apache.shardingsphere.infra.binder.segment.expression.type;
import
org.apache.shardingsphere.infra.binder.statement.SQLStatementBinderContext;
import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/FunctionExpressionSegmentBinderTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/FunctionExpressionSegmentBinderTest.java
similarity index 99%
rename from
infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/FunctionExpressionSegmentBinderTest.java
rename to
infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/FunctionExpressionSegmentBinderTest.java
index 4b5aad0069e..b2182c2ebcb 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/FunctionExpressionSegmentBinderTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/FunctionExpressionSegmentBinderTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.binder.segment.expression.impl;
+package org.apache.shardingsphere.infra.binder.segment.expression.type;
import org.apache.shardingsphere.infra.binder.segment.SegmentType;
import
org.apache.shardingsphere.infra.binder.statement.SQLStatementBinderContext;
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/InExpressionBinderTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/InExpressionBinderTest.java
similarity index 94%
rename from
infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/InExpressionBinderTest.java
rename to
infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/InExpressionBinderTest.java
index ac0eacea22f..dbad5937bcf 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/InExpressionBinderTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/InExpressionBinderTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.binder.segment.expression.impl;
+package org.apache.shardingsphere.infra.binder.segment.expression.type;
import org.apache.shardingsphere.infra.binder.segment.SegmentType;
import
org.apache.shardingsphere.infra.binder.statement.SQLStatementBinderContext;
@@ -38,8 +38,7 @@ class InExpressionBinderTest {
new LiteralExpressionSegment(0, 0, "left"),
new LiteralExpressionSegment(0, 0, "right"), true);
SQLStatementBinderContext binderContext =
mock(SQLStatementBinderContext.class);
- InExpression actual = InExpressionBinder.bind(inExpression,
SegmentType.PROJECTION,
- binderContext, Collections.emptyMap(), Collections.emptyMap());
+ InExpression actual = InExpressionBinder.bind(inExpression,
SegmentType.PROJECTION, binderContext, Collections.emptyMap(),
Collections.emptyMap());
assertThat(actual.getText(), is("leftright"));
assertTrue(actual.isNot());
}
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/NotExpressionBinderTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/NotExpressionBinderTest.java
similarity index 99%
rename from
infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/NotExpressionBinderTest.java
rename to
infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/NotExpressionBinderTest.java
index 1fd70e510ea..04850b16a48 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/NotExpressionBinderTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/NotExpressionBinderTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.binder.segment.expression.impl;
+package org.apache.shardingsphere.infra.binder.segment.expression.type;
import org.apache.shardingsphere.infra.binder.segment.SegmentType;
import
org.apache.shardingsphere.infra.binder.statement.SQLStatementBinderContext;
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/SubquerySegmentBinderTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/SubquerySegmentBinderTest.java
similarity index 95%
rename from
infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/SubquerySegmentBinderTest.java
rename to
infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/SubquerySegmentBinderTest.java
index ae8569e2f1a..fff9016a170 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/SubquerySegmentBinderTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/expression/type/SubquerySegmentBinderTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.binder.segment.expression.impl;
+package org.apache.shardingsphere.infra.binder.segment.expression.type;
import
org.apache.shardingsphere.infra.binder.segment.from.context.type.SimpleTableSegmentBinderContext;
import
org.apache.shardingsphere.infra.binder.segment.from.context.TableSegmentBinderContext;
@@ -72,11 +72,11 @@ class SubquerySegmentBinderTest {
ExpressionSegment whereExpressionSegment = new ColumnSegment(86, 91,
new IdentifierValue("status"));
mysqlSelectStatement.setWhere(new WhereSegment(80, 102,
whereExpressionSegment));
SubquerySegment subquerySegment = new SubquerySegment(39, 103,
mysqlSelectStatement, "order_id = (SELECT order_id FROM t_order WHERE status =
'SUBMIT')");
- SQLStatementBinderContext sqlStatementBinderContext =
- new SQLStatementBinderContext(createMetaData(),
DefaultDatabase.LOGIC_NAME, TypedSPILoader.getService(DatabaseType.class,
"FIXTURE"), Collections.emptySet());
+ SQLStatementBinderContext sqlStatementBinderContext = new
SQLStatementBinderContext(
+ createMetaData(), DefaultDatabase.LOGIC_NAME,
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"),
Collections.emptySet());
ColumnSegment boundNameColumn = new ColumnSegment(7, 13, new
IdentifierValue("user_id"));
- boundNameColumn.setColumnBoundInfo(new ColumnSegmentBoundInfo(new
IdentifierValue(DefaultDatabase.LOGIC_NAME), new
IdentifierValue(DefaultDatabase.LOGIC_NAME),
- new IdentifierValue("t_order_item"), new
IdentifierValue("user_id")));
+ boundNameColumn.setColumnBoundInfo(new ColumnSegmentBoundInfo(
+ new IdentifierValue(DefaultDatabase.LOGIC_NAME), new
IdentifierValue(DefaultDatabase.LOGIC_NAME), new
IdentifierValue("t_order_item"), new IdentifierValue("user_id")));
sqlStatementBinderContext.getExternalTableBinderContexts().put("t_order_item",
new SimpleTableSegmentBinderContext(Collections.singleton(new
ColumnProjectionSegment(boundNameColumn))));
Map<String, TableSegmentBinderContext> outerTableBinderContexts = new
LinkedHashMap<>();
SubquerySegment actual = SubquerySegmentBinder.bind(subquerySegment,
sqlStatementBinderContext, outerTableBinderContexts);
@@ -124,8 +124,8 @@ class SubquerySegmentBinderTest {
oracleSelectStatement.setWithSegment(withSegment);
oracleSelectStatement.setProjections(new ProjectionsSegment(0, 0));
SubquerySegment subquerySegment = new SubquerySegment(0, 74,
oracleSelectStatement, "WITH submit_order AS (SELECT order_id FROM t_order
WHERE status = 'SUBMIT')");
- SQLStatementBinderContext sqlStatementBinderContext =
- new SQLStatementBinderContext(createMetaData(),
DefaultDatabase.LOGIC_NAME, TypedSPILoader.getService(DatabaseType.class,
"FIXTURE"), Collections.emptySet());
+ SQLStatementBinderContext sqlStatementBinderContext = new
SQLStatementBinderContext(
+ createMetaData(), DefaultDatabase.LOGIC_NAME,
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"),
Collections.emptySet());
Map<String, TableSegmentBinderContext> outerTableBinderContexts = new
LinkedHashMap<>();
SubquerySegment actual = SubquerySegmentBinder.bind(subquerySegment,
sqlStatementBinderContext, outerTableBinderContexts);
assertNotNull(actual.getSelect());