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 10d4b210654 Spilt protocol and parser database types in
ProxySQLComQueryParser (#35900)
10d4b210654 is described below
commit 10d4b21065428a27b18eae9b5b2100cee49306de
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Jul 5 22:06:06 2025 +0800
Spilt protocol and parser database types in ProxySQLComQueryParser (#35900)
* Spilt protocol and parser database types in ProxySQLComQueryParser
* Spilt protocol and parser database types in ProxySQLComQueryParser
---
.../handler/ProxyBackendHandlerFactory.java | 10 ++--
.../backend/handler/ProxySQLComQueryParser.java | 14 ++++--
.../handler/ProxyBackendHandlerFactoryTest.java | 58 +++++++++++-----------
.../text/query/MySQLComQueryPacketExecutor.java | 7 +--
.../query/simple/OpenGaussComQueryExecutor.java | 7 +--
.../query/simple/PostgreSQLComQueryExecutor.java | 7 +--
.../command/query/extended/PortalTest.java | 4 +-
7 files changed, 59 insertions(+), 48 deletions(-)
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactory.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactory.java
index 585ff772e7d..a275425610d 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactory.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactory.java
@@ -77,7 +77,8 @@ public final class ProxyBackendHandlerFactory {
/**
* Create new instance of backend handler.
*
- * @param databaseType database type
+ * @param protocolDatabaseType protocol database type
+ * @param parserDatabaseType parser database type
* @param sql SQL to be executed
* @param sqlStatement SQL statement
* @param connectionSession connection session
@@ -85,7 +86,8 @@ public final class ProxyBackendHandlerFactory {
* @return created instance
* @throws SQLException SQL exception
*/
- public static ProxyBackendHandler newInstance(final DatabaseType
databaseType, final String sql, final SQLStatement sqlStatement,
+ public static ProxyBackendHandler newInstance(final DatabaseType
protocolDatabaseType, final DatabaseType parserDatabaseType,
+ final String sql, final
SQLStatement sqlStatement,
final ConnectionSession
connectionSession, final HintValueContext hintValueContext) throws SQLException
{
if (sqlStatement instanceof EmptyStatement) {
return new SkipBackendHandler(sqlStatement);
@@ -93,11 +95,11 @@ public final class ProxyBackendHandlerFactory {
SQLStatementContext sqlStatementContext = sqlStatement instanceof
DistSQLStatement
? new DistSQLStatementContext((DistSQLStatement) sqlStatement)
: new
SQLBindEngine(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData(),
- connectionSession.getCurrentDatabaseName(),
hintValueContext).bind(databaseType, sqlStatement, Collections.emptyList());
+ connectionSession.getCurrentDatabaseName(),
hintValueContext).bind(parserDatabaseType, sqlStatement,
Collections.emptyList());
QueryContext queryContext = new QueryContext(sqlStatementContext, sql,
Collections.emptyList(), hintValueContext,
connectionSession.getConnectionContext(),
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData());
connectionSession.setQueryContext(queryContext);
- return newInstance(databaseType, queryContext, connectionSession,
false);
+ return newInstance(protocolDatabaseType, queryContext,
connectionSession, false);
}
/**
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxySQLComQueryParser.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxySQLComQueryParser.java
index ca51c78c543..b3c53230100 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxySQLComQueryParser.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxySQLComQueryParser.java
@@ -39,18 +39,24 @@ public final class ProxySQLComQueryParser {
*
* @param sql SQL to be parsed
* @param databaseType database type
- * @param connectionSession connection session
* @return SQL statement
*/
- public static SQLStatement parse(final String sql, final DatabaseType
databaseType, final ConnectionSession connectionSession) {
+ public static SQLStatement parse(final String sql, final DatabaseType
databaseType) {
if (SQLUtils.trimComment(sql).isEmpty()) {
return new EmptyStatement();
}
SQLParserRule rule =
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
- return rule.getSQLParserEngine(getProtocolType(databaseType,
connectionSession)).parse(sql, false);
+ return rule.getSQLParserEngine(databaseType).parse(sql, false);
}
- private static DatabaseType getProtocolType(final DatabaseType
defaultDatabaseType, final ConnectionSession connectionSession) {
+ /**
+ * Get parser database type.
+ *
+ * @param defaultDatabaseType default database type
+ * @param connectionSession connection session
+ * @return parser database type
+ */
+ public static DatabaseType getParserDatabaseType(final DatabaseType
defaultDatabaseType, final ConnectionSession connectionSession) {
String databaseName = connectionSession.getUsedDatabaseName();
return Strings.isNullOrEmpty(databaseName) ||
!ProxyContext.getInstance().databaseExists(databaseName)
? defaultDatabaseType
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
index 27a334fde3e..bcce26cf7e6 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
@@ -130,44 +130,44 @@ class ProxyBackendHandlerFactoryTest {
@Test
void assertNewInstanceWithDistSQL() throws SQLException {
String sql = "set dist variable sql_show='true'";
- SQLStatement sqlStatement = ProxySQLComQueryParser.parse(sql,
databaseType, connectionSession);
- ProxyBackendHandler actual =
ProxyBackendHandlerFactory.newInstance(databaseType, sql, sqlStatement,
connectionSession, new HintValueContext());
+ SQLStatement sqlStatement = ProxySQLComQueryParser.parse(sql,
databaseType);
+ ProxyBackendHandler actual =
ProxyBackendHandlerFactory.newInstance(databaseType, databaseType, sql,
sqlStatement, connectionSession, new HintValueContext());
assertThat(actual, instanceOf(DistSQLUpdateBackendHandler.class));
sql = "show dist variable where name = sql_show";
- sqlStatement = ProxySQLComQueryParser.parse(sql, databaseType,
connectionSession);
- actual = ProxyBackendHandlerFactory.newInstance(databaseType, sql,
sqlStatement, connectionSession, new HintValueContext());
+ sqlStatement = ProxySQLComQueryParser.parse(sql, databaseType);
+ actual = ProxyBackendHandlerFactory.newInstance(databaseType,
databaseType, sql, sqlStatement, connectionSession, new HintValueContext());
assertThat(actual, instanceOf(DistSQLQueryBackendHandler.class));
sql = "show dist variables";
- sqlStatement = ProxySQLComQueryParser.parse(sql, databaseType,
connectionSession);
- actual = ProxyBackendHandlerFactory.newInstance(databaseType, sql,
sqlStatement, connectionSession, new HintValueContext());
+ sqlStatement = ProxySQLComQueryParser.parse(sql, databaseType);
+ actual = ProxyBackendHandlerFactory.newInstance(databaseType,
databaseType, sql, sqlStatement, connectionSession, new HintValueContext());
assertThat(actual, instanceOf(DistSQLQueryBackendHandler.class));
}
@ParameterizedTest(name = "{0}")
@ArgumentsSource(TCLTestCaseArgumentsProvider.class)
void assertNewInstanceWithTCL(final String sql) throws SQLException {
- SQLStatement sqlStatement = ProxySQLComQueryParser.parse(sql,
databaseType, connectionSession);
- ProxyBackendHandler actual =
ProxyBackendHandlerFactory.newInstance(databaseType, sql, sqlStatement,
connectionSession, new HintValueContext());
+ SQLStatement sqlStatement = ProxySQLComQueryParser.parse(sql,
databaseType);
+ ProxyBackendHandler actual =
ProxyBackendHandlerFactory.newInstance(databaseType, databaseType, sql,
sqlStatement, connectionSession, new HintValueContext());
assertThat(actual, instanceOf(TCLBackendHandler.class));
}
@Test
void assertNewInstanceWithShow() throws SQLException {
String sql = "SHOW VARIABLES LIKE '%x%'";
- SQLStatement sqlStatement = ProxySQLComQueryParser.parse(sql,
databaseType, connectionSession);
- ProxyBackendHandler actual =
ProxyBackendHandlerFactory.newInstance(databaseType, sql, sqlStatement,
connectionSession, new HintValueContext());
+ SQLStatement sqlStatement = ProxySQLComQueryParser.parse(sql,
databaseType);
+ ProxyBackendHandler actual =
ProxyBackendHandlerFactory.newInstance(databaseType, databaseType, sql,
sqlStatement, connectionSession, new HintValueContext());
assertThat(actual, instanceOf(UnicastDatabaseBackendHandler.class));
sql = "SHOW VARIABLES WHERE Variable_name ='language'";
- sqlStatement = ProxySQLComQueryParser.parse(sql, databaseType,
connectionSession);
- actual = ProxyBackendHandlerFactory.newInstance(databaseType, sql,
sqlStatement, connectionSession, new HintValueContext());
+ sqlStatement = ProxySQLComQueryParser.parse(sql, databaseType);
+ actual = ProxyBackendHandlerFactory.newInstance(databaseType,
databaseType, sql, sqlStatement, connectionSession, new HintValueContext());
assertThat(actual, instanceOf(UnicastDatabaseBackendHandler.class));
sql = "SHOW CHARACTER SET";
- sqlStatement = ProxySQLComQueryParser.parse(sql, databaseType,
connectionSession);
- actual = ProxyBackendHandlerFactory.newInstance(databaseType, sql,
sqlStatement, connectionSession, new HintValueContext());
+ sqlStatement = ProxySQLComQueryParser.parse(sql, databaseType);
+ actual = ProxyBackendHandlerFactory.newInstance(databaseType,
databaseType, sql, sqlStatement, connectionSession, new HintValueContext());
assertThat(actual, instanceOf(UnicastDatabaseBackendHandler.class));
sql = "SHOW COLLATION";
- sqlStatement = ProxySQLComQueryParser.parse(sql, databaseType,
connectionSession);
- actual = ProxyBackendHandlerFactory.newInstance(databaseType, sql,
sqlStatement, connectionSession, new HintValueContext());
+ sqlStatement = ProxySQLComQueryParser.parse(sql, databaseType);
+ actual = ProxyBackendHandlerFactory.newInstance(databaseType,
databaseType, sql, sqlStatement, connectionSession, new HintValueContext());
assertThat(actual, instanceOf(UnicastDatabaseBackendHandler.class));
}
@@ -179,19 +179,19 @@ class ProxyBackendHandlerFactoryTest {
ProxyContext proxyContext = ProxyContext.getInstance();
when(proxyContext.getAllDatabaseNames()).thenReturn(new
HashSet<>(Collections.singletonList("db")));
when(proxyContext.getContextManager().getDatabase("db").containsDataSource()).thenReturn(true);
- SQLStatement sqlStatement = ProxySQLComQueryParser.parse(sql,
databaseType, connectionSession);
- ProxyBackendHandler actual =
ProxyBackendHandlerFactory.newInstance(databaseType, sql, sqlStatement,
connectionSession, new HintValueContext());
+ SQLStatement sqlStatement = ProxySQLComQueryParser.parse(sql,
databaseType);
+ ProxyBackendHandler actual =
ProxyBackendHandlerFactory.newInstance(databaseType, databaseType, sql,
sqlStatement, connectionSession, new HintValueContext());
assertThat(actual, instanceOf(DatabaseConnector.class));
sql = "SELECT * FROM information_schema.schemata LIMIT 1";
- sqlStatement = ProxySQLComQueryParser.parse(sql, databaseType,
connectionSession);
- actual = ProxyBackendHandlerFactory.newInstance(databaseType, sql,
sqlStatement, connectionSession, new HintValueContext());
+ sqlStatement = ProxySQLComQueryParser.parse(sql, databaseType);
+ actual = ProxyBackendHandlerFactory.newInstance(databaseType,
databaseType, sql, sqlStatement, connectionSession, new HintValueContext());
assertThat(actual, instanceOf(DatabaseAdminQueryBackendHandler.class));
}
@Test
void assertNewInstanceWithEmptyString() throws SQLException {
String sql = "";
- ProxyBackendHandler actual =
ProxyBackendHandlerFactory.newInstance(databaseType, sql, new EmptyStatement(),
connectionSession, new HintValueContext());
+ ProxyBackendHandler actual =
ProxyBackendHandlerFactory.newInstance(databaseType, databaseType, sql, new
EmptyStatement(), connectionSession, new HintValueContext());
assertThat(actual, instanceOf(SkipBackendHandler.class));
}
@@ -199,16 +199,16 @@ class ProxyBackendHandlerFactoryTest {
void assertNewInstanceWithUnsupportedNonQueryDistSQLInTransaction() {
when(connectionSession.getTransactionStatus().isInTransaction()).thenReturn(true);
String sql = "CREATE SHARDING TABLE RULE t_order
(STORAGE_UNITS(ms_group_0,ms_group_1), SHARDING_COLUMN=order_id,
TYPE(NAME='hash_mod', PROPERTIES('sharding-count'='4')));";
- SQLStatement sqlStatement = ProxySQLComQueryParser.parse(sql,
databaseType, connectionSession);
- assertThrows(UnsupportedSQLOperationException.class, () ->
ProxyBackendHandlerFactory.newInstance(databaseType, sql, sqlStatement,
connectionSession, new HintValueContext()));
+ SQLStatement sqlStatement = ProxySQLComQueryParser.parse(sql,
databaseType);
+ assertThrows(UnsupportedSQLOperationException.class, () ->
ProxyBackendHandlerFactory.newInstance(databaseType, databaseType, sql,
sqlStatement, connectionSession, new HintValueContext()));
}
@Test
void assertNewInstanceWithQueryableRALStatementInTransaction() throws
SQLException {
when(connectionSession.getTransactionStatus().isInTransaction()).thenReturn(true);
String sql = "SHOW TRANSACTION RULE;";
- SQLStatement sqlStatement = ProxySQLComQueryParser.parse(sql,
databaseType, connectionSession);
- ProxyBackendHandler actual =
ProxyBackendHandlerFactory.newInstance(databaseType, sql, sqlStatement,
connectionSession, new HintValueContext());
+ SQLStatement sqlStatement = ProxySQLComQueryParser.parse(sql,
databaseType);
+ ProxyBackendHandler actual =
ProxyBackendHandlerFactory.newInstance(databaseType, databaseType, sql,
sqlStatement, connectionSession, new HintValueContext());
assertThat(actual, instanceOf(DistSQLQueryBackendHandler.class));
}
@@ -216,8 +216,8 @@ class ProxyBackendHandlerFactoryTest {
void assertNewInstanceWithRQLStatementInTransaction() throws SQLException {
when(connectionSession.getTransactionStatus().isInTransaction()).thenReturn(true);
String sql = "SHOW DEFAULT SINGLE TABLE STORAGE UNIT";
- SQLStatement sqlStatement = ProxySQLComQueryParser.parse(sql,
databaseType, connectionSession);
- ProxyBackendHandler actual =
ProxyBackendHandlerFactory.newInstance(databaseType, sql, sqlStatement,
connectionSession, new HintValueContext());
+ SQLStatement sqlStatement = ProxySQLComQueryParser.parse(sql,
databaseType);
+ ProxyBackendHandler actual =
ProxyBackendHandlerFactory.newInstance(databaseType, databaseType, sql,
sqlStatement, connectionSession, new HintValueContext());
assertThat(actual, instanceOf(DistSQLQueryBackendHandler.class));
}
@@ -225,8 +225,8 @@ class ProxyBackendHandlerFactoryTest {
void assertNewInstanceWithRULStatementInTransaction() throws SQLException {
when(connectionSession.getTransactionStatus().isInTransaction()).thenReturn(true);
String sql = "PREVIEW INSERT INTO account VALUES(1, 1, 1)";
- SQLStatement sqlStatement = ProxySQLComQueryParser.parse(sql,
databaseType, connectionSession);
- ProxyBackendHandler actual =
ProxyBackendHandlerFactory.newInstance(databaseType, sql, sqlStatement,
connectionSession, new HintValueContext());
+ SQLStatement sqlStatement = ProxySQLComQueryParser.parse(sql,
databaseType);
+ ProxyBackendHandler actual =
ProxyBackendHandlerFactory.newInstance(databaseType, databaseType, sql,
sqlStatement, connectionSession, new HintValueContext());
assertThat(actual, instanceOf(DistSQLQueryBackendHandler.class));
}
diff --git
a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutor.java
b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutor.java
index 56ffbcac698..a9f7fc6d0c4 100644
---
a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutor.java
+++
b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutor.java
@@ -63,10 +63,11 @@ public final class MySQLComQueryPacketExecutor implements
QueryCommandExecutor {
public MySQLComQueryPacketExecutor(final MySQLComQueryPacket packet, final
ConnectionSession connectionSession) throws SQLException {
this.connectionSession = connectionSession;
- DatabaseType databaseType =
TypedSPILoader.getService(DatabaseType.class, "MySQL");
- SQLStatement sqlStatement =
ProxySQLComQueryParser.parse(packet.getSQL(), databaseType, connectionSession);
+ DatabaseType protocolDatabaseType =
TypedSPILoader.getService(DatabaseType.class, "MySQL");
+ DatabaseType parserDatabaseType =
ProxySQLComQueryParser.getParserDatabaseType(protocolDatabaseType,
connectionSession);
+ SQLStatement sqlStatement =
ProxySQLComQueryParser.parse(packet.getSQL(), parserDatabaseType);
proxyBackendHandler = areMultiStatements(connectionSession,
sqlStatement, packet.getSQL()) ? new
MySQLMultiStatementsHandler(connectionSession, sqlStatement, packet.getSQL())
- : ProxyBackendHandlerFactory.newInstance(databaseType,
packet.getSQL(), sqlStatement, connectionSession, packet.getHintValueContext());
+ : ProxyBackendHandlerFactory.newInstance(protocolDatabaseType,
parserDatabaseType, packet.getSQL(), sqlStatement, connectionSession,
packet.getHintValueContext());
characterSet =
connectionSession.getAttributeMap().attr(MySQLConstants.CHARACTER_SET_ATTRIBUTE_KEY).get().getId();
}
diff --git
a/proxy/frontend/type/opengauss/src/main/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/query/simple/OpenGaussComQueryExecutor.java
b/proxy/frontend/type/opengauss/src/main/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/query/simple/OpenGaussComQueryExecutor.java
index b9de437e480..11cdb59ae43 100644
---
a/proxy/frontend/type/opengauss/src/main/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/query/simple/OpenGaussComQueryExecutor.java
+++
b/proxy/frontend/type/opengauss/src/main/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/query/simple/OpenGaussComQueryExecutor.java
@@ -69,9 +69,10 @@ public final class OpenGaussComQueryExecutor implements
QueryCommandExecutor {
public OpenGaussComQueryExecutor(final PortalContext portalContext, final
PostgreSQLComQueryPacket packet, final ConnectionSession connectionSession)
throws SQLException {
this.portalContext = portalContext;
- DatabaseType databaseType =
TypedSPILoader.getService(DatabaseType.class, "openGauss");
- SQLStatement sqlStatement =
ProxySQLComQueryParser.parse(packet.getSQL(), databaseType, connectionSession);
- proxyBackendHandler =
ProxyBackendHandlerFactory.newInstance(databaseType, packet.getSQL(),
sqlStatement, connectionSession, packet.getHintValueContext());
+ DatabaseType protocolDatabaseType =
TypedSPILoader.getService(DatabaseType.class, "openGauss");
+ DatabaseType parserDatabaseType =
ProxySQLComQueryParser.getParserDatabaseType(protocolDatabaseType,
connectionSession);
+ SQLStatement sqlStatement =
ProxySQLComQueryParser.parse(packet.getSQL(), parserDatabaseType);
+ proxyBackendHandler =
ProxyBackendHandlerFactory.newInstance(protocolDatabaseType,
parserDatabaseType, packet.getSQL(), sqlStatement, connectionSession,
packet.getHintValueContext());
}
@Override
diff --git
a/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/simple/PostgreSQLComQueryExecutor.java
b/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/simple/PostgreSQLComQueryExecutor.java
index 2b4c0c68a25..f12dabd5e08 100644
---
a/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/simple/PostgreSQLComQueryExecutor.java
+++
b/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/simple/PostgreSQLComQueryExecutor.java
@@ -69,9 +69,10 @@ public final class PostgreSQLComQueryExecutor implements
QueryCommandExecutor {
public PostgreSQLComQueryExecutor(final PortalContext portalContext, final
PostgreSQLComQueryPacket packet, final ConnectionSession connectionSession)
throws SQLException {
this.portalContext = portalContext;
- DatabaseType databaseType =
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL");
- SQLStatement sqlStatement =
ProxySQLComQueryParser.parse(packet.getSQL(), databaseType, connectionSession);
- proxyBackendHandler =
ProxyBackendHandlerFactory.newInstance(databaseType, packet.getSQL(),
sqlStatement, connectionSession, packet.getHintValueContext());
+ DatabaseType protocolDatabaseType =
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL");
+ DatabaseType parserDatabaseType =
ProxySQLComQueryParser.getParserDatabaseType(protocolDatabaseType,
connectionSession);
+ SQLStatement sqlStatement =
ProxySQLComQueryParser.parse(packet.getSQL(), parserDatabaseType);
+ proxyBackendHandler =
ProxyBackendHandlerFactory.newInstance(protocolDatabaseType,
parserDatabaseType, packet.getSQL(), sqlStatement, connectionSession,
packet.getHintValueContext());
}
@Override
diff --git
a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PortalTest.java
b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PortalTest.java
index 575dbd25a7f..cea4032f526 100644
---
a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PortalTest.java
+++
b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PortalTest.java
@@ -28,8 +28,8 @@ import
org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.Pos
import
org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.extended.execute.PostgreSQLPortalSuspendedPacket;
import
org.apache.shardingsphere.db.protocol.postgresql.packet.generic.PostgreSQLCommandCompletePacket;
import
org.apache.shardingsphere.db.protocol.postgresql.packet.handshake.PostgreSQLParameterStatusPacket;
-import
org.apache.shardingsphere.infra.binder.context.statement.type.CommonSQLStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
+import
org.apache.shardingsphere.infra.binder.context.statement.type.CommonSQLStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.type.dml.InsertStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.type.dml.SelectStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
@@ -113,7 +113,7 @@ class PortalTest {
when(connectionSession.getCurrentDatabaseName()).thenReturn("foo_db");
ConnectionContext connectionContext = mockConnectionContext();
when(connectionSession.getConnectionContext()).thenReturn(connectionContext);
- when(ProxyBackendHandlerFactory.newInstance(eq(databaseType),
anyString(), any(SQLStatement.class), eq(connectionSession),
any(HintValueContext.class)))
+ when(ProxyBackendHandlerFactory.newInstance(eq(databaseType),
eq(databaseType), anyString(), any(SQLStatement.class), eq(connectionSession),
any(HintValueContext.class)))
.thenReturn(proxyBackendHandler);
when(ProxyBackendHandlerFactory.newInstance(eq(databaseType),
any(QueryContext.class), eq(connectionSession),
anyBoolean())).thenReturn(proxyBackendHandler);
when(databaseConnectionManager.getConnectionSession()).thenReturn(connectionSession);