This is an automated email from the ASF dual-hosted git repository.
chengzhang 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 d43aa586b86 Minor refactor SQLBuilderEngine and RouteSQLRewriteEngine
(#37423)
d43aa586b86 is described below
commit d43aa586b86146d7dd27ac831ba1729fe7cc3cd1
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Thu Dec 18 16:23:52 2025 +0800
Minor refactor SQLBuilderEngine and RouteSQLRewriteEngine (#37423)
---
.../infra/rewrite/engine/RouteSQLRewriteEngine.java | 6 +++---
.../shardingsphere/infra/rewrite/sql/SQLBuilderEngine.java | 5 +++--
.../infra/rewrite/sql/SQLBuilderEngineTest.java | 12 ++++++++++--
3 files changed, 16 insertions(+), 7 deletions(-)
diff --git
a/infra/rewrite/core/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngine.java
b/infra/rewrite/core/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngine.java
index 9862e753361..dec0363f219 100644
---
a/infra/rewrite/core/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngine.java
+++
b/infra/rewrite/core/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngine.java
@@ -20,9 +20,9 @@ package org.apache.shardingsphere.infra.rewrite.engine;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
-import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.type.dml.SelectStatementContext;
+import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.datanode.DataNode;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
@@ -139,7 +139,7 @@ public final class RouteSQLRewriteEngine {
boolean containsDollarMarker =
sqlRewriteContext.getSqlStatementContext() instanceof SelectStatementContext
&& ((SelectStatementContext)
(sqlRewriteContext.getSqlStatementContext())).isContainsDollarParameterMarker();
for (RouteUnit each : routeUnits) {
- sql.add(SQLUtils.trimSemicolon(new
SQLBuilderEngine(sqlRewriteContext.getSql(), sqlRewriteContext.getSqlTokens(),
each).buildSQL()));
+ sql.add(SQLUtils.trimSemicolon(new
SQLBuilderEngine(sqlRewriteContext, each).buildSQL()));
if (containsDollarMarker && !params.isEmpty()) {
continue;
}
@@ -153,7 +153,7 @@ public final class RouteSQLRewriteEngine {
}
private String getActualSQL(final SQLRewriteContext sqlRewriteContext,
final RouteUnit routeUnit) {
- return new SQLBuilderEngine(sqlRewriteContext.getSql(),
sqlRewriteContext.getSqlTokens(), routeUnit).buildSQL();
+ return new SQLBuilderEngine(sqlRewriteContext, routeUnit).buildSQL();
}
private List<Object> getParameters(final SQLRewriteContext
sqlRewriteContext, final RouteContext routeContext, final RouteUnit routeUnit) {
diff --git
a/infra/rewrite/core/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/SQLBuilderEngine.java
b/infra/rewrite/core/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/SQLBuilderEngine.java
index 502362c634b..939e9b92498 100644
---
a/infra/rewrite/core/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/SQLBuilderEngine.java
+++
b/infra/rewrite/core/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/SQLBuilderEngine.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.infra.rewrite.sql;
+import org.apache.shardingsphere.infra.rewrite.context.SQLRewriteContext;
import org.apache.shardingsphere.infra.rewrite.sql.impl.AbstractSQLBuilder;
import org.apache.shardingsphere.infra.rewrite.sql.impl.DefaultSQLBuilder;
import org.apache.shardingsphere.infra.rewrite.sql.impl.RouteSQLBuilder;
@@ -36,8 +37,8 @@ public final class SQLBuilderEngine {
sqlBuilder = new DefaultSQLBuilder(sql, sqlTokens);
}
- public SQLBuilderEngine(final String sql, final List<SQLToken> sqlTokens,
final RouteUnit routeUnit) {
- sqlBuilder = new RouteSQLBuilder(sql, sqlTokens, routeUnit);
+ public SQLBuilderEngine(final SQLRewriteContext sqlRewriteContext, final
RouteUnit routeUnit) {
+ sqlBuilder = new RouteSQLBuilder(sqlRewriteContext.getSql(),
sqlRewriteContext.getSqlTokens(), routeUnit);
}
/**
diff --git
a/infra/rewrite/core/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/SQLBuilderEngineTest.java
b/infra/rewrite/core/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/SQLBuilderEngineTest.java
index 18041946a7a..cc4c85931dd 100644
---
a/infra/rewrite/core/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/SQLBuilderEngineTest.java
+++
b/infra/rewrite/core/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/SQLBuilderEngineTest.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.infra.rewrite.sql;
+import org.apache.shardingsphere.infra.rewrite.context.SQLRewriteContext;
import org.apache.shardingsphere.infra.rewrite.sql.fixture.SQLTokenFixture;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
@@ -27,6 +28,7 @@ import java.util.Collections;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
class SQLBuilderEngineTest {
@@ -45,14 +47,20 @@ class SQLBuilderEngineTest {
@Test
void assertCreateSQLBuilderEngineWithRouteUnitConstructor() {
RouteUnit routeUnit = new RouteUnit(mock(RouteMapper.class),
Collections.singletonList(new RouteMapper("tbl", "tbl_0")));
- SQLBuilderEngine actual = new SQLBuilderEngine("SELECT * FROM tbl
WHERE id=?", Collections.emptyList(), routeUnit);
+ SQLRewriteContext sqlRewriteContext = mock(SQLRewriteContext.class);
+ when(sqlRewriteContext.getSql()).thenReturn("SELECT * FROM tbl WHERE
id=?");
+
when(sqlRewriteContext.getSqlTokens()).thenReturn(Collections.emptyList());
+ SQLBuilderEngine actual = new SQLBuilderEngine(sqlRewriteContext,
routeUnit);
assertThat(actual.buildSQL(), is("SELECT * FROM tbl WHERE id=?"));
}
@Test
void assertCreateSQLBuilderEngineWithRouteUnitConstructorAndTokens() {
RouteUnit routeUnit = new RouteUnit(mock(RouteMapper.class),
Collections.singletonList(new RouteMapper("tbl", "tbl_0")));
- SQLBuilderEngine actual = new SQLBuilderEngine("SELECT * FROM tbl
WHERE id=?", Collections.singletonList(new SQLTokenFixture(14, 16)), routeUnit);
+ SQLRewriteContext sqlRewriteContext = mock(SQLRewriteContext.class);
+ when(sqlRewriteContext.getSql()).thenReturn("SELECT * FROM tbl WHERE
id=?");
+
when(sqlRewriteContext.getSqlTokens()).thenReturn(Collections.singletonList(new
SQLTokenFixture(14, 16)));
+ SQLBuilderEngine actual = new SQLBuilderEngine(sqlRewriteContext,
routeUnit);
assertThat(actual.buildSQL(), is("SELECT * FROM XXX WHERE id=?"));
}