This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 9f73dd0df1c fix proxy java.lang.NullPointerException (#26419)
9f73dd0df1c is described below
commit 9f73dd0df1c00926fc1825c57395b5ab84300c92
Author: zuohl <[email protected]>
AuthorDate: Mon Jun 19 20:58:57 2023 +0800
fix proxy java.lang.NullPointerException (#26419)
* Update ProxyBackendHandlerFactory.java
Solve the error of java.lang.NullPointerException: Cannot invoke
"String.toLowerCase()" because "databaseName" is null
when executing sql like : SHOW VARIABLES LIKE 'lower_case_%'
* Update SQLFederationEngine.java
Solve the error of Solve the error of null pointer when executing sql like
: SHOW VARIABLES LIKE 'lower_case_%'
* Update SQLFederationEngine.java
* Update ProxyBackendHandlerFactory.java
---
.../shardingsphere/sqlfederation/engine/SQLFederationEngine.java | 3 +++
.../proxy/backend/handler/ProxyBackendHandlerFactory.java | 3 +++
2 files changed, 6 insertions(+)
diff --git
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/SQLFederationEngine.java
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/SQLFederationEngine.java
index 2dba67d8e85..c614cc699ad 100644
---
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/SQLFederationEngine.java
+++
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/SQLFederationEngine.java
@@ -191,6 +191,9 @@ public final class SQLFederationEngine implements
AutoCloseable {
private void registerTableScanExecutor(final Schema sqlFederationSchema,
final DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> prepareEngine,
final JDBCExecutorCallback<?
extends ExecuteResult> callback, final SQLFederationExecutorContext
federationContext,
final OptimizerContext
optimizerContext) {
+ if (null == sqlFederationSchema) {
+ return;
+ }
TableScanExecutorContext executorContext = new
TableScanExecutorContext(databaseName, schemaName, metaData.getProps(),
federationContext);
EnumerablePushDownTableScanExecutor pushDownTableScanExecutor =
new EnumerablePushDownTableScanExecutor(prepareEngine,
jdbcExecutor, callback, optimizerContext, metaData.getGlobalRuleMetaData(),
executorContext, statistics);
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 ce7847618a3..756343bf2e1 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
@@ -156,6 +156,9 @@ public final class ProxyBackendHandlerFactory {
String databaseName =
sqlStatementContext.getTablesContext().getDatabaseName().isPresent()
?
sqlStatementContext.getTablesContext().getDatabaseName().get()
: connectionSession.getDatabaseName();
+ if (null == databaseName) {
+ return DatabaseBackendHandlerFactory.newInstance(queryContext,
connectionSession, preferPreparedStatement);
+ }
AuthorityRule authorityRule =
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(AuthorityRule.class);
ShardingSphereDatabase database =
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabase(databaseName);
new AuthorityChecker(authorityRule,
connectionSession.getGrantee()).checkPrivileges(databaseName,
sqlStatementContext.getSqlStatement());