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 d796c6bd55c Refactor PostgreSQLComDescribeExecutor to use
ShardingSphereMetaData for SQL statement binding (#35513)
d796c6bd55c is described below
commit d796c6bd55cee2b8fe66643a83655defc42d3e7b
Author: Liang Zhang <[email protected]>
AuthorDate: Sun May 25 22:46:32 2025 +0800
Refactor PostgreSQLComDescribeExecutor to use ShardingSphereMetaData for
SQL statement binding (#35513)
---
.../describe/PostgreSQLComDescribeExecutor.java | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git
a/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutor.java
b/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutor.java
index 03e2f59b58b..635c88e14e2 100644
---
a/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutor.java
+++
b/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutor.java
@@ -30,17 +30,17 @@ import
org.apache.shardingsphere.infra.binder.engine.SQLBindEngine;
import org.apache.shardingsphere.infra.connection.kernel.KernelProcessor;
import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
-import
org.apache.shardingsphere.infra.exception.generic.UnsupportedSQLOperationException;
import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.column.ColumnNotFoundException;
+import
org.apache.shardingsphere.infra.exception.generic.UnsupportedSQLOperationException;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
import
org.apache.shardingsphere.infra.metadata.identifier.ShardingSphereIdentifier;
import org.apache.shardingsphere.infra.session.query.QueryContext;
-import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import
org.apache.shardingsphere.proxy.backend.connector.ProxyDatabaseConnectionManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
@@ -236,17 +236,17 @@ public final class PostgreSQLComDescribeExecutor
implements CommandExecutor {
}
private void tryDescribePreparedStatementByJDBC(final
PostgreSQLServerPreparedStatement logicPreparedStatement) throws SQLException {
- MetaDataContexts metaDataContexts =
ProxyContext.getInstance().getContextManager().getMetaDataContexts();
- String databaseName = connectionSession.getUsedDatabaseName();
- SQLStatementContext sqlStatementContext = new
SQLBindEngine(metaDataContexts.getMetaData(),
connectionSession.getCurrentDatabaseName(),
logicPreparedStatement.getHintValueContext())
-
.bind(logicPreparedStatement.getSqlStatementContext().getSqlStatement(),
Collections.emptyList());
+ ShardingSphereMetaData metaData =
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData();
+ SQLStatementContext sqlStatementContext = new SQLBindEngine(metaData,
connectionSession.getCurrentDatabaseName(),
logicPreparedStatement.getHintValueContext())
+
.bind(logicPreparedStatement.getSqlStatementContext().getDatabaseType(),
logicPreparedStatement.getSqlStatementContext().getSqlStatement(),
Collections.emptyList());
QueryContext queryContext = new QueryContext(sqlStatementContext,
logicPreparedStatement.getSql(), Collections.emptyList(),
logicPreparedStatement.getHintValueContext(),
- connectionSession.getConnectionContext(),
metaDataContexts.getMetaData());
+ connectionSession.getConnectionContext(), metaData);
ExecutionContext executionContext =
- new KernelProcessor().generateExecutionContext(queryContext,
metaDataContexts.getMetaData().getGlobalRuleMetaData(),
metaDataContexts.getMetaData().getProps());
+ new KernelProcessor().generateExecutionContext(queryContext,
metaData.getGlobalRuleMetaData(), metaData.getProps());
ExecutionUnit executionUnitSample =
executionContext.getExecutionUnits().iterator().next();
ProxyDatabaseConnectionManager databaseConnectionManager =
connectionSession.getDatabaseConnectionManager();
- Connection connection =
databaseConnectionManager.getConnections(databaseName,
executionUnitSample.getDataSourceName(), 0, 1,
ConnectionMode.CONNECTION_STRICTLY).iterator().next();
+ Connection connection = databaseConnectionManager.getConnections(
+ connectionSession.getUsedDatabaseName(),
executionUnitSample.getDataSourceName(), 0, 1,
ConnectionMode.CONNECTION_STRICTLY).iterator().next();
try (PreparedStatement actualPreparedStatement =
connection.prepareStatement(executionUnitSample.getSqlUnit().getSql())) {
populateParameterTypes(logicPreparedStatement,
actualPreparedStatement);
populateColumnTypes(logicPreparedStatement,
actualPreparedStatement);