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