This is an automated email from the ASF dual-hosted git repository.
terrymanu 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 17b14c4fc97 Refactor MySQLComQueryBackendHandlerFactory (#39446)
17b14c4fc97 is described below
commit 17b14c4fc97b5282732118dca0366c59d6e9d567
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Aug 13 21:14:45 2026 +0800
Refactor MySQLComQueryBackendHandlerFactory (#39446)
* Refine gen-ut quality gates
- keep semantic decisions out of mechanical rule scans
- harden coverage and task-scope verification
- remove unsafe gate-result reuse and add regression tests
* Refine gen-ut quality gates
- keep semantic decisions out of mechanical rule scans
- harden coverage and task-scope verification
- remove unsafe gate-result reuse and add regression tests
* Refine gen-ut quality gates
- keep semantic decisions out of mechanical rule scans
- harden coverage and task-scope verification
- remove unsafe gate-result reuse and add regression tests
* Refine gen-ut quality gates
- keep semantic decisions out of mechanical rule scans
- harden coverage and task-scope verification
- remove unsafe gate-result reuse and add regression tests
* Refactor MySQL COM_QUERY original SQL byte handling
* Refine issue analysis and PR review skills
* Refactor MySQLComQueryBackendHandlerFactory
---
.../query/text/query/MySQLComQueryBackendHandlerFactory.java | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git
a/proxy/frontend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryBackendHandlerFactory.java
b/proxy/frontend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryBackendHandlerFactory.java
index e97fdf9cb91..06766f3ffa3 100644
---
a/proxy/frontend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryBackendHandlerFactory.java
+++
b/proxy/frontend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryBackendHandlerFactory.java
@@ -45,7 +45,6 @@ import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.Up
import
org.apache.shardingsphere.sql.parser.statement.core.util.MultiSQLSplitter;
import java.sql.SQLException;
-import java.util.List;
import java.util.Optional;
/**
@@ -61,11 +60,11 @@ final class MySQLComQueryBackendHandlerFactory {
static ProxyBackendHandler newInstance(final MySQLComQueryPacket packet,
final ConnectionSession connectionSession) throws SQLException {
DatabaseType databaseType =
TypedSPILoader.getService(DatabaseType.class, "MySQL");
String sql = packet.getSQL();
- SQLStatement sqlStatement = ProxySQLComQueryParser.parse(sql,
databaseType, connectionSession);
Optional<ProxyBackendHandler> binaryLiteralHandler =
tryCreateBinaryLiteralHandler(databaseType, sql, packet, connectionSession);
if (binaryLiteralHandler.isPresent()) {
return binaryLiteralHandler.get();
}
+ SQLStatement sqlStatement = ProxySQLComQueryParser.parse(sql,
databaseType, connectionSession);
return areMultiStatements(connectionSession, sqlStatement, sql)
? new
MySQLMultiStatementsProxyBackendHandler(connectionSession, sqlStatement, sql)
: ProxyBackendHandlerFactory.newInstance(databaseType, sql,
sqlStatement, connectionSession, packet.getHintValueContext());
@@ -83,7 +82,6 @@ final class MySQLComQueryBackendHandlerFactory {
return Optional.empty();
}
String parameterizedSQL =
SQLHintUtils.removeHint(extractionResult.getSql());
- List<Object> binaryLiteralValues =
extractionResult.getBinaryLiteralValues();
SQLStatement parameterizedSQLStatement;
try {
parameterizedSQLStatement =
ProxySQLComQueryParser.parse(parameterizedSQL, databaseType, connectionSession);
@@ -93,10 +91,10 @@ final class MySQLComQueryBackendHandlerFactory {
ShardingSphereMetaData metaData =
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData();
SQLStatementContext sqlStatementContext = new SQLBindEngine(metaData,
connectionSession.getCurrentDatabaseName(),
packet.getHintValueContext()).bind(parameterizedSQLStatement);
if (sqlStatementContext instanceof ParameterAware) {
- ((ParameterAware)
sqlStatementContext).bindParameters(binaryLiteralValues);
+ ((ParameterAware)
sqlStatementContext).bindParameters(extractionResult.getBinaryLiteralValues());
}
QueryContext queryContext = new QueryContext(
- sqlStatementContext, parameterizedSQL, binaryLiteralValues,
packet.getHintValueContext(), connectionSession.getConnectionContext(),
metaData, true);
+ sqlStatementContext, parameterizedSQL,
extractionResult.getBinaryLiteralValues(), packet.getHintValueContext(),
connectionSession.getConnectionContext(), metaData, true);
return
Optional.of(ProxyBackendHandlerFactory.newInstance(databaseType, queryContext,
connectionSession, true));
}
@@ -112,8 +110,7 @@ final class MySQLComQueryBackendHandlerFactory {
private static boolean areMultiStatements(final ConnectionSession
connectionSession, final SQLStatement sqlStatement, final String sql) {
return isMultiStatementsEnabled(connectionSession)
- && isSuitableMultiStatementsSQLStatement(sqlStatement)
- && MultiSQLSplitter.hasSameTypeMultiStatements(sqlStatement,
MultiSQLSplitter.split(sql));
+ && isSuitableMultiStatementsSQLStatement(sqlStatement) &&
MultiSQLSplitter.hasSameTypeMultiStatements(sqlStatement,
MultiSQLSplitter.split(sql));
}
private static boolean isMultiStatementsEnabled(final ConnectionSession
connectionSession) {