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 c5637d2a3eb Refactor createColumnSegmentBoundInfo method and update 
its usage (#37229)
c5637d2a3eb is described below

commit c5637d2a3eb98efaaf176902da2e3acc24dfc2dc
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Nov 30 21:20:56 2025 +0800

    Refactor createColumnSegmentBoundInfo method and update its usage (#37229)
    
    * Refactor createColumnSegmentBoundInfo method and update its usage
    
    * Refactor createColumnSegmentBoundInfo method and update its usage
---
 .../dml/expression/type/ColumnSegmentBinder.java   | 32 ++++++++++++++--------
 .../with/CommonTableExpressionSegmentBinder.java   | 19 ++-----------
 2 files changed, 22 insertions(+), 29 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 ae9e637d571..4ed7d042722 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
@@ -259,18 +259,6 @@ public final class ColumnSegmentBinder {
         return false;
     }
     
-    private static ColumnSegmentBoundInfo createColumnSegmentBoundInfo(final 
ColumnSegment segment, final ColumnSegment inputColumnSegment, final 
TableSourceType tableSourceType) {
-        IdentifierValue originalDatabase = null == inputColumnSegment ? null : 
inputColumnSegment.getColumnBoundInfo().getOriginalDatabase();
-        IdentifierValue originalSchema = null == inputColumnSegment ? null : 
inputColumnSegment.getColumnBoundInfo().getOriginalSchema();
-        IdentifierValue segmentOriginalTable = 
segment.getColumnBoundInfo().getOriginalTable();
-        IdentifierValue originalTable = 
Strings.isNullOrEmpty(segmentOriginalTable.getValue())
-                ? Optional.ofNullable(inputColumnSegment).map(optional -> 
optional.getColumnBoundInfo().getOriginalTable()).orElse(segmentOriginalTable)
-                : segmentOriginalTable;
-        IdentifierValue segmentOriginalColumn = 
segment.getColumnBoundInfo().getOriginalColumn();
-        IdentifierValue originalColumn = 
Optional.ofNullable(inputColumnSegment).map(optional -> 
optional.getColumnBoundInfo().getOriginalColumn()).orElse(segmentOriginalColumn);
-        return new ColumnSegmentBoundInfo(new 
TableSegmentBoundInfo(originalDatabase, originalSchema), originalTable, 
originalColumn, tableSourceType);
-    }
-    
     /**
      * Bind using column segment.
      *
@@ -304,6 +292,26 @@ public final class ColumnSegmentBinder {
         return result;
     }
     
+    /**
+     * Create column segment bound info.
+     *
+     * @param segment column segment
+     * @param inputColumnSegment input column segment
+     * @param tableSourceType table source type
+     * @return created column segment bound info
+     */
+    public static ColumnSegmentBoundInfo createColumnSegmentBoundInfo(final 
ColumnSegment segment, final ColumnSegment inputColumnSegment, final 
TableSourceType tableSourceType) {
+        IdentifierValue originalDatabase = null == inputColumnSegment ? null : 
inputColumnSegment.getColumnBoundInfo().getOriginalDatabase();
+        IdentifierValue originalSchema = null == inputColumnSegment ? null : 
inputColumnSegment.getColumnBoundInfo().getOriginalSchema();
+        IdentifierValue segmentOriginalTable = 
segment.getColumnBoundInfo().getOriginalTable();
+        IdentifierValue originalTable = 
Strings.isNullOrEmpty(segmentOriginalTable.getValue())
+                ? Optional.ofNullable(inputColumnSegment).map(optional -> 
optional.getColumnBoundInfo().getOriginalTable()).orElse(segmentOriginalTable)
+                : segmentOriginalTable;
+        IdentifierValue segmentOriginalColumn = 
segment.getColumnBoundInfo().getOriginalColumn();
+        IdentifierValue originalColumn = 
Optional.ofNullable(inputColumnSegment).map(optional -> 
optional.getColumnBoundInfo().getOriginalColumn()).orElse(segmentOriginalColumn);
+        return new ColumnSegmentBoundInfo(new 
TableSegmentBoundInfo(originalDatabase, originalSchema), originalTable, 
originalColumn, tableSourceType);
+    }
+    
     @RequiredArgsConstructor
     @Getter
     private static class ColumnSegmentInfo {
diff --git 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/with/CommonTableExpressionSegmentBinder.java
 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/with/CommonTableExpressionSegmentBinder.java
index e7456db5f61..bddd42867f1 100644
--- 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/with/CommonTableExpressionSegmentBinder.java
+++ 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/with/CommonTableExpressionSegmentBinder.java
@@ -18,7 +18,6 @@
 package org.apache.shardingsphere.infra.binder.engine.segment.dml.with;
 
 import com.cedarsoftware.util.CaseInsensitiveMap.CaseInsensitiveString;
-import com.google.common.base.Strings;
 import com.google.common.collect.LinkedHashMultimap;
 import com.google.common.collect.Multimap;
 import lombok.AccessLevel;
@@ -38,8 +37,6 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.Co
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.complex.CommonTableExpressionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.item.ColumnProjectionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.item.ProjectionSegment;
-import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.bound.ColumnSegmentBoundInfo;
-import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.bound.TableSegmentBoundInfo;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SubqueryTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.SelectStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
@@ -48,7 +45,6 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Optional;
 import java.util.stream.Collectors;
 
 /**
@@ -120,7 +116,8 @@ public final class CommonTableExpressionSegmentBinder {
             ColumnSegment boundColumnSegment = copy(each);
             ProjectionSegment projectionSegment = 
projectionSegments.get(index);
             if (projectionSegment instanceof ColumnProjectionSegment) {
-                
boundColumnSegment.setColumnBoundInfo(createColumnSegmentBoundInfo(each, 
((ColumnProjectionSegment) projectionSegment).getColumn()));
+                boundColumnSegment.setColumnBoundInfo(
+                        ColumnSegmentBinder.createColumnSegmentBoundInfo(each, 
((ColumnProjectionSegment) projectionSegment).getColumn(), 
TableSourceType.TEMPORARY_TABLE));
             }
             result.add(boundColumnSegment);
             index++;
@@ -138,18 +135,6 @@ public final class CommonTableExpressionSegmentBinder {
         return result;
     }
     
-    private static ColumnSegmentBoundInfo createColumnSegmentBoundInfo(final 
ColumnSegment segment, final ColumnSegment inputColumnSegment) {
-        IdentifierValue originalDatabase = null == inputColumnSegment ? null : 
inputColumnSegment.getColumnBoundInfo().getOriginalDatabase();
-        IdentifierValue originalSchema = null == inputColumnSegment ? null : 
inputColumnSegment.getColumnBoundInfo().getOriginalSchema();
-        IdentifierValue segmentOriginalTable = 
segment.getColumnBoundInfo().getOriginalTable();
-        IdentifierValue originalTable = 
Strings.isNullOrEmpty(segmentOriginalTable.getValue())
-                ? Optional.ofNullable(inputColumnSegment).map(optional -> 
optional.getColumnBoundInfo().getOriginalTable()).orElse(segmentOriginalTable)
-                : segmentOriginalTable;
-        IdentifierValue segmentOriginalColumn = 
segment.getColumnBoundInfo().getOriginalColumn();
-        IdentifierValue originalColumn = 
Optional.ofNullable(inputColumnSegment).map(optional -> 
optional.getColumnBoundInfo().getOriginalColumn()).orElse(segmentOriginalColumn);
-        return new ColumnSegmentBoundInfo(new 
TableSegmentBoundInfo(originalDatabase, originalSchema), originalTable, 
originalColumn, TableSourceType.TEMPORARY_TABLE);
-    }
-    
     private static void putExternalTableBinderContext(final 
CommonTableExpressionSegment segment, final Multimap<CaseInsensitiveString, 
TableSegmentBinderContext> externalTableBinderContexts,
                                                       final boolean recursive, 
final Multimap<CaseInsensitiveString, TableSegmentBinderContext> 
currentTableBinderContexts) {
         if (!segment.getAliasName().isPresent()) {

Reply via email to