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()));

Reply via email to