This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 a23d7a80208 Fix no database selected exception in the query sql
(#32675)
a23d7a80208 is described below
commit a23d7a8020884204383865b90cbe30001be764ab
Author: ZhangCheng <[email protected]>
AuthorDate: Mon Aug 26 09:40:13 2024 +0800
Fix no database selected exception in the query sql (#32675)
---
.../shardingsphere/proxy/backend/connector/ProxySQLExecutor.java | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
index ba4060adcd6..0e43235e9b1 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.proxy.backend.connector;
+import com.google.common.base.Strings;
import lombok.Getter;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
@@ -104,9 +105,11 @@ public final class ProxySQLExecutor {
regularExecutor = new ProxyJDBCExecutor(type,
databaseConnectionManager.getConnectionSession(), databaseConnector,
jdbcExecutor);
rawExecutor = new RawExecutor(executorEngine, connectionContext);
MetaDataContexts metaDataContexts =
ProxyContext.getInstance().getContextManager().getMetaDataContexts();
- String usedDatabaseName =
databaseConnectionManager.getConnectionSession().getUsedDatabaseName();
- String usedSchemaName =
getSchemaName(queryContext.getSqlStatementContext(),
metaDataContexts.getMetaData().getDatabase(usedDatabaseName));
- sqlFederationEngine = new SQLFederationEngine(usedDatabaseName,
usedSchemaName, metaDataContexts.getMetaData(),
metaDataContexts.getStatistics(), jdbcExecutor);
+ String currentDatabaseName =
+
Strings.isNullOrEmpty(databaseConnectionManager.getConnectionSession().getCurrentDatabaseName())
? databaseConnectionManager.getConnectionSession().getUsedDatabaseName()
+ :
databaseConnectionManager.getConnectionSession().getCurrentDatabaseName();
+ String currentSchemaName =
getSchemaName(queryContext.getSqlStatementContext(),
metaDataContexts.getMetaData().getDatabase(currentDatabaseName));
+ sqlFederationEngine = new SQLFederationEngine(currentDatabaseName,
currentSchemaName, metaDataContexts.getMetaData(),
metaDataContexts.getStatistics(), jdbcExecutor);
}
private String getSchemaName(final SQLStatementContext
sqlStatementContext, final ShardingSphereDatabase database) {