This is an automated email from the ASF dual-hosted git repository.

duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new a4b557d4e48 Move ColumnSegmentInputInfo to inner class (#35691)
a4b557d4e48 is described below

commit a4b557d4e484cca7e17e4cd4d905cc66df0b4c00
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Jun 13 13:55:54 2025 +0800

    Move ColumnSegmentInputInfo to inner class (#35691)
---
 .../dml/expression/type/ColumnSegmentBinder.java   | 58 ++++++++++++++--------
 .../generic/bound/ColumnSegmentInputInfo.java      | 51 -------------------
 2 files changed, 36 insertions(+), 73 deletions(-)

diff --git 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/expression/type/ColumnSegmentBinder.java
 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/expression/type/ColumnSegmentBinder.java
index 163325b59a5..3b9951271b8 100644
--- 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/expression/type/ColumnSegmentBinder.java
+++ 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/expression/type/ColumnSegmentBinder.java
@@ -22,7 +22,9 @@ import com.cedarsoftware.util.CaseInsensitiveSet;
 import com.google.common.base.Strings;
 import com.google.common.collect.Multimap;
 import lombok.AccessLevel;
+import lombok.Getter;
 import lombok.NoArgsConstructor;
+import lombok.RequiredArgsConstructor;
 import org.apache.groovy.util.Maps;
 import org.apache.shardingsphere.infra.binder.engine.segment.SegmentType;
 import 
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.TableSegmentBinderContext;
@@ -38,7 +40,6 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.item.Colu
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.item.ProjectionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.OwnerSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.bound.ColumnSegmentBoundInfo;
-import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.bound.ColumnSegmentInputInfo;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.bound.TableSegmentBoundInfo;
 import 
org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
 
@@ -84,11 +85,11 @@ public final class ColumnSegmentBinder {
         }
         ColumnSegment result = copy(segment);
         Collection<TableSegmentBinderContext> tableSegmentBinderContexts = 
getTableSegmentBinderContexts(segment, parentSegmentType, binderContext, 
tableBinderContexts, outerTableBinderContexts);
-        ColumnSegmentInputInfo columnSegmentInputInfo = 
getColumnSegmentInputInfo(segment, parentSegmentType, 
tableSegmentBinderContexts, outerTableBinderContexts, binderContext);
-        Optional<ColumnSegment> inputColumnSegment = 
columnSegmentInputInfo.getInputColumnSegment();
+        ColumnSegmentInfo columnSegmentInfo = getColumnSegmentInfo(segment, 
parentSegmentType, tableSegmentBinderContexts, outerTableBinderContexts, 
binderContext);
+        Optional<ColumnSegment> inputColumnSegment = 
columnSegmentInfo.getInputColumnSegment();
         inputColumnSegment.ifPresent(optional -> 
result.setVariable(optional.isVariable()));
         segment.getOwner().ifPresent(optional -> 
result.setOwner(bindOwnerTableContext(optional, 
inputColumnSegment.orElse(null))));
-        result.setColumnBoundInfo(createColumnSegmentBoundInfo(segment, 
inputColumnSegment.orElse(null), columnSegmentInputInfo.getTableSourceType()));
+        result.setColumnBoundInfo(createColumnSegmentBoundInfo(segment, 
inputColumnSegment.orElse(null), columnSegmentInfo.getTableSourceType()));
         return result;
     }
     
@@ -145,29 +146,29 @@ public final class ColumnSegmentBinder {
                 || SegmentType.PREDICATE == parentSegmentType && 
binderContext.getUsingColumnNames().contains(segment.getIdentifier().getValue());
     }
     
-    private static ColumnSegmentInputInfo getColumnSegmentInputInfo(final 
ColumnSegment segment, final SegmentType parentSegmentType, final 
Collection<TableSegmentBinderContext> tableBinderContexts,
-                                                                    final 
Multimap<CaseInsensitiveString, TableSegmentBinderContext> 
outerTableBinderContexts,
-                                                                    final 
SQLStatementBinderContext binderContext) {
-        ColumnSegmentInputInfo result = 
getInputInfoFromTableBinderContexts(tableBinderContexts, segment, 
parentSegmentType);
+    private static ColumnSegmentInfo getColumnSegmentInfo(final ColumnSegment 
segment, final SegmentType parentSegmentType, final 
Collection<TableSegmentBinderContext> tableBinderContexts,
+                                                          final 
Multimap<CaseInsensitiveString, TableSegmentBinderContext> 
outerTableBinderContexts,
+                                                          final 
SQLStatementBinderContext binderContext) {
+        ColumnSegmentInfo result = 
getInputInfoFromTableBinderContexts(tableBinderContexts, segment, 
parentSegmentType);
         if (!result.getInputColumnSegment().isPresent()) {
-            result = new 
ColumnSegmentInputInfo(findInputColumnSegmentFromOuterTable(segment, 
outerTableBinderContexts).orElse(null));
+            result = new 
ColumnSegmentInfo(findInputColumnSegmentFromOuterTable(segment, 
outerTableBinderContexts).orElse(null), TableSourceType.TEMPORARY_TABLE);
         }
         if (!result.getInputColumnSegment().isPresent()) {
-            result = new 
ColumnSegmentInputInfo(findInputColumnSegmentFromExternalTables(segment, 
binderContext.getExternalTableBinderContexts()).orElse(null));
+            result = new 
ColumnSegmentInfo(findInputColumnSegmentFromExternalTables(segment, 
binderContext.getExternalTableBinderContexts()).orElse(null), 
TableSourceType.TEMPORARY_TABLE);
         }
         if (!result.getInputColumnSegment().isPresent()) {
-            result = new 
ColumnSegmentInputInfo(findInputColumnSegmentByVariables(segment, 
binderContext.getSqlStatement().getVariableNames()).orElse(null));
+            result = new 
ColumnSegmentInfo(findInputColumnSegmentByVariables(segment, 
binderContext.getSqlStatement().getVariableNames()).orElse(null), 
TableSourceType.TEMPORARY_TABLE);
         }
         if (!result.getInputColumnSegment().isPresent()) {
-            result = new 
ColumnSegmentInputInfo(findInputColumnSegmentByPivotColumns(segment, 
binderContext.getPivotColumnNames()).orElse(null));
+            result = new 
ColumnSegmentInfo(findInputColumnSegmentByPivotColumns(segment, 
binderContext.getPivotColumnNames()).orElse(null), 
TableSourceType.TEMPORARY_TABLE);
         }
         
ShardingSpherePreconditions.checkState(result.getInputColumnSegment().isPresent()
 || isSkipColumnBind(tableBinderContexts, outerTableBinderContexts.values()),
                 () -> new ColumnNotFoundException(segment.getExpression(), 
SEGMENT_TYPE_MESSAGES.getOrDefault(parentSegmentType, 
UNKNOWN_SEGMENT_TYPE_MESSAGE)));
         return result;
     }
     
-    private static ColumnSegmentInputInfo 
getInputInfoFromTableBinderContexts(final Collection<TableSegmentBinderContext> 
tableBinderContexts,
-                                                                              
final ColumnSegment segment, final SegmentType parentSegmentType) {
+    private static ColumnSegmentInfo getInputInfoFromTableBinderContexts(final 
Collection<TableSegmentBinderContext> tableBinderContexts,
+                                                                         final 
ColumnSegment segment, final SegmentType parentSegmentType) {
         ColumnSegment inputColumnSegment = null;
         TableSourceType tableSourceType = TableSourceType.TEMPORARY_TABLE;
         for (TableSegmentBinderContext each : tableBinderContexts) {
@@ -185,7 +186,7 @@ public final class ColumnSegmentBinder {
                 break;
             }
         }
-        return new ColumnSegmentInputInfo(inputColumnSegment, tableSourceType);
+        return new ColumnSegmentInfo(inputColumnSegment, tableSourceType);
     }
     
     private static TableSourceType getTableSourceTypeFromInputColumn(final 
ColumnSegment inputColumnSegment) {
@@ -281,25 +282,38 @@ public final class ColumnSegmentBinder {
     public static ColumnSegment bindUsingColumn(final ColumnSegment segment, 
final SegmentType parentSegmentType,
                                                 final 
Multimap<CaseInsensitiveString, TableSegmentBinderContext> tableBinderContexts) 
{
         ColumnSegment result = copy(segment);
-        List<ColumnSegmentInputInfo> usingColumnSegmentInputInfos = 
findUsingColumnSegmentInputInfos(tableBinderContexts.values(), 
segment.getIdentifier().getValue());
-        
ShardingSpherePreconditions.checkState(usingColumnSegmentInputInfos.size() >= 2,
+        List<ColumnSegmentInfo> usingColumnSegmentInfos = 
findUsingColumnSegmentInfos(tableBinderContexts.values(), 
segment.getIdentifier().getValue());
+        ShardingSpherePreconditions.checkState(usingColumnSegmentInfos.size() 
>= 2,
                 () -> new ColumnNotFoundException(segment.getExpression(), 
SEGMENT_TYPE_MESSAGES.getOrDefault(parentSegmentType, 
UNKNOWN_SEGMENT_TYPE_MESSAGE)));
-        ColumnSegmentInputInfo usingColumnInputInfo = 
usingColumnSegmentInputInfos.get(0);
-        ColumnSegmentInputInfo otherUsingColumnInputInfo = 
usingColumnSegmentInputInfos.get(1);
+        ColumnSegmentInfo usingColumnInputInfo = 
usingColumnSegmentInfos.get(0);
+        ColumnSegmentInfo otherUsingColumnInputInfo = 
usingColumnSegmentInfos.get(1);
         result.setColumnBoundInfo(createColumnSegmentBoundInfo(segment, 
usingColumnInputInfo.getInputColumnSegment().orElse(null), 
usingColumnInputInfo.getTableSourceType()));
         
result.setOtherUsingColumnBoundInfo(createColumnSegmentBoundInfo(segment, 
otherUsingColumnInputInfo.getInputColumnSegment().orElse(null), 
otherUsingColumnInputInfo.getTableSourceType()));
         return result;
     }
     
-    private static List<ColumnSegmentInputInfo> 
findUsingColumnSegmentInputInfos(final Collection<TableSegmentBinderContext> 
tableBinderContexts, final String columnName) {
-        List<ColumnSegmentInputInfo> result = new 
ArrayList<>(tableBinderContexts.size());
+    private static List<ColumnSegmentInfo> findUsingColumnSegmentInfos(final 
Collection<TableSegmentBinderContext> tableBinderContexts, final String 
columnName) {
+        List<ColumnSegmentInfo> result = new 
ArrayList<>(tableBinderContexts.size());
         for (TableSegmentBinderContext each : tableBinderContexts) {
             Optional<ProjectionSegment> projectionSegment = 
each.findProjectionSegmentByColumnLabel(columnName);
             if (projectionSegment.isPresent() && projectionSegment.get() 
instanceof ColumnProjectionSegment) {
                 ColumnSegment columnSegment = ((ColumnProjectionSegment) 
projectionSegment.get()).getColumn();
-                result.add(new ColumnSegmentInputInfo(columnSegment, 
each.getTableSourceType()));
+                result.add(new ColumnSegmentInfo(columnSegment, 
each.getTableSourceType()));
             }
         }
         return result;
     }
+    
+    @RequiredArgsConstructor
+    @Getter
+    static class ColumnSegmentInfo {
+        
+        private final ColumnSegment inputColumnSegment;
+        
+        private final TableSourceType tableSourceType;
+        
+        Optional<ColumnSegment> getInputColumnSegment() {
+            return Optional.ofNullable(inputColumnSegment);
+        }
+    }
 }
diff --git 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/generic/bound/ColumnSegmentInputInfo.java
 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/generic/bound/ColumnSegmentInputInfo.java
deleted file mode 100644
index 30486b871e3..00000000000
--- 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/generic/bound/ColumnSegmentInputInfo.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.bound;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import 
org.apache.shardingsphere.sql.parser.statement.core.enums.TableSourceType;
-import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
-
-import java.util.Optional;
-
-/**
- * Column segment input info.
- */
-@RequiredArgsConstructor
-@Getter
-public final class ColumnSegmentInputInfo {
-    
-    private final ColumnSegment inputColumnSegment;
-    
-    private final TableSourceType tableSourceType;
-    
-    public ColumnSegmentInputInfo(final ColumnSegment inputColumnSegment) {
-        this.inputColumnSegment = inputColumnSegment;
-        tableSourceType = TableSourceType.TEMPORARY_TABLE;
-    }
-    
-    /**
-     * Get input column segment.
-     *
-     * @return input column segment
-     */
-    public Optional<ColumnSegment> getInputColumnSegment() {
-        return Optional.ofNullable(inputColumnSegment);
-    }
-}

Reply via email to