This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 d828e160919 Rename statementBinderContext variable name to
binderContext (#32060)
d828e160919 is described below
commit d828e1609198133531658974be2b7a0cefb2ff5a
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Jul 11 00:09:11 2024 +0800
Rename statementBinderContext variable name to binderContext (#32060)
* Refactor UpdateStatementBinder
* Rename statementBinderContext variable name to binderContext
* Rename statementBinderContext variable name to binderContext
---
.../segment/assign/AssignmentSegmentBinder.java | 16 +++----
.../segment/column/InsertColumnsSegmentBinder.java | 8 ++--
.../segment/combine/CombineSegmentBinder.java | 12 ++---
.../expression/ExpressionSegmentBinder.java | 20 ++++----
.../impl/BinaryOperationExpressionBinder.java | 8 ++--
.../expression/impl/ColumnSegmentBinder.java | 32 ++++++-------
.../impl/ExistsSubqueryExpressionBinder.java | 6 +--
.../impl/FunctionExpressionSegmentBinder.java | 6 +--
.../expression/impl/InExpressionBinder.java | 10 ++--
.../expression/impl/NotExpressionBinder.java | 8 ++--
.../impl/SubqueryExpressionSegmentBinder.java | 8 ++--
.../expression/impl/SubquerySegmentBinder.java | 12 ++---
.../binder/segment/from/TableSegmentBinder.java | 14 +++---
.../from/impl/DeleteMultiTableSegmentBinder.java | 8 ++--
.../segment/from/impl/JoinTableSegmentBinder.java | 20 ++++----
.../from/impl/SimpleTableSegmentBinder.java | 55 +++++++++++-----------
.../from/impl/SubqueryTableSegmentBinder.java | 21 ++++-----
.../binder/segment/lock/LockSegmentBinder.java | 8 ++--
.../parameter/ParameterMarkerSegmentBinder.java | 2 +-
.../ParameterMarkerExpressionSegmentBinder.java | 12 ++---
.../projection/ProjectionsSegmentBinder.java | 16 +++----
.../impl/ColumnProjectionSegmentBinder.java | 10 ++--
.../impl/ShorthandProjectionSegmentBinder.java | 2 +-
.../impl/SubqueryProjectionSegmentBinder.java | 8 ++--
.../binder/segment/where/WhereSegmentBinder.java | 8 ++--
.../with/CommonTableExpressionSegmentBinder.java | 8 ++--
.../binder/segment/with/WithSegmentBinder.java | 8 ++--
.../impl/BinaryOperationExpressionBinderTest.java | 4 +-
.../expression/impl/ColumnSegmentBinderTest.java | 8 ++--
.../impl/ExistsSubqueryExpressionBinderTest.java | 8 ++--
.../impl/FunctionExpressionSegmentBinderTest.java | 4 +-
.../expression/impl/InExpressionBinderTest.java | 4 +-
.../expression/impl/NotExpressionBinderTest.java | 4 +-
.../impl/SubqueryExpressionSegmentBinderTest.java | 6 +--
34 files changed, 190 insertions(+), 194 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 64a2f603850..721086c9350 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
@@ -44,32 +44,32 @@ public final class AssignmentSegmentBinder {
* Bind assignment segment.
*
* @param segment assignment segment
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @param outerTableBinderContexts outer table binder contexts
* @return bound assignment segment
*/
- public static SetAssignmentSegment bind(final SetAssignmentSegment
segment, final SQLStatementBinderContext statementBinderContext,
+ public static SetAssignmentSegment bind(final SetAssignmentSegment
segment, final SQLStatementBinderContext binderContext,
final Map<String,
TableSegmentBinderContext> tableBinderContexts, final Map<String,
TableSegmentBinderContext> outerTableBinderContexts) {
Collection<ColumnAssignmentSegment> assignments = new LinkedList<>();
for (ColumnAssignmentSegment each : segment.getAssignments()) {
- assignments.add(new ColumnAssignmentSegment(each.getStartIndex(),
each.getStopIndex(), bindColumns(each.getColumns(), statementBinderContext,
tableBinderContexts,
- outerTableBinderContexts), bindValue(each.getValue(),
statementBinderContext, tableBinderContexts, outerTableBinderContexts)));
+ assignments.add(new ColumnAssignmentSegment(each.getStartIndex(),
each.getStopIndex(), bindColumns(each.getColumns(), binderContext,
tableBinderContexts,
+ outerTableBinderContexts), bindValue(each.getValue(),
binderContext, tableBinderContexts, outerTableBinderContexts)));
}
return new SetAssignmentSegment(segment.getStartIndex(),
segment.getStopIndex(), assignments);
}
- private static List<ColumnSegment> bindColumns(final List<ColumnSegment>
columns, final SQLStatementBinderContext statementBinderContext,
+ private static List<ColumnSegment> bindColumns(final List<ColumnSegment>
columns, final SQLStatementBinderContext binderContext,
final Map<String,
TableSegmentBinderContext> tableBinderContexts, final Map<String,
TableSegmentBinderContext> outerTableBinderContexts) {
List<ColumnSegment> result = new LinkedList<>();
for (ColumnSegment each : columns) {
- result.add(ColumnSegmentBinder.bind(each,
SegmentType.SET_ASSIGNMENT, statementBinderContext, tableBinderContexts,
outerTableBinderContexts));
+ result.add(ColumnSegmentBinder.bind(each,
SegmentType.SET_ASSIGNMENT, binderContext, tableBinderContexts,
outerTableBinderContexts));
}
return result;
}
- private static ExpressionSegment bindValue(final ExpressionSegment value,
final SQLStatementBinderContext statementBinderContext,
+ private static ExpressionSegment bindValue(final ExpressionSegment value,
final SQLStatementBinderContext binderContext,
final Map<String,
TableSegmentBinderContext> tableBinderContexts, final Map<String,
TableSegmentBinderContext> outerTableBinderContexts) {
- return ExpressionSegmentBinder.bind(value, SegmentType.SET_ASSIGNMENT,
statementBinderContext, tableBinderContexts, outerTableBinderContexts);
+ return ExpressionSegmentBinder.bind(value, SegmentType.SET_ASSIGNMENT,
binderContext, tableBinderContexts, outerTableBinderContexts);
}
}
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 8e28e8ccfa4..b58564a0bad 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
@@ -38,17 +38,17 @@ import java.util.Map;
public final class InsertColumnsSegmentBinder {
/**
- * Bind insert columns segment with metadata.
+ * Bind insert columns segment.
*
* @param segment insert columns segment
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @return bounded insert columns segment
*/
- public static InsertColumnsSegment bind(final InsertColumnsSegment
segment, final SQLStatementBinderContext statementBinderContext,
+ public static InsertColumnsSegment bind(final InsertColumnsSegment
segment, final SQLStatementBinderContext binderContext,
final Map<String,
TableSegmentBinderContext> tableBinderContexts) {
Collection<ColumnSegment> boundedColumns = new LinkedList<>();
- segment.getColumns().forEach(each ->
boundedColumns.add(ColumnSegmentBinder.bind(each, SegmentType.INSERT_COLUMNS,
statementBinderContext, tableBinderContexts, Collections.emptyMap())));
+ segment.getColumns().forEach(each ->
boundedColumns.add(ColumnSegmentBinder.bind(each, SegmentType.INSERT_COLUMNS,
binderContext, tableBinderContexts, Collections.emptyMap())));
return new InsertColumnsSegment(segment.getStartIndex(),
segment.getStopIndex(), boundedColumns);
}
}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/combine/CombineSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/combine/CombineSegmentBinder.java
index 3390eb13d86..d38c4900dba 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/combine/CombineSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/combine/CombineSegmentBinder.java
@@ -36,16 +36,16 @@ import java.util.Map;
public final class CombineSegmentBinder {
/**
- * Bind combine segment with metadata.
+ * Bind combine segment.
*
* @param segment table segment
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @return bound combine segment
*/
- public static CombineSegment bind(final CombineSegment segment, final
SQLStatementBinderContext statementBinderContext) {
- ShardingSphereMetaData metaData = statementBinderContext.getMetaData();
- String currentDatabaseName =
statementBinderContext.getCurrentDatabaseName();
- Map<String, TableSegmentBinderContext> externalTableBinderContexts =
statementBinderContext.getExternalTableBinderContexts();
+ public static CombineSegment bind(final CombineSegment segment, final
SQLStatementBinderContext binderContext) {
+ ShardingSphereMetaData metaData = binderContext.getMetaData();
+ String currentDatabaseName = binderContext.getCurrentDatabaseName();
+ Map<String, TableSegmentBinderContext> externalTableBinderContexts =
binderContext.getExternalTableBinderContexts();
SelectStatement boundLeftSelect = new SelectStatementBinder().bind(
segment.getLeft().getSelect(),
createBinderContext(segment.getLeft().getSelect(), metaData,
currentDatabaseName, externalTableBinderContexts));
SelectStatement boundRightSelect = new SelectStatementBinder().bind(
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 c29f585cb66..9203b3b2fdd 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
@@ -48,40 +48,40 @@ import java.util.Map;
public final class ExpressionSegmentBinder {
/**
- * Bind expression segment with metadata.
+ * Bind expression segment.
*
* @param segment expression segment
* @param parentSegmentType parent segment type
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @param outerTableBinderContexts outer table binder contexts
* @return bounded expression segment
*/
- public static ExpressionSegment bind(final ExpressionSegment segment,
final SegmentType parentSegmentType, final SQLStatementBinderContext
statementBinderContext,
+ public static ExpressionSegment bind(final ExpressionSegment segment,
final SegmentType parentSegmentType, final SQLStatementBinderContext
binderContext,
final Map<String,
TableSegmentBinderContext> tableBinderContexts, final Map<String,
TableSegmentBinderContext> outerTableBinderContexts) {
if (segment instanceof BinaryOperationExpression) {
- return
BinaryOperationExpressionBinder.bind((BinaryOperationExpression) segment,
parentSegmentType, statementBinderContext, tableBinderContexts,
outerTableBinderContexts);
+ return
BinaryOperationExpressionBinder.bind((BinaryOperationExpression) segment,
parentSegmentType, binderContext, tableBinderContexts,
outerTableBinderContexts);
}
if (segment instanceof ExistsSubqueryExpression) {
- return
ExistsSubqueryExpressionBinder.bind((ExistsSubqueryExpression) segment,
statementBinderContext, tableBinderContexts);
+ return
ExistsSubqueryExpressionBinder.bind((ExistsSubqueryExpression) segment,
binderContext, tableBinderContexts);
}
if (segment instanceof SubqueryExpressionSegment) {
Map<String, TableSegmentBinderContext> newOuterTableBinderContexts
= new LinkedHashMap<>();
newOuterTableBinderContexts.putAll(outerTableBinderContexts);
newOuterTableBinderContexts.putAll(tableBinderContexts);
- return
SubqueryExpressionSegmentBinder.bind((SubqueryExpressionSegment) segment,
statementBinderContext, newOuterTableBinderContexts);
+ return
SubqueryExpressionSegmentBinder.bind((SubqueryExpressionSegment) segment,
binderContext, newOuterTableBinderContexts);
}
if (segment instanceof InExpression) {
- return InExpressionBinder.bind((InExpression) segment,
parentSegmentType, statementBinderContext, tableBinderContexts,
outerTableBinderContexts);
+ return InExpressionBinder.bind((InExpression) segment,
parentSegmentType, binderContext, tableBinderContexts,
outerTableBinderContexts);
}
if (segment instanceof NotExpression) {
- return NotExpressionBinder.bind((NotExpression) segment,
parentSegmentType, statementBinderContext, tableBinderContexts);
+ return NotExpressionBinder.bind((NotExpression) segment,
parentSegmentType, binderContext, tableBinderContexts);
}
if (segment instanceof ColumnSegment) {
- return ColumnSegmentBinder.bind((ColumnSegment) segment,
parentSegmentType, statementBinderContext, tableBinderContexts,
outerTableBinderContexts);
+ return ColumnSegmentBinder.bind((ColumnSegment) segment,
parentSegmentType, binderContext, tableBinderContexts,
outerTableBinderContexts);
}
if (segment instanceof FunctionSegment) {
- return FunctionExpressionSegmentBinder.bind((FunctionSegment)
segment, parentSegmentType, statementBinderContext, tableBinderContexts,
outerTableBinderContexts);
+ return FunctionExpressionSegmentBinder.bind((FunctionSegment)
segment, parentSegmentType, binderContext, tableBinderContexts,
outerTableBinderContexts);
}
// TODO support more ExpressionSegment bind
return segment;
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/impl/BinaryOperationExpressionBinder.java
index 08a549e1831..d3538c012a0 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/impl/BinaryOperationExpressionBinder.java
@@ -39,15 +39,15 @@ public final class BinaryOperationExpressionBinder {
*
* @param segment binary operation expression segment
* @param parentSegmentType parent segment type
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @param outerTableBinderContexts outer table binder contexts
* @return bounded binary operation expression segment
*/
- public static BinaryOperationExpression bind(final
BinaryOperationExpression segment, final SegmentType parentSegmentType, final
SQLStatementBinderContext statementBinderContext,
+ public static BinaryOperationExpression bind(final
BinaryOperationExpression segment, final SegmentType parentSegmentType, final
SQLStatementBinderContext binderContext,
final Map<String,
TableSegmentBinderContext> tableBinderContexts, final Map<String,
TableSegmentBinderContext> outerTableBinderContexts) {
- ExpressionSegment boundedLeft =
ExpressionSegmentBinder.bind(segment.getLeft(), parentSegmentType,
statementBinderContext, tableBinderContexts, outerTableBinderContexts);
- ExpressionSegment boundedRight =
ExpressionSegmentBinder.bind(segment.getRight(), parentSegmentType,
statementBinderContext, tableBinderContexts, outerTableBinderContexts);
+ ExpressionSegment boundedLeft =
ExpressionSegmentBinder.bind(segment.getLeft(), parentSegmentType,
binderContext, tableBinderContexts, outerTableBinderContexts);
+ ExpressionSegment boundedRight =
ExpressionSegmentBinder.bind(segment.getRight(), parentSegmentType,
binderContext, tableBinderContexts, outerTableBinderContexts);
return new BinaryOperationExpression(segment.getStartIndex(),
segment.getStopIndex(), boundedLeft, boundedRight, segment.getOperator(),
segment.getText());
}
}
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/impl/ColumnSegmentBinder.java
index 5c0394863b4..2082feab2c6 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/impl/ColumnSegmentBinder.java
@@ -61,16 +61,16 @@ public final class ColumnSegmentBinder {
private static final String UNKNOWN_SEGMENT_TYPE_MESSAGE = "unknown
clause";
/**
- * Bind column segment with metadata.
+ * Bind column segment.
*
* @param segment table segment
* @param parentSegmentType parent segment type
- * @param statementBinderContext statement binder context
+ * @param binderContext statement binder context
* @param tableBinderContexts table binder contexts
* @param outerTableBinderContexts outer table binder contexts
* @return bounded column segment
*/
- public static ColumnSegment bind(final ColumnSegment segment, final
SegmentType parentSegmentType, final SQLStatementBinderContext
statementBinderContext,
+ public static ColumnSegment bind(final ColumnSegment segment, final
SegmentType parentSegmentType, final SQLStatementBinderContext binderContext,
final Map<String,
TableSegmentBinderContext> tableBinderContexts, final Map<String,
TableSegmentBinderContext> outerTableBinderContexts) {
if
(EXCLUDE_BIND_COLUMNS.contains(segment.getIdentifier().getValue().toUpperCase()))
{
return segment;
@@ -78,8 +78,8 @@ public final class ColumnSegmentBinder {
ColumnSegment result = new ColumnSegment(segment.getStartIndex(),
segment.getStopIndex(), segment.getIdentifier());
segment.getOwner().ifPresent(result::setOwner);
Collection<TableSegmentBinderContext> tableBinderContextValues =
- getTableSegmentBinderContexts(segment, parentSegmentType,
statementBinderContext, tableBinderContexts, outerTableBinderContexts);
- Optional<ColumnSegment> inputColumnSegment =
findInputColumnSegment(segment, parentSegmentType, tableBinderContextValues,
outerTableBinderContexts, statementBinderContext);
+ getTableSegmentBinderContexts(segment, parentSegmentType,
binderContext, tableBinderContexts, outerTableBinderContexts);
+ Optional<ColumnSegment> inputColumnSegment =
findInputColumnSegment(segment, parentSegmentType, tableBinderContextValues,
outerTableBinderContexts, binderContext);
inputColumnSegment.ifPresent(optional ->
result.setVariable(optional.isVariable()));
result.setColumnBoundedInfo(createColumnSegmentBoundedInfo(segment,
inputColumnSegment.orElse(null)));
segment.getParentheses().forEach(each ->
result.getParentheses().add(each));
@@ -87,22 +87,22 @@ public final class ColumnSegmentBinder {
}
private static Collection<TableSegmentBinderContext>
getTableSegmentBinderContexts(final ColumnSegment segment, final SegmentType
parentSegmentType,
-
final SQLStatementBinderContext statementBinderContext,
+
final SQLStatementBinderContext binderContext,
final Map<String, TableSegmentBinderContext> tableBinderContexts,
final Map<String, TableSegmentBinderContext> outerTableBinderContexts) {
if (segment.getOwner().isPresent()) {
return
getTableBinderContextByOwner(segment.getOwner().get().getIdentifier().getValue().toLowerCase(),
tableBinderContexts, outerTableBinderContexts,
- statementBinderContext.getExternalTableBinderContexts());
+ binderContext.getExternalTableBinderContexts());
}
- if (!statementBinderContext.getJoinTableProjectionSegments().isEmpty()
&& isNeedUseJoinTableProjectionBind(segment, parentSegmentType,
statementBinderContext)) {
- return Collections.singleton(new
SimpleTableSegmentBinderContext(statementBinderContext.getJoinTableProjectionSegments()));
+ if (!binderContext.getJoinTableProjectionSegments().isEmpty() &&
isNeedUseJoinTableProjectionBind(segment, parentSegmentType, binderContext)) {
+ return Collections.singleton(new
SimpleTableSegmentBinderContext(binderContext.getJoinTableProjectionSegments()));
}
return tableBinderContexts.values();
}
- private static boolean isNeedUseJoinTableProjectionBind(final
ColumnSegment segment, final SegmentType parentSegmentType, final
SQLStatementBinderContext statementBinderContext) {
+ private static boolean isNeedUseJoinTableProjectionBind(final
ColumnSegment segment, final SegmentType parentSegmentType, final
SQLStatementBinderContext binderContext) {
return SegmentType.PROJECTION == parentSegmentType
- || SegmentType.PREDICATE == parentSegmentType &&
statementBinderContext.getUsingColumnNames().contains(segment.getIdentifier().getValue().toLowerCase());
+ || SegmentType.PREDICATE == parentSegmentType &&
binderContext.getUsingColumnNames().contains(segment.getIdentifier().getValue().toLowerCase());
}
private static Collection<TableSegmentBinderContext>
getTableBinderContextByOwner(final String owner, final Map<String,
TableSegmentBinderContext> tableBinderContexts,
@@ -121,7 +121,7 @@ public final class ColumnSegmentBinder {
}
private static Optional<ColumnSegment> findInputColumnSegment(final
ColumnSegment segment, final SegmentType parentSegmentType, final
Collection<TableSegmentBinderContext> tableBinderContexts,
- final
Map<String, TableSegmentBinderContext> outerTableBinderContexts, final
SQLStatementBinderContext statementBinderContext) {
+ final
Map<String, TableSegmentBinderContext> outerTableBinderContexts, final
SQLStatementBinderContext binderContext) {
ColumnSegment result = null;
boolean isFindInputColumn = false;
for (TableSegmentBinderContext each : tableBinderContexts) {
@@ -143,18 +143,18 @@ public final class ColumnSegmentBinder {
}
}
if (!isFindInputColumn) {
- Optional<ProjectionSegment> projectionSegment =
findInputColumnSegmentFromExternalTables(segment,
statementBinderContext.getExternalTableBinderContexts());
+ Optional<ProjectionSegment> projectionSegment =
findInputColumnSegmentFromExternalTables(segment,
binderContext.getExternalTableBinderContexts());
isFindInputColumn = projectionSegment.isPresent();
if (projectionSegment.isPresent() && projectionSegment.get()
instanceof ColumnProjectionSegment) {
result = ((ColumnProjectionSegment)
projectionSegment.get()).getColumn();
}
}
if (!isFindInputColumn) {
- result = findInputColumnSegmentByVariables(segment,
statementBinderContext.getVariableNames()).orElse(null);
+ result = findInputColumnSegmentByVariables(segment,
binderContext.getVariableNames()).orElse(null);
isFindInputColumn = null != result;
}
if (!isFindInputColumn) {
- result = findInputColumnSegmentByPivotColumns(segment,
statementBinderContext.getPivotColumnNames()).orElse(null);
+ result = findInputColumnSegmentByPivotColumns(segment,
binderContext.getPivotColumnNames()).orElse(null);
isFindInputColumn = null != result;
}
ShardingSpherePreconditions.checkState(isFindInputColumn ||
containsFunctionTable(tableBinderContexts, outerTableBinderContexts.values()),
@@ -233,7 +233,7 @@ public final class ColumnSegmentBinder {
}
/**
- * Bind using column segment with metadata.
+ * Bind using column segment.
*
* @param segment using column segment
* @param parentSegmentType parent segment type
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/impl/ExistsSubqueryExpressionBinder.java
index b62fb3198f1..b0859ab7cfe 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/impl/ExistsSubqueryExpressionBinder.java
@@ -36,13 +36,13 @@ public final class ExistsSubqueryExpressionBinder {
* Bind exists subquery expression with metadata.
*
* @param segment exists subquery expression segment
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @return bounded exists subquery expression segment
*/
- public static ExistsSubqueryExpression bind(final ExistsSubqueryExpression
segment, final SQLStatementBinderContext statementBinderContext,
+ public static ExistsSubqueryExpression bind(final ExistsSubqueryExpression
segment, final SQLStatementBinderContext binderContext,
final Map<String,
TableSegmentBinderContext> tableBinderContexts) {
- SubquerySegment boundedSubquery =
SubquerySegmentBinder.bind(segment.getSubquery(), statementBinderContext,
tableBinderContexts);
+ SubquerySegment boundedSubquery =
SubquerySegmentBinder.bind(segment.getSubquery(), binderContext,
tableBinderContexts);
ExistsSubqueryExpression result = new
ExistsSubqueryExpression(segment.getStartIndex(), segment.getStopIndex(),
boundedSubquery);
result.setNot(segment.isNot());
return result;
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/impl/FunctionExpressionSegmentBinder.java
index eacfc545d01..2747a73dff1 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/impl/FunctionExpressionSegmentBinder.java
@@ -39,17 +39,17 @@ public final class FunctionExpressionSegmentBinder {
*
* @param segment function expression segment
* @param parentSegmentType parent segment type
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @param outerTableBinderContexts outer table binder contexts
* @return function segment
*/
- public static FunctionSegment bind(final FunctionSegment segment, final
SegmentType parentSegmentType, final SQLStatementBinderContext
statementBinderContext,
+ 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, statementBinderContext, tableBinderContexts,
outerTableBinderContexts));
+ result.getParameters().add(ExpressionSegmentBinder.bind(each,
parentSegmentType, binderContext, tableBinderContexts,
outerTableBinderContexts));
}
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/impl/InExpressionBinder.java
index 51e1b30604c..080dae13252 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/impl/InExpressionBinder.java
@@ -35,19 +35,19 @@ import java.util.Map;
public final class InExpressionBinder {
/**
- * Bind in expression segment with metadata.
+ * Bind in expression segment.
*
* @param segment in expression
* @param parentSegmentType parent segment type
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @param outerTableBinderContexts outer table binder contexts
* @return bounded in expression
*/
- public static InExpression bind(final InExpression segment, final
SegmentType parentSegmentType, final SQLStatementBinderContext
statementBinderContext,
+ public static InExpression bind(final InExpression segment, final
SegmentType parentSegmentType, final SQLStatementBinderContext binderContext,
final Map<String,
TableSegmentBinderContext> tableBinderContexts, final Map<String,
TableSegmentBinderContext> outerTableBinderContexts) {
- ExpressionSegment boundedLeft =
ExpressionSegmentBinder.bind(segment.getLeft(), parentSegmentType,
statementBinderContext, tableBinderContexts, outerTableBinderContexts);
- ExpressionSegment boundedRight =
ExpressionSegmentBinder.bind(segment.getRight(), parentSegmentType,
statementBinderContext, tableBinderContexts, outerTableBinderContexts);
+ ExpressionSegment boundedLeft =
ExpressionSegmentBinder.bind(segment.getLeft(), parentSegmentType,
binderContext, tableBinderContexts, outerTableBinderContexts);
+ ExpressionSegment boundedRight =
ExpressionSegmentBinder.bind(segment.getRight(), parentSegmentType,
binderContext, tableBinderContexts, outerTableBinderContexts);
return new InExpression(segment.getStartIndex(),
segment.getStopIndex(), boundedLeft, boundedRight, segment.isNot());
}
}
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/impl/NotExpressionBinder.java
index 28328647c4d..c07e74fbcc4 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/impl/NotExpressionBinder.java
@@ -36,17 +36,17 @@ import java.util.Map;
public final class NotExpressionBinder {
/**
- * Bind not expression segment with metadata.
+ * Bind not expression segment.
*
* @param segment not expression
* @param parentSegmentType parent segment type
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @return bounded not expression
*/
- public static NotExpression bind(final NotExpression segment, final
SegmentType parentSegmentType, final SQLStatementBinderContext
statementBinderContext,
+ public static NotExpression bind(final NotExpression segment, final
SegmentType parentSegmentType, final SQLStatementBinderContext binderContext,
final Map<String,
TableSegmentBinderContext> tableBinderContexts) {
- ExpressionSegment boundedExpression =
ExpressionSegmentBinder.bind(segment.getExpression(), parentSegmentType,
statementBinderContext, tableBinderContexts, Collections.emptyMap());
+ ExpressionSegment boundedExpression =
ExpressionSegmentBinder.bind(segment.getExpression(), parentSegmentType,
binderContext, tableBinderContexts, Collections.emptyMap());
return new NotExpression(segment.getStartIndex(),
segment.getStopIndex(), boundedExpression, segment.getNotSign());
}
}
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
index 9b3a20f5bed..6e7944e2ede 100644
---
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
@@ -33,16 +33,16 @@ import java.util.Map;
public final class SubqueryExpressionSegmentBinder {
/**
- * Bind subquery expression segment with metadata.
+ * Bind subquery expression segment.
*
* @param segment subquery expression segment
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @return bounded subquery expression segment
*/
- public static SubqueryExpressionSegment bind(final
SubqueryExpressionSegment segment, final SQLStatementBinderContext
statementBinderContext,
+ public static SubqueryExpressionSegment bind(final
SubqueryExpressionSegment segment, final SQLStatementBinderContext
binderContext,
final Map<String,
TableSegmentBinderContext> tableBinderContexts) {
- SubquerySegment boundedSubquery =
SubquerySegmentBinder.bind(segment.getSubquery(), statementBinderContext,
tableBinderContexts);
+ SubquerySegment boundedSubquery =
SubquerySegmentBinder.bind(segment.getSubquery(), binderContext,
tableBinderContexts);
return new SubqueryExpressionSegment(boundedSubquery);
}
}
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/impl/SubquerySegmentBinder.java
index f695b9f9ea4..0a377d460f3 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/impl/SubquerySegmentBinder.java
@@ -34,17 +34,17 @@ import java.util.Map;
public final class SubquerySegmentBinder {
/**
- * Bind subquery segment with metadata.
+ * Bind subquery segment.
*
* @param segment subquery segment
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param outerTableBinderContexts outer table binder contexts
* @return bounded subquery segment
*/
- public static SubquerySegment bind(final SubquerySegment segment, final
SQLStatementBinderContext statementBinderContext, final Map<String,
TableSegmentBinderContext> outerTableBinderContexts) {
- SQLStatementBinderContext binderContext = new
SQLStatementBinderContext(segment.getSelect(),
statementBinderContext.getMetaData(),
statementBinderContext.getCurrentDatabaseName());
-
binderContext.getExternalTableBinderContexts().putAll(statementBinderContext.getExternalTableBinderContexts());
- SelectStatement boundedSelectStatement = new
SelectStatementBinder(outerTableBinderContexts).bind(segment.getSelect(),
binderContext);
+ public static SubquerySegment bind(final SubquerySegment segment, final
SQLStatementBinderContext binderContext, final Map<String,
TableSegmentBinderContext> outerTableBinderContexts) {
+ SQLStatementBinderContext selectBinderContext = new
SQLStatementBinderContext(segment.getSelect(), binderContext.getMetaData(),
binderContext.getCurrentDatabaseName());
+
selectBinderContext.getExternalTableBinderContexts().putAll(binderContext.getExternalTableBinderContexts());
+ SelectStatement boundedSelectStatement = new
SelectStatementBinder(outerTableBinderContexts).bind(segment.getSelect(),
selectBinderContext);
SubquerySegment result = new SubquerySegment(segment.getStartIndex(),
segment.getStopIndex(), boundedSelectStatement, segment.getText());
result.setSubqueryType(segment.getSubqueryType());
return result;
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/TableSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/TableSegmentBinder.java
index 71584869ac4..6da54fc559a 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/TableSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/TableSegmentBinder.java
@@ -41,27 +41,27 @@ import java.util.Map;
public final class TableSegmentBinder {
/**
- * Bind table segment with metadata.
+ * Bind table segment.
*
* @param segment table segment
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @param outerTableBinderContexts outer table binder contexts
* @return bounded table segment
*/
- public static TableSegment bind(final TableSegment segment, final
SQLStatementBinderContext statementBinderContext, final Map<String,
TableSegmentBinderContext> tableBinderContexts,
+ public static TableSegment bind(final TableSegment segment, final
SQLStatementBinderContext binderContext, final Map<String,
TableSegmentBinderContext> tableBinderContexts,
final Map<String,
TableSegmentBinderContext> outerTableBinderContexts) {
if (segment instanceof SimpleTableSegment) {
- return SimpleTableSegmentBinder.bind((SimpleTableSegment) segment,
statementBinderContext, tableBinderContexts);
+ return SimpleTableSegmentBinder.bind((SimpleTableSegment) segment,
binderContext, tableBinderContexts);
}
if (segment instanceof JoinTableSegment) {
- return JoinTableSegmentBinder.bind((JoinTableSegment) segment,
statementBinderContext, tableBinderContexts, outerTableBinderContexts);
+ return JoinTableSegmentBinder.bind((JoinTableSegment) segment,
binderContext, tableBinderContexts, outerTableBinderContexts);
}
if (segment instanceof SubqueryTableSegment) {
- return SubqueryTableSegmentBinder.bind((SubqueryTableSegment)
segment, statementBinderContext, tableBinderContexts, outerTableBinderContexts);
+ return SubqueryTableSegmentBinder.bind((SubqueryTableSegment)
segment, binderContext, tableBinderContexts, outerTableBinderContexts);
}
if (segment instanceof DeleteMultiTableSegment) {
- return
DeleteMultiTableSegmentBinder.bind((DeleteMultiTableSegment) segment,
statementBinderContext, tableBinderContexts);
+ return
DeleteMultiTableSegmentBinder.bind((DeleteMultiTableSegment) segment,
binderContext, tableBinderContexts);
}
if (segment instanceof FunctionTableSegment) {
tableBinderContexts.put(segment.getAliasName().orElseGet(() ->
((FunctionTableSegment) segment).getTableFunction().getText()).toLowerCase(),
new FunctionTableSegmentBinderContext());
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/DeleteMultiTableSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/DeleteMultiTableSegmentBinder.java
index c999d0f608c..cbf9be13e9a 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/DeleteMultiTableSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/DeleteMultiTableSegmentBinder.java
@@ -34,20 +34,20 @@ import java.util.Map;
public final class DeleteMultiTableSegmentBinder {
/**
- * Bind delete multi table segment with metadata.
+ * Bind delete multi table segment.
*
* @param segment delete multi table segment
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @return bounded join table segment
*/
- public static DeleteMultiTableSegment bind(final DeleteMultiTableSegment
segment, final SQLStatementBinderContext statementBinderContext,
+ public static DeleteMultiTableSegment bind(final DeleteMultiTableSegment
segment, final SQLStatementBinderContext binderContext,
final Map<String,
TableSegmentBinderContext> tableBinderContexts) {
DeleteMultiTableSegment result = new DeleteMultiTableSegment();
result.setStartIndex(segment.getStartIndex());
result.setStopIndex(segment.getStopIndex());
result.getActualDeleteTables().addAll(segment.getActualDeleteTables());
-
result.setRelationTable(TableSegmentBinder.bind(segment.getRelationTable(),
statementBinderContext, tableBinderContexts, Collections.emptyMap()));
+
result.setRelationTable(TableSegmentBinder.bind(segment.getRelationTable(),
binderContext, tableBinderContexts, Collections.emptyMap()));
return result;
}
}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/JoinTableSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/JoinTableSegmentBinder.java
index f392a56f330..60b14374c2a 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/JoinTableSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/JoinTableSegmentBinder.java
@@ -53,36 +53,36 @@ import java.util.Map;
public final class JoinTableSegmentBinder {
/**
- * Bind join table segment with metadata.
+ * Bind join table segment.
*
* @param segment join table segment
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @param outerTableBinderContexts outer table binder contexts
* @return bounded join table segment
*/
- public static JoinTableSegment bind(final JoinTableSegment segment, final
SQLStatementBinderContext statementBinderContext, final Map<String,
TableSegmentBinderContext> tableBinderContexts,
+ public static JoinTableSegment bind(final JoinTableSegment segment, final
SQLStatementBinderContext binderContext, final Map<String,
TableSegmentBinderContext> tableBinderContexts,
final Map<String,
TableSegmentBinderContext> outerTableBinderContexts) {
JoinTableSegment result = new JoinTableSegment();
result.setStartIndex(segment.getStartIndex());
result.setStopIndex(segment.getStopIndex());
segment.getAliasSegment().ifPresent(result::setAlias);
- result.setLeft(TableSegmentBinder.bind(segment.getLeft(),
statementBinderContext, tableBinderContexts, outerTableBinderContexts));
+ result.setLeft(TableSegmentBinder.bind(segment.getLeft(),
binderContext, tableBinderContexts, outerTableBinderContexts));
result.setNatural(segment.isNatural());
result.setJoinType(segment.getJoinType());
- result.setRight(TableSegmentBinder.bind(segment.getRight(),
statementBinderContext, tableBinderContexts, outerTableBinderContexts));
-
result.setCondition(ExpressionSegmentBinder.bind(segment.getCondition(),
SegmentType.JOIN_ON, statementBinderContext, tableBinderContexts,
Collections.emptyMap()));
+ result.setRight(TableSegmentBinder.bind(segment.getRight(),
binderContext, tableBinderContexts, outerTableBinderContexts));
+
result.setCondition(ExpressionSegmentBinder.bind(segment.getCondition(),
SegmentType.JOIN_ON, binderContext, tableBinderContexts,
Collections.emptyMap()));
result.setUsing(bindUsingColumns(segment.getUsing(),
tableBinderContexts));
- result.getUsing().forEach(each ->
statementBinderContext.getUsingColumnNames().add(each.getIdentifier().getValue().toLowerCase()));
+ result.getUsing().forEach(each ->
binderContext.getUsingColumnNames().add(each.getIdentifier().getValue().toLowerCase()));
Map<String, ProjectionSegment> usingColumnsByNaturalJoin =
Collections.emptyMap();
if (result.isNatural()) {
usingColumnsByNaturalJoin = getUsingColumnsByNaturalJoin(result,
tableBinderContexts);
Collection<ColumnSegment> derivedUsingColumns =
getDerivedUsingColumns(usingColumnsByNaturalJoin);
result.setDerivedUsing(bindUsingColumns(derivedUsingColumns,
tableBinderContexts));
- result.getDerivedUsing().forEach(each ->
statementBinderContext.getUsingColumnNames().add(each.getIdentifier().getValue().toLowerCase()));
+ result.getDerivedUsing().forEach(each ->
binderContext.getUsingColumnNames().add(each.getIdentifier().getValue().toLowerCase()));
}
-
result.getDerivedJoinTableProjectionSegments().addAll(getDerivedJoinTableProjectionSegments(result,
statementBinderContext.getDatabaseType(), usingColumnsByNaturalJoin,
tableBinderContexts));
-
statementBinderContext.getJoinTableProjectionSegments().addAll(result.getDerivedJoinTableProjectionSegments());
+
result.getDerivedJoinTableProjectionSegments().addAll(getDerivedJoinTableProjectionSegments(result,
binderContext.getDatabaseType(), usingColumnsByNaturalJoin,
tableBinderContexts));
+
binderContext.getJoinTableProjectionSegments().addAll(result.getDerivedJoinTableProjectionSegments());
return result;
}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinder.java
index fb81f9f5b9f..43f3c9812c6 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinder.java
@@ -69,22 +69,22 @@ public final class SimpleTableSegmentBinder {
}
/**
- * Bind simple table segment with metadata.
+ * Bind simple table segment.
*
* @param segment simple table segment
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @return bounded simple table segment
*/
- public static SimpleTableSegment bind(final SimpleTableSegment segment,
final SQLStatementBinderContext statementBinderContext, final Map<String,
TableSegmentBinderContext> tableBinderContexts) {
- fillPivotColumnNamesInBinderContext(segment, statementBinderContext);
- IdentifierValue originalDatabase = getDatabaseName(segment,
statementBinderContext);
- IdentifierValue originalSchema = getSchemaName(segment,
statementBinderContext);
+ public static SimpleTableSegment bind(final SimpleTableSegment segment,
final SQLStatementBinderContext binderContext, final Map<String,
TableSegmentBinderContext> tableBinderContexts) {
+ fillPivotColumnNamesInBinderContext(segment, binderContext);
+ IdentifierValue originalDatabase = getDatabaseName(segment,
binderContext);
+ IdentifierValue originalSchema = getSchemaName(segment, binderContext);
ShardingSpherePreconditions.checkNotNull(originalDatabase.getValue(),
NoDatabaseSelectedException::new);
- checkTableExists(segment.getTableName().getIdentifier().getValue(),
statementBinderContext, originalDatabase.getValue(), originalSchema.getValue());
- ShardingSphereSchema schema =
statementBinderContext.getMetaData().getDatabase(originalDatabase.getValue()).getSchema(originalSchema.getValue());
+ checkTableExists(segment.getTableName().getIdentifier().getValue(),
binderContext, originalDatabase.getValue(), originalSchema.getValue());
+ ShardingSphereSchema schema =
binderContext.getMetaData().getDatabase(originalDatabase.getValue()).getSchema(originalSchema.getValue());
tableBinderContexts.putIfAbsent((segment.getAliasName().orElseGet(()
-> segment.getTableName().getIdentifier().getValue())).toLowerCase(),
- createSimpleTableBinderContext(segment, schema,
originalDatabase, originalSchema, statementBinderContext));
+ createSimpleTableBinderContext(segment, schema,
originalDatabase, originalSchema, binderContext));
TableNameSegment tableNameSegment = new
TableNameSegment(segment.getTableName().getStartIndex(),
segment.getTableName().getStopIndex(), segment.getTableName().getIdentifier());
tableNameSegment.setTableBoundedInfo(new
TableSegmentBoundedInfo(originalDatabase, originalSchema));
SimpleTableSegment result = new SimpleTableSegment(tableNameSegment);
@@ -93,36 +93,35 @@ public final class SimpleTableSegmentBinder {
return result;
}
- private static void fillPivotColumnNamesInBinderContext(final
SimpleTableSegment segment, final SQLStatementBinderContext
statementBinderContext) {
- segment.getPivot().ifPresent(optional ->
optional.getPivotColumns().forEach(each ->
statementBinderContext.getPivotColumnNames().add(each.getIdentifier().getValue().toLowerCase())));
+ private static void fillPivotColumnNamesInBinderContext(final
SimpleTableSegment segment, final SQLStatementBinderContext binderContext) {
+ segment.getPivot().ifPresent(optional ->
optional.getPivotColumns().forEach(each ->
binderContext.getPivotColumnNames().add(each.getIdentifier().getValue().toLowerCase())));
}
- private static IdentifierValue getDatabaseName(final SimpleTableSegment
tableSegment, final SQLStatementBinderContext statementBinderContext) {
- DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(statementBinderContext.getDatabaseType()).getDialectDatabaseMetaData();
+ private static IdentifierValue getDatabaseName(final SimpleTableSegment
tableSegment, final SQLStatementBinderContext binderContext) {
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(binderContext.getDatabaseType()).getDialectDatabaseMetaData();
Optional<OwnerSegment> owner =
dialectDatabaseMetaData.getDefaultSchema().isPresent() ?
tableSegment.getOwner().flatMap(OwnerSegment::getOwner) :
tableSegment.getOwner();
- return new IdentifierValue(owner.map(optional ->
optional.getIdentifier().getValue()).orElse(statementBinderContext.getCurrentDatabaseName()));
+ return new IdentifierValue(owner.map(optional ->
optional.getIdentifier().getValue()).orElse(binderContext.getCurrentDatabaseName()));
}
- private static IdentifierValue getSchemaName(final SimpleTableSegment
segment, final SQLStatementBinderContext statementBinderContext) {
+ private static IdentifierValue getSchemaName(final SimpleTableSegment
segment, final SQLStatementBinderContext binderContext) {
if (segment.getOwner().isPresent()) {
return segment.getOwner().get().getIdentifier();
}
// TODO getSchemaName according to search path
- DatabaseType databaseType = statementBinderContext.getDatabaseType();
+ DatabaseType databaseType = binderContext.getDatabaseType();
if ((databaseType instanceof PostgreSQLDatabaseType || databaseType
instanceof OpenGaussDatabaseType)
&&
SYSTEM_CATALOG_TABLES.contains(segment.getTableName().getIdentifier().getValue()))
{
return new IdentifierValue(PG_CATALOG);
}
- return new IdentifierValue(new
DatabaseTypeRegistry(databaseType).getDefaultSchemaName(statementBinderContext.getCurrentDatabaseName()));
+ return new IdentifierValue(new
DatabaseTypeRegistry(databaseType).getDefaultSchemaName(binderContext.getCurrentDatabaseName()));
}
- private static SimpleTableSegmentBinderContext
createSimpleTableBinderContext(final SimpleTableSegment segment, final
ShardingSphereSchema schema,
-
final IdentifierValue originalDatabase, final IdentifierValue originalSchema,
-
final SQLStatementBinderContext statementBinderContext) {
- Collection<ShardingSphereColumn> columnNames =
-
Optional.ofNullable(schema.getTable(segment.getTableName().getIdentifier().getValue())).map(ShardingSphereTable::getColumnValues).orElseGet(Collections::emptyList);
+ private static SimpleTableSegmentBinderContext
createSimpleTableBinderContext(final SimpleTableSegment segment, final
ShardingSphereSchema schema, final IdentifierValue originalDatabase,
+
final IdentifierValue originalSchema, final SQLStatementBinderContext
binderContext) {
+ Collection<ShardingSphereColumn> columnNames = Optional.ofNullable(
+
schema.getTable(segment.getTableName().getIdentifier().getValue())).map(ShardingSphereTable::getColumnValues).orElseGet(Collections::emptyList);
Collection<ProjectionSegment> projectionSegments = new LinkedList<>();
- DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(statementBinderContext.getDatabaseType()).getDialectDatabaseMetaData();
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(binderContext.getDatabaseType()).getDialectDatabaseMetaData();
for (ShardingSphereColumn each : columnNames) {
ColumnSegment columnSegment = new ColumnSegment(0, 0, new
IdentifierValue(each.getName(), dialectDatabaseMetaData.getQuoteCharacter()));
columnSegment.setOwner(new OwnerSegment(0, 0,
segment.getAlias().orElse(segment.getTableName().getIdentifier())));
@@ -135,19 +134,19 @@ public final class SimpleTableSegmentBinder {
return new SimpleTableSegmentBinderContext(projectionSegments);
}
- private static void checkTableExists(final String tableName, final
SQLStatementBinderContext statementBinderContext, final String databaseName,
final String schemaName) {
+ private static void checkTableExists(final String tableName, final
SQLStatementBinderContext binderContext, final String databaseName, final
String schemaName) {
if ("dual".equalsIgnoreCase(tableName)) {
return;
}
if (SystemSchemaManager.isSystemTable(schemaName, tableName)) {
return;
}
- if
(statementBinderContext.getExternalTableBinderContexts().containsKey(tableName))
{
+ if
(binderContext.getExternalTableBinderContexts().containsKey(tableName)) {
return;
}
-
ShardingSpherePreconditions.checkState(statementBinderContext.getMetaData().containsDatabase(databaseName)
- &&
statementBinderContext.getMetaData().getDatabase(databaseName).containsSchema(schemaName)
- &&
statementBinderContext.getMetaData().getDatabase(databaseName).getSchema(schemaName).containsTable(tableName),
+
ShardingSpherePreconditions.checkState(binderContext.getMetaData().containsDatabase(databaseName)
+ &&
binderContext.getMetaData().getDatabase(databaseName).containsSchema(schemaName)
+ &&
binderContext.getMetaData().getDatabase(databaseName).getSchema(schemaName).containsTable(tableName),
() -> new TableNotFoundException(tableName));
}
}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SubqueryTableSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SubqueryTableSegmentBinder.java
index b3b55f7b959..56ea4d86f83 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SubqueryTableSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SubqueryTableSegmentBinder.java
@@ -57,21 +57,20 @@ import java.util.Map;
public final class SubqueryTableSegmentBinder {
/**
- * Bind subquery table segment with metadata.
+ * Bind subquery table segment.
*
* @param segment join table segment
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @param outerTableBinderContexts outer table binder contexts
* @return bounded subquery table segment
*/
- public static SubqueryTableSegment bind(final SubqueryTableSegment
segment, final SQLStatementBinderContext statementBinderContext,
+ public static SubqueryTableSegment bind(final SubqueryTableSegment
segment, final SQLStatementBinderContext binderContext,
final Map<String,
TableSegmentBinderContext> tableBinderContexts, final Map<String,
TableSegmentBinderContext> outerTableBinderContexts) {
- fillPivotColumnNamesInBinderContext(segment, statementBinderContext);
- SQLStatementBinderContext binderContext = new
SQLStatementBinderContext(
- segment.getSubquery().getSelect(),
statementBinderContext.getMetaData(),
statementBinderContext.getCurrentDatabaseName());
-
binderContext.getExternalTableBinderContexts().putAll(statementBinderContext.getExternalTableBinderContexts());
- SelectStatement boundedSelect = new
SelectStatementBinder(outerTableBinderContexts).bind(segment.getSubquery().getSelect(),
binderContext);
+ fillPivotColumnNamesInBinderContext(segment, binderContext);
+ SQLStatementBinderContext subQueryBinderContext = new
SQLStatementBinderContext(segment.getSubquery().getSelect(),
binderContext.getMetaData(), binderContext.getCurrentDatabaseName());
+
subQueryBinderContext.getExternalTableBinderContexts().putAll(binderContext.getExternalTableBinderContexts());
+ SelectStatement boundedSelect = new
SelectStatementBinder(outerTableBinderContexts).bind(segment.getSubquery().getSelect(),
subQueryBinderContext);
SubquerySegment boundedSubquerySegment = new
SubquerySegment(segment.getSubquery().getStartIndex(),
segment.getSubquery().getStopIndex(), boundedSelect,
segment.getSubquery().getText());
boundedSubquerySegment.setSubqueryType(segment.getSubquery().getSubqueryType());
IdentifierValue subqueryTableName =
segment.getAliasSegment().map(AliasSegment::getIdentifier).orElseGet(() -> new
IdentifierValue(""));
@@ -79,7 +78,7 @@ public final class SubqueryTableSegmentBinder {
SubqueryTableSegment result = new
SubqueryTableSegment(segment.getStartIndex(), segment.getStopIndex(),
boundedSubquerySegment);
segment.getAliasSegment().ifPresent(result::setAlias);
tableBinderContexts.put(subqueryTableName.getValue().toLowerCase(),
- new
SimpleTableSegmentBinderContext(createSubqueryProjections(boundedSelect.getProjections().getProjections(),
subqueryTableName, statementBinderContext.getDatabaseType())));
+ new
SimpleTableSegmentBinderContext(createSubqueryProjections(boundedSelect.getProjections().getProjections(),
subqueryTableName, binderContext.getDatabaseType())));
return result;
}
@@ -99,8 +98,8 @@ public final class SubqueryTableSegmentBinder {
}
}
- private static void fillPivotColumnNamesInBinderContext(final
SubqueryTableSegment segment, final SQLStatementBinderContext
statementBinderContext) {
- segment.getPivot().ifPresent(optional ->
optional.getPivotColumns().forEach(each ->
statementBinderContext.getPivotColumnNames().add(each.getIdentifier().getValue().toLowerCase())));
+ private static void fillPivotColumnNamesInBinderContext(final
SubqueryTableSegment segment, final SQLStatementBinderContext binderContext) {
+ segment.getPivot().ifPresent(optional ->
optional.getPivotColumns().forEach(each ->
binderContext.getPivotColumnNames().add(each.getIdentifier().getValue().toLowerCase())));
}
private static Collection<ProjectionSegment>
createSubqueryProjections(final Collection<ProjectionSegment> projections,
final IdentifierValue subqueryTableName, final DatabaseType databaseType) {
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 b4d0fe27cb2..6cc505b7c8d 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
@@ -37,18 +37,18 @@ import java.util.Map;
public final class LockSegmentBinder {
/**
- * Bind lock segment with metadata.
+ * Bind lock segment.
*
* @param segment lock segment
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @param outerTableBinderContexts outer table binder contexts
* @return bounded lock segment
*/
- public static LockSegment bind(final LockSegment segment, final
SQLStatementBinderContext statementBinderContext,
+ public static LockSegment bind(final LockSegment segment, final
SQLStatementBinderContext binderContext,
final Map<String,
TableSegmentBinderContext> tableBinderContexts, final Map<String,
TableSegmentBinderContext> outerTableBinderContexts) {
Collection<ColumnSegment> boundedColumns = new LinkedList<>();
- segment.getColumns().forEach(each ->
boundedColumns.add(ColumnSegmentBinder.bind(each, SegmentType.LOCK,
statementBinderContext, tableBinderContexts, outerTableBinderContexts)));
+ segment.getColumns().forEach(each ->
boundedColumns.add(ColumnSegmentBinder.bind(each, SegmentType.LOCK,
binderContext, tableBinderContexts, outerTableBinderContexts)));
LockSegment result = new LockSegment(segment.getStartIndex(),
segment.getStopIndex());
result.getTables().addAll(segment.getTables());
result.getColumns().addAll(boundedColumns);
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/parameter/ParameterMarkerSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/parameter/ParameterMarkerSegmentBinder.java
index c7990751b64..0e020ce75b1 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/parameter/ParameterMarkerSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/parameter/ParameterMarkerSegmentBinder.java
@@ -35,7 +35,7 @@ import java.util.Map;
public final class ParameterMarkerSegmentBinder {
/**
- * Bind parameter marker segment with metadata.
+ * Bind parameter marker segment.
*
* @param parameterMarkerSegments parameter marker segments
* @param parameterMarkerSegmentBoundedInfos parameter marker segment
bounded infos
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/parameter/impl/ParameterMarkerExpressionSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/parameter/impl/ParameterMarkerExpressionSegmentBinder.java
index 3e2db9b43a5..341c6908e05 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/parameter/impl/ParameterMarkerExpressionSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/parameter/impl/ParameterMarkerExpressionSegmentBinder.java
@@ -38,24 +38,24 @@ import java.util.Map;
public final class ParameterMarkerExpressionSegmentBinder {
/**
- * Bind binary operation expression with metadata.
+ * Bind binary operation expression.
*
* @param segment binary operation expression segment
* @param parentSegmentType parent segment type
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @param outerTableBinderContexts outer table binder contexts
* @return bounded binary operation expression segment
*/
- public static BinaryOperationExpression bind(final
BinaryOperationExpression segment, final SegmentType parentSegmentType, final
SQLStatementBinderContext statementBinderContext,
+ public static BinaryOperationExpression bind(final
BinaryOperationExpression segment, final SegmentType parentSegmentType, final
SQLStatementBinderContext binderContext,
final Map<String,
TableSegmentBinderContext> tableBinderContexts, final Map<String,
TableSegmentBinderContext> outerTableBinderContexts) {
- ExpressionSegment boundedLeft =
ExpressionSegmentBinder.bind(segment.getLeft(), parentSegmentType,
statementBinderContext, tableBinderContexts, outerTableBinderContexts);
- ExpressionSegment boundedRight =
ExpressionSegmentBinder.bind(segment.getRight(), parentSegmentType,
statementBinderContext, tableBinderContexts, outerTableBinderContexts);
+ ExpressionSegment boundedLeft =
ExpressionSegmentBinder.bind(segment.getLeft(), parentSegmentType,
binderContext, tableBinderContexts, outerTableBinderContexts);
+ ExpressionSegment boundedRight =
ExpressionSegmentBinder.bind(segment.getRight(), parentSegmentType,
binderContext, tableBinderContexts, outerTableBinderContexts);
return new BinaryOperationExpression(segment.getStartIndex(),
segment.getStopIndex(), boundedLeft, boundedRight, segment.getOperator(),
segment.getText());
}
/**
- * Bind parameter marker expression segment with metadata.
+ * Bind parameter marker expression segment.
*
* @param segment parameter marker expression segment
* @param boundedInfos parameter marker expression segment bounded info map
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/ProjectionsSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/ProjectionsSegmentBinder.java
index 61922ba6423..4be953613f8 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/ProjectionsSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/ProjectionsSegmentBinder.java
@@ -44,28 +44,28 @@ import java.util.Map;
public final class ProjectionsSegmentBinder {
/**
- * Bind projections segment with metadata.
+ * Bind projections segment.
*
* @param segment table segment
- * @param statementBinderContext statement binder context
+ * @param binderContext statement binder context
* @param boundedTableSegment bounded table segment
* @param tableBinderContexts table binder contexts
* @param outerTableBinderContexts outer table binder contexts
* @return bounded projections segment
*/
- public static ProjectionsSegment bind(final ProjectionsSegment segment,
final SQLStatementBinderContext statementBinderContext, final TableSegment
boundedTableSegment,
+ public static ProjectionsSegment bind(final ProjectionsSegment segment,
final SQLStatementBinderContext binderContext, final TableSegment
boundedTableSegment,
final Map<String,
TableSegmentBinderContext> tableBinderContexts, final Map<String,
TableSegmentBinderContext> outerTableBinderContexts) {
ProjectionsSegment result = new
ProjectionsSegment(segment.getStartIndex(), segment.getStopIndex());
result.setDistinctRow(segment.isDistinctRow());
- segment.getProjections().forEach(each ->
result.getProjections().add(bind(each, statementBinderContext,
boundedTableSegment, tableBinderContexts, outerTableBinderContexts)));
+ segment.getProjections().forEach(each ->
result.getProjections().add(bind(each, binderContext, boundedTableSegment,
tableBinderContexts, outerTableBinderContexts)));
return result;
}
- private static ProjectionSegment bind(final ProjectionSegment
projectionSegment, final SQLStatementBinderContext statementBinderContext,
+ private static ProjectionSegment bind(final ProjectionSegment
projectionSegment, final SQLStatementBinderContext binderContext,
final TableSegment
boundedTableSegment, final Map<String, TableSegmentBinderContext>
tableBinderContexts,
final Map<String,
TableSegmentBinderContext> outerTableBinderContexts) {
if (projectionSegment instanceof ColumnProjectionSegment) {
- return
ColumnProjectionSegmentBinder.bind((ColumnProjectionSegment) projectionSegment,
statementBinderContext, tableBinderContexts);
+ return
ColumnProjectionSegmentBinder.bind((ColumnProjectionSegment) projectionSegment,
binderContext, tableBinderContexts);
}
if (projectionSegment instanceof ShorthandProjectionSegment) {
return
ShorthandProjectionSegmentBinder.bind((ShorthandProjectionSegment)
projectionSegment, boundedTableSegment, tableBinderContexts);
@@ -74,12 +74,12 @@ public final class ProjectionsSegmentBinder {
Map<String, TableSegmentBinderContext> newOuterTableBinderContexts
= new LinkedHashMap<>(outerTableBinderContexts.size() +
tableBinderContexts.size(), 1F);
newOuterTableBinderContexts.putAll(outerTableBinderContexts);
newOuterTableBinderContexts.putAll(tableBinderContexts);
- return
SubqueryProjectionSegmentBinder.bind((SubqueryProjectionSegment)
projectionSegment, statementBinderContext, newOuterTableBinderContexts);
+ return
SubqueryProjectionSegmentBinder.bind((SubqueryProjectionSegment)
projectionSegment, binderContext, newOuterTableBinderContexts);
}
if (projectionSegment instanceof ExpressionProjectionSegment) {
ExpressionProjectionSegment result = new
ExpressionProjectionSegment(projectionSegment.getStartIndex(),
projectionSegment.getStopIndex(),
((ExpressionProjectionSegment)
projectionSegment).getText(),
ExpressionSegmentBinder.bind(((ExpressionProjectionSegment)
projectionSegment).getExpr(), SegmentType.PROJECTION,
- statementBinderContext, tableBinderContexts,
outerTableBinderContexts));
+ binderContext, tableBinderContexts,
outerTableBinderContexts));
result.setAlias(((ExpressionProjectionSegment)
projectionSegment).getAliasSegment());
return result;
}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/impl/ColumnProjectionSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/impl/ColumnProjectionSegmentBinder.java
index 8a86996a1e4..d3aa55fac4d 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/impl/ColumnProjectionSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/impl/ColumnProjectionSegmentBinder.java
@@ -36,16 +36,16 @@ import java.util.Map;
public final class ColumnProjectionSegmentBinder {
/**
- * Bind column projection segment with metadata.
+ * Bind column projection segment.
*
* @param segment table segment
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @return bounded column projection segment
*/
- public static ColumnProjectionSegment bind(final ColumnProjectionSegment
segment, final SQLStatementBinderContext statementBinderContext,
- final Map<String,
TableSegmentBinderContext> tableBinderContexts) {
- ColumnSegment boundedColumn =
ColumnSegmentBinder.bind(segment.getColumn(), SegmentType.PROJECTION,
statementBinderContext, tableBinderContexts, Collections.emptyMap());
+ public static ColumnProjectionSegment bind(final ColumnProjectionSegment
segment,
+ final SQLStatementBinderContext
binderContext, final Map<String, TableSegmentBinderContext>
tableBinderContexts) {
+ ColumnSegment boundedColumn =
ColumnSegmentBinder.bind(segment.getColumn(), SegmentType.PROJECTION,
binderContext, tableBinderContexts, Collections.emptyMap());
ColumnProjectionSegment result = new
ColumnProjectionSegment(boundedColumn);
segment.getAliasSegment().ifPresent(result::setAlias);
result.setVisible(segment.isVisible());
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/impl/ShorthandProjectionSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/impl/ShorthandProjectionSegmentBinder.java
index a28a1f12d4e..c30bd6028f8 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/impl/ShorthandProjectionSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/impl/ShorthandProjectionSegmentBinder.java
@@ -38,7 +38,7 @@ import java.util.Map;
public final class ShorthandProjectionSegmentBinder {
/**
- * Bind column projection segment with metadata.
+ * Bind column projection segment.
*
* @param segment table segment
* @param boundedTableSegment bounded table segment
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/impl/SubqueryProjectionSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/impl/SubqueryProjectionSegmentBinder.java
index 242b269284e..a7605482c60 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/impl/SubqueryProjectionSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/projection/impl/SubqueryProjectionSegmentBinder.java
@@ -34,16 +34,16 @@ import java.util.Map;
public final class SubqueryProjectionSegmentBinder {
/**
- * Bind subquery projection segment with metadata.
+ * Bind subquery projection segment.
*
* @param segment subquery projection segment
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @return bounded subquery projection segment
*/
- public static SubqueryProjectionSegment bind(final
SubqueryProjectionSegment segment, final SQLStatementBinderContext
statementBinderContext,
+ public static SubqueryProjectionSegment bind(final
SubqueryProjectionSegment segment, final SQLStatementBinderContext
binderContext,
final Map<String,
TableSegmentBinderContext> tableBinderContexts) {
- SubquerySegment boundedSubquerySegment =
SubquerySegmentBinder.bind(segment.getSubquery(), statementBinderContext,
tableBinderContexts);
+ SubquerySegment boundedSubquerySegment =
SubquerySegmentBinder.bind(segment.getSubquery(), binderContext,
tableBinderContexts);
SubqueryProjectionSegment result = new
SubqueryProjectionSegment(boundedSubquerySegment, segment.getText());
segment.getAliasSegment().ifPresent(result::setAlias);
return result;
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/where/WhereSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/where/WhereSegmentBinder.java
index bea86e2fdd5..39c40510bf8 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/where/WhereSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/where/WhereSegmentBinder.java
@@ -34,17 +34,17 @@ import java.util.Map;
public final class WhereSegmentBinder {
/**
- * Bind where segment with metadata.
+ * Bind where segment.
*
* @param segment where segment
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @param outerTableBinderContexts outer table binder contexts
* @return bound where segment
*/
- public static WhereSegment bind(final WhereSegment segment, final
SQLStatementBinderContext statementBinderContext,
+ public static WhereSegment bind(final WhereSegment segment, final
SQLStatementBinderContext binderContext,
final Map<String,
TableSegmentBinderContext> tableBinderContexts, final Map<String,
TableSegmentBinderContext> outerTableBinderContexts) {
return new WhereSegment(segment.getStartIndex(),
segment.getStopIndex(),
- ExpressionSegmentBinder.bind(segment.getExpr(),
SegmentType.PREDICATE, statementBinderContext, tableBinderContexts,
outerTableBinderContexts));
+ ExpressionSegmentBinder.bind(segment.getExpr(),
SegmentType.PREDICATE, binderContext, tableBinderContexts,
outerTableBinderContexts));
}
}
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 afb6949b44c..7ccaac9d166 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
@@ -34,16 +34,16 @@ import java.util.Map;
public final class CommonTableExpressionSegmentBinder {
/**
- * Bind common table expression segment with metadata.
+ * Bind common table expression segment.
*
* @param segment common table expression segment
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @return bounded common table expression segment
*/
- public static CommonTableExpressionSegment bind(final
CommonTableExpressionSegment segment, final SQLStatementBinderContext
statementBinderContext,
+ public static CommonTableExpressionSegment bind(final
CommonTableExpressionSegment segment, final SQLStatementBinderContext
binderContext,
final Map<String,
TableSegmentBinderContext> tableBinderContexts) {
- SubquerySegment boundedSubquerySegment =
SubquerySegmentBinder.bind(segment.getSubquery(), statementBinderContext,
tableBinderContexts);
+ SubquerySegment boundedSubquerySegment =
SubquerySegmentBinder.bind(segment.getSubquery(), binderContext,
tableBinderContexts);
CommonTableExpressionSegment result = new
CommonTableExpressionSegment(segment.getStartIndex(), segment.getStopIndex(),
segment.getAliasSegment(), boundedSubquerySegment);
// TODO bind with columns
result.getColumns().addAll(segment.getColumns());
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/with/WithSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/with/WithSegmentBinder.java
index 5fd33ad99b3..037e4585196 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/with/WithSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/with/WithSegmentBinder.java
@@ -36,19 +36,19 @@ import java.util.Map;
public final class WithSegmentBinder {
/**
- * Bind with segment with metadata.
+ * Bind with segment.
*
* @param segment with segment
- * @param statementBinderContext statement binder context
+ * @param binderContext SQL statement binder context
* @param tableBinderContexts table binder contexts
* @param externalTableBinderContexts external table binder contexts
* @return bounded with segment
*/
- public static WithSegment bind(final WithSegment segment, final
SQLStatementBinderContext statementBinderContext, final Map<String,
TableSegmentBinderContext> tableBinderContexts,
+ public static WithSegment bind(final WithSegment segment, final
SQLStatementBinderContext binderContext, final Map<String,
TableSegmentBinderContext> tableBinderContexts,
final Map<String,
TableSegmentBinderContext> externalTableBinderContexts) {
Collection<CommonTableExpressionSegment> boundedCommonTableExpressions
= new LinkedList<>();
for (CommonTableExpressionSegment each :
segment.getCommonTableExpressions()) {
- CommonTableExpressionSegment boundedCommonTableExpression =
CommonTableExpressionSegmentBinder.bind(each, statementBinderContext,
tableBinderContexts);
+ CommonTableExpressionSegment boundedCommonTableExpression =
CommonTableExpressionSegmentBinder.bind(each, binderContext,
tableBinderContexts);
boundedCommonTableExpressions.add(boundedCommonTableExpression);
each.getAliasName().ifPresent(aliasName ->
externalTableBinderContexts.put(aliasName,
new
SimpleTableSegmentBinderContext(boundedCommonTableExpression.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/impl/BinaryOperationExpressionBinderTest.java
index 445de08bccb..d3937cccfbe 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/impl/BinaryOperationExpressionBinderTest.java
@@ -36,9 +36,9 @@ class BinaryOperationExpressionBinderTest {
BinaryOperationExpression binaryOperationExpression = new
BinaryOperationExpression(0, 0,
new LiteralExpressionSegment(0, 0, "test"),
new LiteralExpressionSegment(0, 0, "test"), "=", "test");
- SQLStatementBinderContext statementBinderContext =
mock(SQLStatementBinderContext.class);
+ SQLStatementBinderContext binderContext =
mock(SQLStatementBinderContext.class);
BinaryOperationExpression actual =
BinaryOperationExpressionBinder.bind(binaryOperationExpression,
SegmentType.PROJECTION,
- statementBinderContext, Collections.emptyMap(),
Collections.emptyMap());
+ binderContext, Collections.emptyMap(), Collections.emptyMap());
assertThat(actual.getLeft().getText(), is("test"));
assertThat(actual.getRight().getText(), is("test"));
assertThat(actual.getOperator(), is("="));
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/impl/ColumnSegmentBinderTest.java
index de309113361..afbc4157e34 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/impl/ColumnSegmentBinderTest.java
@@ -55,9 +55,9 @@ class ColumnSegmentBinderTest {
new IdentifierValue("t_order_item"), new
IdentifierValue("item_id")));
tableBinderContexts.put("t_order_item", new
SimpleTableSegmentBinderContext(Collections.singleton(new
ColumnProjectionSegment(boundedItemIdColumn))));
ColumnSegment columnSegment = new ColumnSegment(0, 0, new
IdentifierValue("order_id"));
- SQLStatementBinderContext statementBinderContext =
+ SQLStatementBinderContext binderContext =
new
SQLStatementBinderContext(mock(ShardingSphereMetaData.class),
DefaultDatabase.LOGIC_NAME, TypedSPILoader.getService(DatabaseType.class,
"FIXTURE"), Collections.emptySet());
- ColumnSegment actual = ColumnSegmentBinder.bind(columnSegment,
SegmentType.JOIN_ON, statementBinderContext, tableBinderContexts,
Collections.emptyMap());
+ ColumnSegment actual = ColumnSegmentBinder.bind(columnSegment,
SegmentType.JOIN_ON, binderContext, tableBinderContexts,
Collections.emptyMap());
assertNotNull(actual.getColumnBoundedInfo());
assertNull(actual.getOtherUsingColumnBoundedInfo());
assertThat(actual.getColumnBoundedInfo().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
@@ -77,10 +77,10 @@ class ColumnSegmentBinderTest {
boundedOrderItemStatusColumn.setColumnBoundedInfo(new
ColumnSegmentBoundedInfo(new IdentifierValue(DefaultDatabase.LOGIC_NAME), new
IdentifierValue(DefaultDatabase.LOGIC_NAME),
new IdentifierValue("t_order_item"), new
IdentifierValue("status")));
outerTableBinderContexts.put("t_order_item", new
SimpleTableSegmentBinderContext(Collections.singleton(new
ColumnProjectionSegment(boundedOrderItemStatusColumn))));
- SQLStatementBinderContext statementBinderContext =
+ SQLStatementBinderContext binderContext =
new
SQLStatementBinderContext(mock(ShardingSphereMetaData.class),
DefaultDatabase.LOGIC_NAME, TypedSPILoader.getService(DatabaseType.class,
"FIXTURE"), Collections.emptySet());
ColumnSegment columnSegment = new ColumnSegment(0, 0, new
IdentifierValue("status"));
- ColumnSegment actual = ColumnSegmentBinder.bind(columnSegment,
SegmentType.PROJECTION, statementBinderContext, Collections.emptyMap(),
outerTableBinderContexts);
+ ColumnSegment actual = ColumnSegmentBinder.bind(columnSegment,
SegmentType.PROJECTION, binderContext, Collections.emptyMap(),
outerTableBinderContexts);
assertNotNull(actual.getColumnBoundedInfo());
assertNull(actual.getOtherUsingColumnBoundedInfo());
assertThat(actual.getColumnBoundedInfo().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
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/impl/ExistsSubqueryExpressionBinderTest.java
index d6b08ea87a4..e4033eaf4e7 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/impl/ExistsSubqueryExpressionBinderTest.java
@@ -39,11 +39,9 @@ class ExistsSubqueryExpressionBinderTest {
void assertBindExistsSubqueryExpression() {
MySQLSelectStatement selectStatement = new MySQLSelectStatement();
selectStatement.setProjections(new ProjectionsSegment(0, 0));
- ExistsSubqueryExpression existsSubqueryExpression = new
ExistsSubqueryExpression(0, 0,
- new SubquerySegment(0, 0, selectStatement, "t_test"));
- SQLStatementBinderContext statementBinderContext = new
SQLStatementBinderContext(mock(ShardingSphereMetaData.class),
- DefaultDatabase.LOGIC_NAME, new MockedDatabaseType(),
Collections.emptyList());
- ExistsSubqueryExpression actual =
ExistsSubqueryExpressionBinder.bind(existsSubqueryExpression,
statementBinderContext, Collections.emptyMap());
+ ExistsSubqueryExpression existsSubqueryExpression = new
ExistsSubqueryExpression(0, 0, new SubquerySegment(0, 0, selectStatement,
"t_test"));
+ SQLStatementBinderContext binderContext = new
SQLStatementBinderContext(mock(ShardingSphereMetaData.class),
DefaultDatabase.LOGIC_NAME, new MockedDatabaseType(), Collections.emptyList());
+ ExistsSubqueryExpression actual =
ExistsSubqueryExpressionBinder.bind(existsSubqueryExpression, binderContext,
Collections.emptyMap());
assertThat(actual.getStartIndex(),
is(existsSubqueryExpression.getStartIndex()));
assertThat(actual.getStopIndex(),
is(existsSubqueryExpression.getStopIndex()));
assertThat(actual.getText(), is("t_test"));
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/impl/FunctionExpressionSegmentBinderTest.java
index 019369fa643..4b5aad0069e 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/impl/FunctionExpressionSegmentBinderTest.java
@@ -35,8 +35,8 @@ class FunctionExpressionSegmentBinderTest {
@Test
void assertBindFunctionExpressionSegment() {
FunctionSegment functionSegment = new FunctionSegment(0, 0, "CONCAT",
"('%','abc','%')");
- SQLStatementBinderContext statementBinderContext = new
SQLStatementBinderContext(new ShardingSphereMetaData(),
DefaultDatabase.LOGIC_NAME, new MockedDatabaseType(), Collections.emptyList());
- FunctionSegment actual =
FunctionExpressionSegmentBinder.bind(functionSegment, SegmentType.PROJECTION,
statementBinderContext, Collections.emptyMap(), Collections.emptyMap());
+ SQLStatementBinderContext binderContext = new
SQLStatementBinderContext(new ShardingSphereMetaData(),
DefaultDatabase.LOGIC_NAME, new MockedDatabaseType(), Collections.emptyList());
+ FunctionSegment actual =
FunctionExpressionSegmentBinder.bind(functionSegment, SegmentType.PROJECTION,
binderContext, Collections.emptyMap(), Collections.emptyMap());
assertThat(actual.getStartIndex(),
is(functionSegment.getStartIndex()));
assertThat(actual.getStopIndex(), is(functionSegment.getStopIndex()));
assertThat(actual.getFunctionName(), is("CONCAT"));
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/impl/InExpressionBinderTest.java
index 2336d062644..ac0eacea22f 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/impl/InExpressionBinderTest.java
@@ -37,9 +37,9 @@ class InExpressionBinderTest {
InExpression inExpression = new InExpression(0, 10,
new LiteralExpressionSegment(0, 0, "left"),
new LiteralExpressionSegment(0, 0, "right"), true);
- SQLStatementBinderContext statementBinderContext =
mock(SQLStatementBinderContext.class);
+ SQLStatementBinderContext binderContext =
mock(SQLStatementBinderContext.class);
InExpression actual = InExpressionBinder.bind(inExpression,
SegmentType.PROJECTION,
- statementBinderContext, Collections.emptyMap(),
Collections.emptyMap());
+ 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/impl/NotExpressionBinderTest.java
index a1ce56fbdd1..1fd70e510ea 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/impl/NotExpressionBinderTest.java
@@ -34,8 +34,8 @@ class NotExpressionBinderTest {
@Test
void assertBind() {
NotExpression notExpression = new NotExpression(0, 10, new
LiteralExpressionSegment(0, 0, "test"), true);
- SQLStatementBinderContext statementBinderContext =
mock(SQLStatementBinderContext.class);
- NotExpression actual = NotExpressionBinder.bind(notExpression,
SegmentType.PROJECTION, statementBinderContext, Collections.emptyMap());
+ SQLStatementBinderContext binderContext =
mock(SQLStatementBinderContext.class);
+ NotExpression actual = NotExpressionBinder.bind(notExpression,
SegmentType.PROJECTION, binderContext, Collections.emptyMap());
assertThat(actual.getNotSign(), is(notExpression.getNotSign()));
assertThat(actual.getStartIndex(), is(notExpression.getStartIndex()));
assertThat(actual.getStopIndex(), is(notExpression.getStopIndex()));
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
index 56f396900dd..863c373b0d3 100644
---
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
@@ -42,10 +42,10 @@ class SubqueryExpressionSegmentBinderTest {
selectStatement.setProjections(new ProjectionsSegment(0, 0));
SubquerySegment subquery = new SubquerySegment(0, 10, selectStatement,
"subquery");
SubqueryExpressionSegment segment = new
SubqueryExpressionSegment(subquery);
- SQLStatementBinderContext statementBinderContext = new
SQLStatementBinderContext(null, null, null, null);
+ SQLStatementBinderContext binderContext = new
SQLStatementBinderContext(null, null, null, null);
Map<String, TableSegmentBinderContext> tableBinderContexts = new
HashMap<>();
- SubqueryExpressionSegment actual =
SubqueryExpressionSegmentBinder.bind(segment, statementBinderContext,
tableBinderContexts);
- SubqueryExpressionSegment expected = new
SubqueryExpressionSegment(SubquerySegmentBinder.bind(segment.getSubquery(),
statementBinderContext, tableBinderContexts));
+ 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()));