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 a8803874776 Refactor DALBinder and DCLBinder (#35674) a8803874776 is described below commit a8803874776d4aeee711104cc8673dbcb413212c Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Wed Jun 11 17:07:22 2025 +0800 Refactor DALBinder and DCLBinder (#35674) --- .../statement/dal/OptimizeTableStatementBinder.java | 6 +----- .../statement/dal/ShowColumnsStatementBinder.java | 11 +++++------ .../statement/dal/ShowCreateTableStatementBinder.java | 10 +++------- .../statement/dal/ShowIndexStatementBinder.java | 10 +++------- .../engine/statement/dcl/DenyUserStatementBinder.java | 19 ++++++++++++------- 5 files changed, 24 insertions(+), 32 deletions(-) diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/OptimizeTableStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/OptimizeTableStatementBinder.java index 52c14d05b40..e7f8594d821 100644 --- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/OptimizeTableStatementBinder.java +++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/OptimizeTableStatementBinder.java @@ -17,10 +17,7 @@ package org.apache.shardingsphere.infra.binder.engine.statement.dal; -import com.cedarsoftware.util.CaseInsensitiveMap.CaseInsensitiveString; import com.google.common.collect.LinkedHashMultimap; -import com.google.common.collect.Multimap; -import org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.TableSegmentBinderContext; import org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder; import org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder; import org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext; @@ -38,9 +35,8 @@ public final class OptimizeTableStatementBinder implements SQLStatementBinder<Op @Override public OptimizeTableStatement bind(final OptimizeTableStatement sqlStatement, final SQLStatementBinderContext binderContext) { - Multimap<CaseInsensitiveString, TableSegmentBinderContext> tableBinderContexts = LinkedHashMultimap.create(); Collection<SimpleTableSegment> boundTables = sqlStatement.getTables().stream() - .map(each -> SimpleTableSegmentBinder.bind(each, binderContext, tableBinderContexts)).collect(Collectors.toList()); + .map(each -> SimpleTableSegmentBinder.bind(each, binderContext, LinkedHashMultimap.create())).collect(Collectors.toList()); return copy(sqlStatement, boundTables); } diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowColumnsStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowColumnsStatementBinder.java index 0a007405e0f..3dfeefb4576 100644 --- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowColumnsStatementBinder.java +++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowColumnsStatementBinder.java @@ -40,14 +40,13 @@ public final class ShowColumnsStatementBinder implements SQLStatementBinder<Show @Override public ShowColumnsStatement bind(final ShowColumnsStatement sqlStatement, final SQLStatementBinderContext binderContext) { Multimap<CaseInsensitiveString, TableSegmentBinderContext> tableBinderContexts = LinkedHashMultimap.create(); - SimpleTableSegment table = SimpleTableSegmentBinder.bind(sqlStatement.getTable(), binderContext, tableBinderContexts); - Optional<ShowFilterSegment> boundFilter = sqlStatement.getFilter() - .map(showFilterSegment -> ShowFilterSegmentBinder.bind(showFilterSegment, binderContext, tableBinderContexts, LinkedHashMultimap.create())); - return copy(sqlStatement, table, boundFilter.orElse(null)); + SimpleTableSegment boundTable = SimpleTableSegmentBinder.bind(sqlStatement.getTable(), binderContext, tableBinderContexts); + Optional<ShowFilterSegment> boundFilter = sqlStatement.getFilter().map(optional -> ShowFilterSegmentBinder.bind(optional, binderContext, tableBinderContexts, LinkedHashMultimap.create())); + return copy(sqlStatement, boundTable, boundFilter.orElse(null)); } - private ShowColumnsStatement copy(final ShowColumnsStatement sqlStatement, final SimpleTableSegment table, final ShowFilterSegment filter) { - ShowColumnsStatement result = new ShowColumnsStatement(table, sqlStatement.getFromDatabase().orElse(null), filter); + private ShowColumnsStatement copy(final ShowColumnsStatement sqlStatement, final SimpleTableSegment boundTable, final ShowFilterSegment boundFilter) { + ShowColumnsStatement result = new ShowColumnsStatement(boundTable, sqlStatement.getFromDatabase().orElse(null), boundFilter); SQLStatementCopyUtils.copyAttributes(sqlStatement, result); return result; } diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowCreateTableStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowCreateTableStatementBinder.java index 9977b246279..b8a2c594d8c 100644 --- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowCreateTableStatementBinder.java +++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowCreateTableStatementBinder.java @@ -17,10 +17,7 @@ package org.apache.shardingsphere.infra.binder.engine.statement.dal; -import com.cedarsoftware.util.CaseInsensitiveMap.CaseInsensitiveString; import com.google.common.collect.LinkedHashMultimap; -import com.google.common.collect.Multimap; -import org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.TableSegmentBinderContext; import org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder; import org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder; import org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext; @@ -35,12 +32,11 @@ public final class ShowCreateTableStatementBinder implements SQLStatementBinder< @Override public ShowCreateTableStatement bind(final ShowCreateTableStatement sqlStatement, final SQLStatementBinderContext binderContext) { - Multimap<CaseInsensitiveString, TableSegmentBinderContext> tableBinderContexts = LinkedHashMultimap.create(); - return copy(sqlStatement, SimpleTableSegmentBinder.bind(sqlStatement.getTable(), binderContext, tableBinderContexts)); + return copy(sqlStatement, SimpleTableSegmentBinder.bind(sqlStatement.getTable(), binderContext, LinkedHashMultimap.create())); } - private ShowCreateTableStatement copy(final ShowCreateTableStatement sqlStatement, final SimpleTableSegment table) { - ShowCreateTableStatement result = new ShowCreateTableStatement(table); + private ShowCreateTableStatement copy(final ShowCreateTableStatement sqlStatement, final SimpleTableSegment boundTable) { + ShowCreateTableStatement result = new ShowCreateTableStatement(boundTable); SQLStatementCopyUtils.copyAttributes(sqlStatement, result); return result; } diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowIndexStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowIndexStatementBinder.java index e533e7d5003..d8c53f6feed 100644 --- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowIndexStatementBinder.java +++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/ShowIndexStatementBinder.java @@ -17,10 +17,7 @@ package org.apache.shardingsphere.infra.binder.engine.statement.dal; -import com.cedarsoftware.util.CaseInsensitiveMap.CaseInsensitiveString; import com.google.common.collect.LinkedHashMultimap; -import com.google.common.collect.Multimap; -import org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.TableSegmentBinderContext; import org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder; import org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder; import org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext; @@ -35,12 +32,11 @@ public final class ShowIndexStatementBinder implements SQLStatementBinder<ShowIn @Override public ShowIndexStatement bind(final ShowIndexStatement sqlStatement, final SQLStatementBinderContext binderContext) { - Multimap<CaseInsensitiveString, TableSegmentBinderContext> tableBinderContexts = LinkedHashMultimap.create(); - return copy(sqlStatement, SimpleTableSegmentBinder.bind(sqlStatement.getTable(), binderContext, tableBinderContexts)); + return copy(sqlStatement, SimpleTableSegmentBinder.bind(sqlStatement.getTable(), binderContext, LinkedHashMultimap.create())); } - private ShowIndexStatement copy(final ShowIndexStatement sqlStatement, final SimpleTableSegment table) { - ShowIndexStatement result = new ShowIndexStatement(table, sqlStatement.getFromDatabase().orElse(null)); + private ShowIndexStatement copy(final ShowIndexStatement sqlStatement, final SimpleTableSegment boundTable) { + ShowIndexStatement result = new ShowIndexStatement(boundTable, sqlStatement.getFromDatabase().orElse(null)); SQLStatementCopyUtils.copyAttributes(sqlStatement, result); return result; } diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/DenyUserStatementBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/DenyUserStatementBinder.java index 7dc20625032..d7fe1d1d9c7 100644 --- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/DenyUserStatementBinder.java +++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dcl/DenyUserStatementBinder.java @@ -27,8 +27,13 @@ import org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.Simpl import org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder; import org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext; import org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils; +import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment; +import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment; import org.apache.shardingsphere.sql.parser.statement.core.statement.dcl.DenyUserStatement; +import java.util.Collection; +import java.util.stream.Collectors; + /** * Deny user statement binder. */ @@ -36,17 +41,17 @@ public final class DenyUserStatementBinder implements SQLStatementBinder<DenyUse @Override public DenyUserStatement bind(final DenyUserStatement sqlStatement, final SQLStatementBinderContext binderContext) { - DenyUserStatement result = copy(sqlStatement); Multimap<CaseInsensitiveString, TableSegmentBinderContext> tableBinderContexts = LinkedHashMultimap.create(); - result.setTable(SimpleTableSegmentBinder.bind(sqlStatement.getTable(), binderContext, tableBinderContexts)); - sqlStatement.getColumns() - .forEach(each -> result.getColumns().add(ColumnSegmentBinder.bind(each, SegmentType.DEFINITION_COLUMNS, binderContext, tableBinderContexts, LinkedHashMultimap.create()))); - return result; + SimpleTableSegment boundTable = SimpleTableSegmentBinder.bind(sqlStatement.getTable(), binderContext, tableBinderContexts); + Collection<ColumnSegment> columns = sqlStatement.getColumns().stream() + .map(each -> ColumnSegmentBinder.bind(each, SegmentType.DEFINITION_COLUMNS, binderContext, tableBinderContexts, LinkedHashMultimap.create())).collect(Collectors.toList()); + return copy(sqlStatement, boundTable, columns); } - private static DenyUserStatement copy(final DenyUserStatement sqlStatement) { + private DenyUserStatement copy(final DenyUserStatement sqlStatement, final SimpleTableSegment boundTable, final Collection<ColumnSegment> boundColumns) { DenyUserStatement result = new DenyUserStatement(); - result.setTable(sqlStatement.getTable()); + result.setTable(boundTable); + sqlStatement.getColumns().addAll(boundColumns); SQLStatementCopyUtils.copyAttributes(sqlStatement, result); return result; }