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;
     }

Reply via email to