This is an automated email from the ASF dual-hosted git repository.
panjuan 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 7a7c290e3c3 Refactor QueryableRALExecutor (#29713)
7a7c290e3c3 is described below
commit 7a7c290e3c33cd177f2a527c2fb426d9b1870533
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Jan 13 21:14:35 2024 +0800
Refactor QueryableRALExecutor (#29713)
---
...java => DatabaseAwareQueryableRALExecutor.java} | 17 +++------
... InstanceContextAwareQueryableRALExecutor.java} | 15 +++-----
.../handler/ral/query/QueryableRALExecutor.java | 5 +--
.../distsql/ral/QueryableRALBackendHandler.java | 44 +++++-----------------
.../ExportDatabaseConfigurationExecutor.java | 28 +++++++++-----
.../ral/queryable/ShowComputeNodeInfoExecutor.java | 11 ++++--
.../ral/queryable/ShowComputeNodeModeExecutor.java | 11 ++++--
.../ral/queryable/ShowComputeNodesExecutor.java | 11 ++++--
.../ral/queryable/ShowDistVariableExecutor.java | 35 ++++++++---------
.../ral/queryable/ShowDistVariablesExecutor.java | 20 ++++++----
...wStatusFromReadwriteSplittingRulesExecutor.java | 40 ++++++--------------
.../ral/queryable/ShowTableMetaDataExecutor.java | 17 ++++++---
...onnectionSessionAwareQueryableRALExecutor.java} | 17 +++------
.../ral/QueryableRALBackendHandlerTest.java | 7 ++--
.../ExportDatabaseConfigurationExecutorTest.java | 9 ++++-
.../queryable/ShowComputeNodeInfoExecutorTest.java | 4 +-
.../queryable/ShowComputeNodeModeExecutorTest.java | 4 +-
.../queryable/ShowComputeNodesExecutorTest.java | 7 +++-
.../queryable/ShowDistVariableExecutorTest.java | 16 +++++---
.../queryable/ShowDistVariablesExecutorTest.java | 6 ++-
...tusFromReadwriteSplittingRulesExecutorTest.java | 12 ++----
.../queryable/ShowTableMetaDataExecutorTest.java | 5 ++-
22 files changed, 167 insertions(+), 174 deletions(-)
diff --git
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/ral/query/DatabaseRequiredQueryableRALExecutor.java
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/ral/query/DatabaseAwareQueryableRALExecutor.java
similarity index 67%
rename from
infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/ral/query/DatabaseRequiredQueryableRALExecutor.java
rename to
infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/ral/query/DatabaseAwareQueryableRALExecutor.java
index 61ae91cdaa6..e34feca0ac6 100644
---
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/ral/query/DatabaseRequiredQueryableRALExecutor.java
+++
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/ral/query/DatabaseAwareQueryableRALExecutor.java
@@ -18,24 +18,19 @@
package org.apache.shardingsphere.distsql.handler.ral.query;
import org.apache.shardingsphere.distsql.statement.ral.QueryableRALStatement;
-import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import java.util.Collection;
-
/**
- * Database required queryable RAL executor.
+ * Database Aware queryable RAL executor.
*
* @param <T> type of queryable RAL statement
*/
-public interface DatabaseRequiredQueryableRALExecutor<T extends
QueryableRALStatement> extends QueryableRALExecutor<T> {
+public interface DatabaseAwareQueryableRALExecutor<T extends
QueryableRALStatement> extends QueryableRALExecutor<T> {
/**
- * Get query result rows.
- *
- * @param database ShardingSphere database
- * @param sqlStatement SQL statement
- * @return query result rows
+ * Set current database.
+ *
+ * @param currentDatabase current database
*/
- Collection<LocalDataQueryResultRow> getRows(ShardingSphereDatabase
database, T sqlStatement);
+ void setCurrentDatabase(ShardingSphereDatabase currentDatabase);
}
diff --git
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/ral/query/InstanceContextRequiredQueryableRALExecutor.java
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/ral/query/InstanceContextAwareQueryableRALExecutor.java
similarity index 66%
rename from
infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/ral/query/InstanceContextRequiredQueryableRALExecutor.java
rename to
infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/ral/query/InstanceContextAwareQueryableRALExecutor.java
index a2694437d74..4ff2ae46e16 100644
---
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/ral/query/InstanceContextRequiredQueryableRALExecutor.java
+++
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/ral/query/InstanceContextAwareQueryableRALExecutor.java
@@ -19,23 +19,18 @@ package org.apache.shardingsphere.distsql.handler.ral.query;
import org.apache.shardingsphere.distsql.statement.ral.QueryableRALStatement;
import org.apache.shardingsphere.infra.instance.InstanceContext;
-import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
-
-import java.util.Collection;
/**
- * Instance context required queryable RAL executor.
+ * Instance context aware queryable RAL executor.
*
* @param <T> type of queryable RAL statement
*/
-public interface InstanceContextRequiredQueryableRALExecutor<T extends
QueryableRALStatement> extends QueryableRALExecutor<T> {
+public interface InstanceContextAwareQueryableRALExecutor<T extends
QueryableRALStatement> extends QueryableRALExecutor<T> {
/**
- * Get query result rows.
+ * Set Instance context.
*
- * @param instanceContext Instance context
- * @param sqlStatement SQL statement
- * @return query result rows
+ * @param instanceContext instance context
*/
- Collection<LocalDataQueryResultRow> getRows(InstanceContext
instanceContext, T sqlStatement);
+ void setInstanceContext(InstanceContext instanceContext);
}
diff --git
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/ral/query/QueryableRALExecutor.java
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/ral/query/QueryableRALExecutor.java
index b87454d6460..6b03d639905 100644
---
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/ral/query/QueryableRALExecutor.java
+++
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/ral/query/QueryableRALExecutor.java
@@ -24,7 +24,6 @@ import
org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;
import java.util.Collection;
-import java.util.Collections;
/**
* Queryable RAL executor.
@@ -48,9 +47,7 @@ public interface QueryableRALExecutor<T extends
QueryableRALStatement> extends T
* @param metaData ShardingSphere meta data
* @return query result rows
*/
- default Collection<LocalDataQueryResultRow> getRows(final T sqlStatement,
final ShardingSphereMetaData metaData) {
- return Collections.emptyList();
- }
+ Collection<LocalDataQueryResultRow> getRows(T sqlStatement,
ShardingSphereMetaData metaData);
@Override
Class<T> getType();
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandler.java
index b4dfd60d7af..0bc9c4d48fb 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandler.java
@@ -17,20 +17,16 @@
package org.apache.shardingsphere.proxy.backend.handler.distsql.ral;
-import
org.apache.shardingsphere.distsql.handler.ral.query.DatabaseRequiredQueryableRALExecutor;
-import
org.apache.shardingsphere.distsql.handler.ral.query.InstanceContextRequiredQueryableRALExecutor;
+import
org.apache.shardingsphere.distsql.handler.ral.query.DatabaseAwareQueryableRALExecutor;
+import
org.apache.shardingsphere.distsql.handler.ral.query.InstanceContextAwareQueryableRALExecutor;
import
org.apache.shardingsphere.distsql.handler.ral.query.QueryableRALExecutor;
import org.apache.shardingsphere.distsql.statement.ral.QueryableRALStatement;
-import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
-import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.NoDatabaseSelectedException;
-import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.UnknownDatabaseException;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataMergedResult;
import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.executor.ConnectionSessionRequiredQueryableRALExecutor;
+import
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.executor.ConnectionSessionAwareQueryableRALExecutor;
import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseCell;
import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseRow;
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
@@ -79,31 +75,16 @@ public final class QueryableRALBackendHandler<T extends
QueryableRALStatement> i
}
private MergedResult getMergedResult(final QueryableRALExecutor<T>
executor) {
- if (executor instanceof InstanceContextRequiredQueryableRALExecutor) {
- return
getMergedResultByInstanceContextRequiredExecutor((InstanceContextRequiredQueryableRALExecutor<T>)
executor);
+ if (executor instanceof InstanceContextAwareQueryableRALExecutor) {
+ ((InstanceContextAwareQueryableRALExecutor<T>)
executor).setInstanceContext(ProxyContext.getInstance().getContextManager().getInstanceContext());
}
- if (executor instanceof DatabaseRequiredQueryableRALExecutor) {
- return
getMergedResultByDatabaseRequiredExecutor((DatabaseRequiredQueryableRALExecutor<T>)
executor);
+ if (executor instanceof DatabaseAwareQueryableRALExecutor) {
+ ((DatabaseAwareQueryableRALExecutor<T>)
executor).setCurrentDatabase(ProxyContext.getInstance().getDatabase(getDatabaseName(connectionSession,
sqlStatement)));
}
- if (executor instanceof ConnectionSessionRequiredQueryableRALExecutor)
{
- return
getMergedResultByConnectionSessionRequiredExecutor((ConnectionSessionRequiredQueryableRALExecutor<T>)
executor);
+ if (executor instanceof ConnectionSessionAwareQueryableRALExecutor) {
+ ((ConnectionSessionAwareQueryableRALExecutor<T>)
executor).setConnectionSession(connectionSession);
}
- ContextManager contextManager =
ProxyContext.getInstance().getContextManager();
- return createMergedResult(executor.getRows(sqlStatement,
contextManager.getMetaDataContexts().getMetaData()));
- }
-
- private MergedResult
getMergedResultByInstanceContextRequiredExecutor(final
InstanceContextRequiredQueryableRALExecutor<T> executor) {
- return
createMergedResult(executor.getRows(ProxyContext.getInstance().getContextManager().getInstanceContext(),
sqlStatement));
- }
-
- private MergedResult getMergedResultByDatabaseRequiredExecutor(final
DatabaseRequiredQueryableRALExecutor<T> executor) {
- String databaseName = getDatabaseName(connectionSession, sqlStatement);
- checkDatabaseName(databaseName);
- return
createMergedResult(executor.getRows(ProxyContext.getInstance().getDatabase(databaseName),
sqlStatement));
- }
-
- private MergedResult
getMergedResultByConnectionSessionRequiredExecutor(final
ConnectionSessionRequiredQueryableRALExecutor<T> executor) {
- return
createMergedResult(executor.getRows(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData(),
connectionSession, sqlStatement));
+ return createMergedResult(executor.getRows(sqlStatement,
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData()));
}
private List<QueryHeader> createQueryHeader(final Collection<String>
columnNames) {
@@ -119,11 +100,6 @@ public final class QueryableRALBackendHandler<T extends
QueryableRALStatement> i
return databaseSegment.isPresent() ?
databaseSegment.get().getIdentifier().getValue() :
connectionSession.getDatabaseName();
}
- private void checkDatabaseName(final String databaseName) {
- ShardingSpherePreconditions.checkNotNull(databaseName,
NoDatabaseSelectedException::new);
-
ShardingSpherePreconditions.checkState(ProxyContext.getInstance().databaseExists(databaseName),
() -> new UnknownDatabaseException(databaseName));
- }
-
@Override
public boolean next() throws SQLException {
return null != mergedResult && mergedResult.next();
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportDatabaseConfigurationExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportDatabaseConfigurationExecutor.java
index d2204522eea..020bad31bf1 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportDatabaseConfigurationExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportDatabaseConfigurationExecutor.java
@@ -17,9 +17,11 @@
package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable;
-import
org.apache.shardingsphere.distsql.handler.ral.query.DatabaseRequiredQueryableRALExecutor;
+import lombok.Setter;
+import
org.apache.shardingsphere.distsql.handler.ral.query.DatabaseAwareQueryableRALExecutor;
import
org.apache.shardingsphere.distsql.statement.ral.queryable.ExportDatabaseConfigurationStatement;
import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.proxy.backend.util.ExportUtils;
@@ -29,7 +31,10 @@ import java.util.Collections;
/**
* Export database configuration executor.
*/
-public final class ExportDatabaseConfigurationExecutor implements
DatabaseRequiredQueryableRALExecutor<ExportDatabaseConfigurationStatement> {
+@Setter
+public final class ExportDatabaseConfigurationExecutor implements
DatabaseAwareQueryableRALExecutor<ExportDatabaseConfigurationStatement> {
+
+ private ShardingSphereDatabase currentDatabase;
@Override
public Collection<String> getColumnNames() {
@@ -37,14 +42,19 @@ public final class ExportDatabaseConfigurationExecutor
implements DatabaseRequir
}
@Override
- public Collection<LocalDataQueryResultRow> getRows(final
ShardingSphereDatabase database, final ExportDatabaseConfigurationStatement
sqlStatement) {
- String exportedData = ExportUtils.generateExportDatabaseData(database);
- if (sqlStatement.getFilePath().isPresent()) {
- String filePath = sqlStatement.getFilePath().get();
- ExportUtils.exportToFile(filePath, exportedData);
- return Collections.singleton(new
LocalDataQueryResultRow(String.format("Successfully exported to:'%s'",
filePath)));
+ public Collection<LocalDataQueryResultRow> getRows(final
ExportDatabaseConfigurationStatement sqlStatement, final ShardingSphereMetaData
metaData) {
+ String exportedData =
ExportUtils.generateExportDatabaseData(currentDatabase);
+ if (!sqlStatement.getFilePath().isPresent()) {
+ return Collections.singleton(new
LocalDataQueryResultRow(exportedData));
}
- return Collections.singleton(new
LocalDataQueryResultRow(exportedData));
+ String filePath = sqlStatement.getFilePath().get();
+ ExportUtils.exportToFile(filePath, exportedData);
+ return Collections.singleton(new
LocalDataQueryResultRow(String.format("Successfully exported to:'%s'",
filePath)));
+ }
+
+ @Override
+ public void setCurrentDatabase(final ShardingSphereDatabase
currentDatabase) {
+ this.currentDatabase = currentDatabase;
}
@Override
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeInfoExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeInfoExecutor.java
index 3b776a258e9..d6a72b0a18b 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeInfoExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeInfoExecutor.java
@@ -17,13 +17,15 @@
package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable;
-import
org.apache.shardingsphere.distsql.handler.ral.query.InstanceContextRequiredQueryableRALExecutor;
+import lombok.Setter;
+import
org.apache.shardingsphere.distsql.handler.ral.query.InstanceContextAwareQueryableRALExecutor;
import
org.apache.shardingsphere.distsql.statement.ral.queryable.ShowComputeNodeInfoStatement;
import org.apache.shardingsphere.infra.instance.ComputeNodeInstance;
import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
import
org.apache.shardingsphere.infra.instance.metadata.proxy.ProxyInstanceMetaData;
import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import java.util.Arrays;
import java.util.Collection;
@@ -32,7 +34,10 @@ import java.util.Collections;
/**
* Show compute node info executor.
*/
-public final class ShowComputeNodeInfoExecutor implements
InstanceContextRequiredQueryableRALExecutor<ShowComputeNodeInfoStatement> {
+@Setter
+public final class ShowComputeNodeInfoExecutor implements
InstanceContextAwareQueryableRALExecutor<ShowComputeNodeInfoStatement> {
+
+ private InstanceContext instanceContext;
@Override
public Collection<String> getColumnNames() {
@@ -40,7 +45,7 @@ public final class ShowComputeNodeInfoExecutor implements
InstanceContextRequire
}
@Override
- public Collection<LocalDataQueryResultRow> getRows(final InstanceContext
instanceContext, final ShowComputeNodeInfoStatement sqlStatement) {
+ public Collection<LocalDataQueryResultRow> getRows(final
ShowComputeNodeInfoStatement sqlStatement, final ShardingSphereMetaData
metaData) {
ComputeNodeInstance instance = instanceContext.getInstance();
InstanceMetaData instanceMetaData = instance.getMetaData();
String modeType = instanceContext.getModeConfiguration().getType();
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeModeExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeModeExecutor.java
index c0a7b61322d..56aadd40d44 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeModeExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeModeExecutor.java
@@ -17,11 +17,13 @@
package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable;
-import
org.apache.shardingsphere.distsql.handler.ral.query.InstanceContextRequiredQueryableRALExecutor;
+import lombok.Setter;
+import
org.apache.shardingsphere.distsql.handler.ral.query.InstanceContextAwareQueryableRALExecutor;
import
org.apache.shardingsphere.distsql.statement.ral.queryable.ShowComputeNodeModeStatement;
import
org.apache.shardingsphere.infra.config.mode.PersistRepositoryConfiguration;
import org.apache.shardingsphere.infra.instance.InstanceContext;
import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.util.json.JsonUtils;
import java.util.Arrays;
@@ -31,7 +33,10 @@ import java.util.Collections;
/**
* Show compute node mode executor.
*/
-public final class ShowComputeNodeModeExecutor implements
InstanceContextRequiredQueryableRALExecutor<ShowComputeNodeModeStatement> {
+@Setter
+public final class ShowComputeNodeModeExecutor implements
InstanceContextAwareQueryableRALExecutor<ShowComputeNodeModeStatement> {
+
+ private InstanceContext instanceContext;
@Override
public Collection<String> getColumnNames() {
@@ -39,7 +44,7 @@ public final class ShowComputeNodeModeExecutor implements
InstanceContextRequire
}
@Override
- public Collection<LocalDataQueryResultRow> getRows(final InstanceContext
instanceContext, final ShowComputeNodeModeStatement sqlStatement) {
+ public Collection<LocalDataQueryResultRow> getRows(final
ShowComputeNodeModeStatement sqlStatement, final ShardingSphereMetaData
metaData) {
PersistRepositoryConfiguration repositoryConfig =
instanceContext.getModeConfiguration().getRepository();
String modeType = instanceContext.getModeConfiguration().getType();
String repositoryType = null == repositoryConfig ? "" :
repositoryConfig.getType();
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodesExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodesExecutor.java
index df91d0ad528..43beb9a4ced 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodesExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodesExecutor.java
@@ -17,13 +17,15 @@
package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable;
-import
org.apache.shardingsphere.distsql.handler.ral.query.InstanceContextRequiredQueryableRALExecutor;
+import lombok.Setter;
+import
org.apache.shardingsphere.distsql.handler.ral.query.InstanceContextAwareQueryableRALExecutor;
import
org.apache.shardingsphere.distsql.statement.ral.queryable.ShowComputeNodesStatement;
import org.apache.shardingsphere.infra.instance.ComputeNodeInstance;
import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
import
org.apache.shardingsphere.infra.instance.metadata.proxy.ProxyInstanceMetaData;
import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import java.util.Arrays;
import java.util.Collection;
@@ -33,7 +35,10 @@ import java.util.stream.Collectors;
/**
* Show compute nodes executor.
*/
-public final class ShowComputeNodesExecutor implements
InstanceContextRequiredQueryableRALExecutor<ShowComputeNodesStatement> {
+@Setter
+public final class ShowComputeNodesExecutor implements
InstanceContextAwareQueryableRALExecutor<ShowComputeNodesStatement> {
+
+ private InstanceContext instanceContext;
@Override
public Collection<String> getColumnNames() {
@@ -41,7 +46,7 @@ public final class ShowComputeNodesExecutor implements
InstanceContextRequiredQu
}
@Override
- public Collection<LocalDataQueryResultRow> getRows(final InstanceContext
instanceContext, final ShowComputeNodesStatement sqlStatement) {
+ public Collection<LocalDataQueryResultRow> getRows(final
ShowComputeNodesStatement sqlStatement, final ShardingSphereMetaData metaData) {
String modeType = instanceContext.getModeConfiguration().getType();
if ("Standalone".equals(modeType)) {
return
Collections.singleton(buildRow(instanceContext.getInstance(), modeType));
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariableExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariableExecutor.java
index 5489b504e22..d61b90eb6bc 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariableExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariableExecutor.java
@@ -17,9 +17,11 @@
package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable;
+import lombok.Setter;
import
org.apache.shardingsphere.distsql.statement.ral.queryable.ShowDistVariableStatement;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
import
org.apache.shardingsphere.infra.config.props.temporary.TemporaryConfigurationPropertyKey;
+import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;
@@ -28,7 +30,7 @@ import
org.apache.shardingsphere.logging.logger.ShardingSphereLogger;
import org.apache.shardingsphere.logging.util.LoggingUtils;
import
org.apache.shardingsphere.proxy.backend.exception.UnsupportedVariableException;
import
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.common.enums.VariableEnum;
-import
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.executor.ConnectionSessionRequiredQueryableRALExecutor;
+import
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.executor.ConnectionSessionAwareQueryableRALExecutor;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import java.util.Arrays;
@@ -40,7 +42,10 @@ import java.util.Properties;
/**
* Show dist variable executor.
*/
-public final class ShowDistVariableExecutor implements
ConnectionSessionRequiredQueryableRALExecutor<ShowDistVariableStatement> {
+@Setter
+public final class ShowDistVariableExecutor implements
ConnectionSessionAwareQueryableRALExecutor<ShowDistVariableStatement> {
+
+ private ConnectionSession connectionSession;
@Override
public Collection<String> getColumnNames() {
@@ -48,17 +53,18 @@ public final class ShowDistVariableExecutor implements
ConnectionSessionRequired
}
@Override
- public Collection<LocalDataQueryResultRow> getRows(final
ShardingSphereMetaData metaData, final ConnectionSession connectionSession,
final ShowDistVariableStatement sqlStatement) {
+ public Collection<LocalDataQueryResultRow> getRows(final
ShowDistVariableStatement sqlStatement, final ShardingSphereMetaData metaData) {
return buildSpecifiedRow(metaData, connectionSession,
sqlStatement.getName());
}
private Collection<LocalDataQueryResultRow> buildSpecifiedRow(final
ShardingSphereMetaData metaData, final ConnectionSession connectionSession,
final String variableName) {
if (isConfigurationKey(variableName)) {
- return Collections.singletonList(new
LocalDataQueryResultRow(variableName.toLowerCase(),
getConfigurationValue(metaData, variableName)));
- } else if (isTemporaryConfigurationKey(variableName)) {
- return Collections.singletonList(new
LocalDataQueryResultRow(variableName.toLowerCase(),
getTemporaryConfigurationValue(metaData, variableName)));
+ return Collections.singleton(new
LocalDataQueryResultRow(variableName.toLowerCase(),
getConfigurationValue(metaData, variableName)));
+ }
+ if (isTemporaryConfigurationKey(variableName)) {
+ return Collections.singleton(new
LocalDataQueryResultRow(variableName.toLowerCase(),
getTemporaryConfigurationValue(metaData, variableName)));
}
- return Collections.singletonList(new
LocalDataQueryResultRow(variableName.toLowerCase(),
getSpecialValue(connectionSession, variableName)));
+ return Collections.singleton(new
LocalDataQueryResultRow(variableName.toLowerCase(),
getSpecialValue(connectionSession, variableName)));
}
private boolean isConfigurationKey(final String variableName) {
@@ -66,10 +72,9 @@ public final class ShowDistVariableExecutor implements
ConnectionSessionRequired
}
private String getConfigurationValue(final ShardingSphereMetaData
metaData, final String variableName) {
- if
(LoggingConstants.SQL_SHOW_VARIABLE_NAME.equalsIgnoreCase(variableName) ||
LoggingConstants.SQL_SIMPLE_VARIABLE_NAME.equalsIgnoreCase(variableName)) {
- return getLoggingPropsValue(metaData, variableName);
- }
- return
getStringResult(metaData.getProps().getValue(ConfigurationPropertyKey.valueOf(variableName)));
+ return
LoggingConstants.SQL_SHOW_VARIABLE_NAME.equalsIgnoreCase(variableName) ||
LoggingConstants.SQL_SIMPLE_VARIABLE_NAME.equalsIgnoreCase(variableName)
+ ? getLoggingPropsValue(metaData, variableName)
+ :
getStringResult(metaData.getProps().getValue(ConfigurationPropertyKey.valueOf(variableName)));
}
private String getLoggingPropsValue(final ShardingSphereMetaData metaData,
final String variableName) {
@@ -98,12 +103,8 @@ public final class ShowDistVariableExecutor implements
ConnectionSessionRequired
}
private String getSpecialValue(final ConnectionSession connectionSession,
final String variableName) {
- VariableEnum variable = VariableEnum.getValueOf(variableName);
- if (variable == VariableEnum.CACHED_CONNECTIONS) {
- int connectionSize =
connectionSession.getDatabaseConnectionManager().getConnectionSize();
- return String.valueOf(connectionSize);
- }
- throw new UnsupportedVariableException(variableName);
+ ShardingSpherePreconditions.checkState(VariableEnum.CACHED_CONNECTIONS
== VariableEnum.getValueOf(variableName), () -> new
UnsupportedVariableException(variableName));
+ return
String.valueOf(connectionSession.getDatabaseConnectionManager().getConnectionSize());
}
private String getStringResult(final Object value) {
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariablesExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariablesExecutor.java
index f59674b9a4d..1ea2679c1f7 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariablesExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariablesExecutor.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable;
+import lombok.Setter;
import
org.apache.shardingsphere.distsql.statement.ral.queryable.ShowDistVariablesStatement;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
import
org.apache.shardingsphere.infra.config.props.temporary.TemporaryConfigurationPropertyKey;
@@ -27,7 +28,7 @@ import
org.apache.shardingsphere.logging.constant.LoggingConstants;
import org.apache.shardingsphere.logging.logger.ShardingSphereLogger;
import org.apache.shardingsphere.logging.util.LoggingUtils;
import
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.common.enums.VariableEnum;
-import
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.executor.ConnectionSessionRequiredQueryableRALExecutor;
+import
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.executor.ConnectionSessionAwareQueryableRALExecutor;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import org.apache.shardingsphere.sql.parser.sql.common.util.SQLUtils;
@@ -42,7 +43,10 @@ import java.util.stream.Collectors;
/**
* Show dist variables executor.
*/
-public final class ShowDistVariablesExecutor implements
ConnectionSessionRequiredQueryableRALExecutor<ShowDistVariablesStatement> {
+@Setter
+public final class ShowDistVariablesExecutor implements
ConnectionSessionAwareQueryableRALExecutor<ShowDistVariablesStatement> {
+
+ private ConnectionSession connectionSession;
@Override
public Collection<String> getColumnNames() {
@@ -50,7 +54,7 @@ public final class ShowDistVariablesExecutor implements
ConnectionSessionRequire
}
@Override
- public Collection<LocalDataQueryResultRow> getRows(final
ShardingSphereMetaData metaData, final ConnectionSession connectionSession,
final ShowDistVariablesStatement sqlStatement) {
+ public Collection<LocalDataQueryResultRow> getRows(final
ShowDistVariablesStatement sqlStatement, final ShardingSphereMetaData metaData)
{
Collection<LocalDataQueryResultRow> result =
ConfigurationPropertyKey.getKeyNames().stream()
.filter(each ->
!ConfigurationPropertyKey.SQL_SHOW.name().equals(each) &&
!ConfigurationPropertyKey.SQL_SIMPLE.name().equals(each))
.map(each -> new LocalDataQueryResultRow(each.toLowerCase(),
getStringResult(metaData.getProps().getValue(ConfigurationPropertyKey.valueOf(each))))).collect(Collectors.toList());
@@ -73,16 +77,16 @@ public final class ShowDistVariablesExecutor implements
ConnectionSessionRequire
return value instanceof TypedSPI ? ((TypedSPI)
value).getType().toString() : value.toString();
}
- private void addLoggingPropsRows(final ShardingSphereMetaData metaData,
final Collection<LocalDataQueryResultRow> result) {
+ private void addLoggingPropsRows(final ShardingSphereMetaData metaData,
final Collection<LocalDataQueryResultRow> rows) {
Optional<ShardingSphereLogger> sqlLogger =
LoggingUtils.getSQLLogger(metaData.getGlobalRuleMetaData());
if (sqlLogger.isPresent()) {
Properties sqlLoggerProps = sqlLogger.get().getProps();
- result.add(new
LocalDataQueryResultRow(LoggingConstants.SQL_SHOW_VARIABLE_NAME,
sqlLoggerProps.getOrDefault(LoggingConstants.SQL_LOG_ENABLE,
Boolean.FALSE).toString()));
- result.add(new
LocalDataQueryResultRow(LoggingConstants.SQL_SIMPLE_VARIABLE_NAME,
sqlLoggerProps.getOrDefault(LoggingConstants.SQL_LOG_SIMPLE,
Boolean.FALSE).toString()));
+ rows.add(new
LocalDataQueryResultRow(LoggingConstants.SQL_SHOW_VARIABLE_NAME,
sqlLoggerProps.getOrDefault(LoggingConstants.SQL_LOG_ENABLE,
Boolean.FALSE).toString()));
+ rows.add(new
LocalDataQueryResultRow(LoggingConstants.SQL_SIMPLE_VARIABLE_NAME,
sqlLoggerProps.getOrDefault(LoggingConstants.SQL_LOG_SIMPLE,
Boolean.FALSE).toString()));
} else {
- result.add(new
LocalDataQueryResultRow(LoggingConstants.SQL_SHOW_VARIABLE_NAME,
+ rows.add(new
LocalDataQueryResultRow(LoggingConstants.SQL_SHOW_VARIABLE_NAME,
metaData.getProps().getValue(ConfigurationPropertyKey.valueOf(LoggingConstants.SQL_SHOW_VARIABLE_NAME.toUpperCase())).toString()));
- result.add(new
LocalDataQueryResultRow(LoggingConstants.SQL_SIMPLE_VARIABLE_NAME,
+ rows.add(new
LocalDataQueryResultRow(LoggingConstants.SQL_SIMPLE_VARIABLE_NAME,
metaData.getProps().getValue(ConfigurationPropertyKey.valueOf(LoggingConstants.SQL_SIMPLE_VARIABLE_NAME.toUpperCase())).toString()));
}
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowStatusFromReadwriteSplittingRulesExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowStatusFromReadwriteSplittingRulesExecutor.java
index 04839b27417..0f7dda1c7ca 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowStatusFromReadwriteSplittingRulesExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowStatusFromReadwriteSplittingRulesExecutor.java
@@ -18,9 +18,8 @@
package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable;
import com.google.common.base.Strings;
-import org.apache.shardingsphere.infra.state.datasource.DataSourceState;
-import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.NoDatabaseSelectedException;
-import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.UnknownDatabaseException;
+import lombok.Setter;
+import
org.apache.shardingsphere.distsql.handler.ral.query.DatabaseAwareQueryableRALExecutor;
import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -29,14 +28,13 @@ import
org.apache.shardingsphere.infra.rule.identifier.type.exportable.Exportabl
import
org.apache.shardingsphere.infra.rule.identifier.type.exportable.RuleExportEngine;
import
org.apache.shardingsphere.infra.rule.identifier.type.exportable.constant.ExportableConstants;
import
org.apache.shardingsphere.infra.rule.identifier.type.exportable.constant.ExportableItemConstants;
+import org.apache.shardingsphere.infra.state.datasource.DataSourceState;
import org.apache.shardingsphere.metadata.persist.MetaDataBasedPersistService;
import org.apache.shardingsphere.mode.event.storage.StorageNodeDataSource;
import org.apache.shardingsphere.mode.event.storage.StorageNodeRole;
import
org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.storage.service.StorageNodeStatusService;
import
org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.executor.ConnectionSessionRequiredQueryableRALExecutor;
-import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import
org.apache.shardingsphere.readwritesplitting.distsql.statement.ShowStatusFromReadwriteSplittingRulesStatement;
import java.util.Arrays;
@@ -54,7 +52,10 @@ import java.util.stream.Collectors;
/**
* Show status from readwrite-splitting rules executor.
*/
-public final class ShowStatusFromReadwriteSplittingRulesExecutor implements
ConnectionSessionRequiredQueryableRALExecutor<ShowStatusFromReadwriteSplittingRulesStatement>
{
+@Setter
+public final class ShowStatusFromReadwriteSplittingRulesExecutor implements
DatabaseAwareQueryableRALExecutor<ShowStatusFromReadwriteSplittingRulesStatement>
{
+
+ private ShardingSphereDatabase currentDatabase;
@Override
public Collection<String> getColumnNames() {
@@ -62,26 +63,13 @@ public final class
ShowStatusFromReadwriteSplittingRulesExecutor implements Conn
}
@Override
- public Collection<LocalDataQueryResultRow> getRows(final
ShardingSphereMetaData metaData, final ConnectionSession connectionSession,
- final
ShowStatusFromReadwriteSplittingRulesStatement sqlStatement) {
- String databaseName = getDatabaseName(connectionSession, sqlStatement);
- ShardingSphereDatabase database = metaData.getDatabase(databaseName);
- Collection<String> allReadResources = getAllReadResources(database,
sqlStatement.getGroupName());
- Map<String, StorageNodeDataSource> persistentReadResources =
getPersistentReadResources(databaseName,
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getPersistService());
+ public Collection<LocalDataQueryResultRow> getRows(final
ShowStatusFromReadwriteSplittingRulesStatement sqlStatement, final
ShardingSphereMetaData metaData) {
+ Collection<String> allReadResources =
getAllReadResources(currentDatabase, sqlStatement.getGroupName());
+ Map<String, StorageNodeDataSource> persistentReadResources =
getPersistentReadResources(
+ currentDatabase.getName(),
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getPersistService());
return buildRows(allReadResources, persistentReadResources);
}
- private String getDatabaseName(final ConnectionSession connectionSession,
final ShowStatusFromReadwriteSplittingRulesStatement sqlStatement) {
- String result = sqlStatement.getDatabase().isPresent() ?
sqlStatement.getDatabase().get().getIdentifier().getValue() :
connectionSession.getDatabaseName();
- if (Strings.isNullOrEmpty(result)) {
- throw new NoDatabaseSelectedException();
- }
- if (!ProxyContext.getInstance().databaseExists(result)) {
- throw new UnknownDatabaseException(result);
- }
- return result;
- }
-
private Collection<String> getAllReadResources(final
ShardingSphereDatabase database, final String groupName) {
Collection<String> exportKeys =
Arrays.asList(ExportableConstants.EXPORT_STATIC_READWRITE_SPLITTING_RULE,
ExportableConstants.EXPORT_DYNAMIC_READWRITE_SPLITTING_RULE);
Map<String, Object> exportMap =
database.getRuleMetaData().findRules(ExportableRule.class).stream()
@@ -127,11 +115,7 @@ public final class
ShowStatusFromReadwriteSplittingRulesExecutor implements Conn
}
private LocalDataQueryResultRow buildRow(final String resource, final
StorageNodeDataSource storageNodeDataSource) {
- if (null == storageNodeDataSource) {
- return new LocalDataQueryResultRow(resource,
DataSourceState.ENABLED.name());
- }
- String status = storageNodeDataSource.getStatus().name();
- return new LocalDataQueryResultRow(resource, status);
+ return null == storageNodeDataSource ? new
LocalDataQueryResultRow(resource, DataSourceState.ENABLED.name()) : new
LocalDataQueryResultRow(resource, storageNodeDataSource.getStatus().name());
}
@Override
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetaDataExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetaDataExecutor.java
index 08c0ac5d978..cb0f5342958 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetaDataExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetaDataExecutor.java
@@ -17,10 +17,12 @@
package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable;
-import
org.apache.shardingsphere.distsql.handler.ral.query.DatabaseRequiredQueryableRALExecutor;
+import lombok.Setter;
+import
org.apache.shardingsphere.distsql.handler.ral.query.DatabaseAwareQueryableRALExecutor;
import
org.apache.shardingsphere.distsql.statement.ral.queryable.ShowTableMetaDataStatement;
import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
+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.ShardingSphereIndex;
@@ -36,7 +38,10 @@ import java.util.stream.Collectors;
/**
* Show table meta data executor.
*/
-public final class ShowTableMetaDataExecutor implements
DatabaseRequiredQueryableRALExecutor<ShowTableMetaDataStatement> {
+@Setter
+public final class ShowTableMetaDataExecutor implements
DatabaseAwareQueryableRALExecutor<ShowTableMetaDataStatement> {
+
+ private ShardingSphereDatabase currentDatabase;
@Override
public Collection<String> getColumnNames() {
@@ -44,11 +49,11 @@ public final class ShowTableMetaDataExecutor implements
DatabaseRequiredQueryabl
}
@Override
- public Collection<LocalDataQueryResultRow> getRows(final
ShardingSphereDatabase database, final ShowTableMetaDataStatement sqlStatement)
{
- String defaultSchema = new
DatabaseTypeRegistry(database.getProtocolType()).getDefaultSchemaName(database.getName());
- ShardingSphereSchema schema = database.getSchema(defaultSchema);
+ public Collection<LocalDataQueryResultRow> getRows(final
ShowTableMetaDataStatement sqlStatement, final ShardingSphereMetaData metaData)
{
+ String defaultSchema = new
DatabaseTypeRegistry(currentDatabase.getProtocolType()).getDefaultSchemaName(currentDatabase.getName());
+ ShardingSphereSchema schema = currentDatabase.getSchema(defaultSchema);
return sqlStatement.getTableNames().stream().filter(each ->
schema.getAllTableNames().contains(each.toLowerCase()))
- .map(each -> buildTableRows(database.getName(), schema,
each.toLowerCase())).flatMap(Collection::stream).collect(Collectors.toList());
+ .map(each -> buildTableRows(currentDatabase.getName(), schema,
each.toLowerCase())).flatMap(Collection::stream).collect(Collectors.toList());
}
private Collection<LocalDataQueryResultRow> buildTableRows(final String
databaseName, final ShardingSphereSchema schema, final String tableName) {
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/executor/ConnectionSessionRequiredQueryableRALExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/executor/ConnectionSessionAwareQueryableRALExecutor.java
similarity index 62%
rename from
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/executor/ConnectionSessionRequiredQueryableRALExecutor.java
rename to
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/executor/ConnectionSessionAwareQueryableRALExecutor.java
index 01f474e034b..157ef430061 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/executor/ConnectionSessionRequiredQueryableRALExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/executor/ConnectionSessionAwareQueryableRALExecutor.java
@@ -19,26 +19,19 @@ package
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.ex
import
org.apache.shardingsphere.distsql.handler.ral.query.QueryableRALExecutor;
import org.apache.shardingsphere.distsql.statement.ral.QueryableRALStatement;
-import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
-import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-import java.util.Collection;
-
/**
- * Connection session required queryable RAL executor.
+ * Connection session aware queryable RAL executor.
*
* @param <T> type of SQL statement
*/
-public interface ConnectionSessionRequiredQueryableRALExecutor<T extends
QueryableRALStatement> extends QueryableRALExecutor<T> {
+public interface ConnectionSessionAwareQueryableRALExecutor<T extends
QueryableRALStatement> extends QueryableRALExecutor<T> {
/**
- * Get query result rows.
+ * Set connection session.
*
- * @param metaData ShardingSphere meta data
- * @param connectionSession connectionSession connection session
- * @param sqlStatement SQL statement
- * @return query result rows
+ * @param connectionSession connection session
*/
- Collection<LocalDataQueryResultRow> getRows(ShardingSphereMetaData
metaData, ConnectionSession connectionSession, T sqlStatement);
+ void setConnectionSession(ConnectionSession connectionSession);
}
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandlerTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandlerTest.java
index 33abb009677..c0c13a02737 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandlerTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandlerTest.java
@@ -61,9 +61,8 @@ class QueryableRALBackendHandlerTest {
@Test
void assertExecuteWithNoDatabase() {
- ConnectionSession connectionSession = mock(ConnectionSession.class);
- when(connectionSession.getDatabaseName()).thenReturn(null);
- assertThrows(NoDatabaseSelectedException.class, () -> new
QueryableRALBackendHandler<>(mock(ExportDatabaseConfigurationStatement.class),
connectionSession).execute());
+
when(ProxyContext.getInstance().getDatabase(null)).thenThrow(NoDatabaseSelectedException.class);
+ assertThrows(NoDatabaseSelectedException.class, () -> new
QueryableRALBackendHandler<>(mock(ExportDatabaseConfigurationStatement.class),
mock(ConnectionSession.class)).execute());
}
@Test
@@ -72,6 +71,7 @@ class QueryableRALBackendHandlerTest {
MetaDataContexts metaDataContexts = new
MetaDataContexts(mock(MetaDataPersistService.class), metaData);
ConnectionSession connectionSession = mock(ConnectionSession.class);
when(connectionSession.getDatabaseName()).thenReturn("unknown");
+
when(ProxyContext.getInstance().getDatabase("unknown")).thenThrow(UnknownDatabaseException.class);
ContextManager contextManager = new ContextManager(metaDataContexts,
mock(InstanceContext.class));
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
assertThrows(UnknownDatabaseException.class, () -> new
QueryableRALBackendHandler<>(mock(ExportDatabaseConfigurationStatement.class),
connectionSession).execute());
@@ -88,7 +88,6 @@ class QueryableRALBackendHandlerTest {
when(database.getName()).thenReturn("foo_db");
when(database.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"FIXTURE"));
when(database.getSchema("foo_db")).thenReturn(new
ShardingSphereSchema(createTableMap(), Collections.emptyMap()));
-
when(ProxyContext.getInstance().databaseExists("foo_db")).thenReturn(true);
when(ProxyContext.getInstance().getDatabase("foo_db")).thenReturn(database);
assertDoesNotThrow(() -> new
QueryableRALBackendHandler<>(createSqlStatement(),
mock(ConnectionSession.class)).execute());
}
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportDatabaseConfigurationExecutorTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportDatabaseConfigurationExecutorTest.java
index 06a4d823316..a5f3fe766ec 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportDatabaseConfigurationExecutorTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportDatabaseConfigurationExecutorTest.java
@@ -23,6 +23,7 @@ import
org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
import
org.apache.shardingsphere.infra.datasource.pool.props.creator.DataSourcePoolPropertiesCreator;
import
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
@@ -73,7 +74,9 @@ class ExportDatabaseConfigurationExecutorTest {
Map<String, StorageUnit> storageUnits = createStorageUnits();
when(database.getResourceMetaData().getStorageUnits()).thenReturn(storageUnits);
when(database.getRuleMetaData().getConfigurations()).thenReturn(Collections.singleton(createShardingRuleConfiguration()));
- Collection<LocalDataQueryResultRow> actual = new
ExportDatabaseConfigurationExecutor().getRows(database, new
ExportDatabaseConfigurationStatement(mock(DatabaseSegment.class), null));
+ ExportDatabaseConfigurationExecutor executor = new
ExportDatabaseConfigurationExecutor();
+ executor.setCurrentDatabase(database);
+ Collection<LocalDataQueryResultRow> actual = executor.getRows(new
ExportDatabaseConfigurationStatement(mock(DatabaseSegment.class), null),
mock(ShardingSphereMetaData.class));
assertThat(actual.size(), is(1));
LocalDataQueryResultRow row = actual.iterator().next();
assertThat(row.getCell(1), is(loadExpectedRow()));
@@ -97,7 +100,9 @@ class ExportDatabaseConfigurationExecutorTest {
when(database.getResourceMetaData().getStorageUnits()).thenReturn(Collections.emptyMap());
when(database.getRuleMetaData().getConfigurations()).thenReturn(Collections.emptyList());
ExportDatabaseConfigurationStatement sqlStatement = new
ExportDatabaseConfigurationStatement(new DatabaseSegment(0, 0, new
IdentifierValue("empty_db")), null);
- Collection<LocalDataQueryResultRow> actual = new
ExportDatabaseConfigurationExecutor().getRows(database, sqlStatement);
+ ExportDatabaseConfigurationExecutor executor = new
ExportDatabaseConfigurationExecutor();
+ executor.setCurrentDatabase(database);
+ Collection<LocalDataQueryResultRow> actual =
executor.getRows(sqlStatement, mock(ShardingSphereMetaData.class));
assertThat(actual.size(), is(1));
LocalDataQueryResultRow row = actual.iterator().next();
assertThat(row.getCell(1), is("databaseName: empty_db" +
System.lineSeparator()));
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeInfoExecutorTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeInfoExecutorTest.java
index f71c96acf51..e13df361a40 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeInfoExecutorTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeInfoExecutorTest.java
@@ -22,6 +22,7 @@ import
org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
import org.apache.shardingsphere.infra.instance.InstanceContext;
import
org.apache.shardingsphere.infra.instance.metadata.proxy.ProxyInstanceMetaData;
import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.state.instance.InstanceStateContext;
import
org.apache.shardingsphere.mode.repository.standalone.StandalonePersistRepositoryConfiguration;
import org.junit.jupiter.api.Test;
@@ -57,7 +58,8 @@ class ShowComputeNodeInfoExecutorTest {
@Test
void assertExecute() {
ShowComputeNodeInfoExecutor executor = new
ShowComputeNodeInfoExecutor();
- Collection<LocalDataQueryResultRow> actual =
executor.getRows(createInstanceContext(),
mock(ShowComputeNodeInfoStatement.class));
+ executor.setInstanceContext(createInstanceContext());
+ Collection<LocalDataQueryResultRow> actual =
executor.getRows(mock(ShowComputeNodeInfoStatement.class),
mock(ShardingSphereMetaData.class));
assertThat(actual.size(), is(1));
LocalDataQueryResultRow row = actual.iterator().next();
assertThat(row.getCell(1), is("foo"));
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeModeExecutorTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeModeExecutorTest.java
index e4a46e158ef..2449479037f 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeModeExecutorTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeModeExecutorTest.java
@@ -21,6 +21,7 @@ import
org.apache.shardingsphere.distsql.statement.ral.queryable.ShowComputeNode
import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
import org.apache.shardingsphere.infra.instance.InstanceContext;
import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepositoryConfiguration;
import org.apache.shardingsphere.test.util.PropertiesBuilder;
import org.apache.shardingsphere.test.util.PropertiesBuilder.Property;
@@ -40,7 +41,8 @@ class ShowComputeNodeModeExecutorTest {
@Test
void assertExecute() {
ShowComputeNodeModeExecutor executor = new
ShowComputeNodeModeExecutor();
- Collection<LocalDataQueryResultRow> actual =
executor.getRows(createInstanceContext(), new ShowComputeNodeModeStatement());
+ executor.setInstanceContext(createInstanceContext());
+ Collection<LocalDataQueryResultRow> actual = executor.getRows(new
ShowComputeNodeModeStatement(), mock(ShardingSphereMetaData.class));
assertThat(actual.size(), is(1));
Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
LocalDataQueryResultRow row = iterator.next();
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodesExecutorTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodesExecutorTest.java
index 3c2f861d4b8..4fafa125951 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodesExecutorTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodesExecutorTest.java
@@ -24,6 +24,7 @@ import
org.apache.shardingsphere.infra.instance.ComputeNodeInstance;
import org.apache.shardingsphere.infra.instance.InstanceContext;
import
org.apache.shardingsphere.infra.instance.metadata.proxy.ProxyInstanceMetaData;
import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.state.instance.InstanceStateContext;
import
org.apache.shardingsphere.mode.repository.standalone.StandalonePersistRepositoryConfiguration;
import org.junit.jupiter.api.Test;
@@ -61,7 +62,8 @@ class ShowComputeNodesExecutorTest {
@Test
void assertExecuteWithStandaloneMode() {
ShowComputeNodesExecutor executor = new ShowComputeNodesExecutor();
- Collection<LocalDataQueryResultRow> actual =
executor.getRows(createStandaloneInstanceContext(),
mock(ShowComputeNodesStatement.class));
+ executor.setInstanceContext(createStandaloneInstanceContext());
+ Collection<LocalDataQueryResultRow> actual =
executor.getRows(mock(ShowComputeNodesStatement.class),
mock(ShardingSphereMetaData.class));
assertThat(actual.size(), is(1));
LocalDataQueryResultRow row = actual.iterator().next();
assertThat(row.getCell(1), is("foo"));
@@ -78,7 +80,8 @@ class ShowComputeNodesExecutorTest {
@Test
void assertExecuteWithClusterMode() {
ShowComputeNodesExecutor executor = new ShowComputeNodesExecutor();
- Collection<LocalDataQueryResultRow> actual =
executor.getRows(createClusterInstanceContext(),
mock(ShowComputeNodesStatement.class));
+ executor.setInstanceContext(createClusterInstanceContext());
+ Collection<LocalDataQueryResultRow> actual =
executor.getRows(mock(ShowComputeNodesStatement.class),
mock(ShardingSphereMetaData.class));
assertThat(actual.size(), is(1));
LocalDataQueryResultRow row = actual.iterator().next();
assertThat(row.getCell(1), is("foo"));
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariableExecutorTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariableExecutorTest.java
index 8461b92f864..0e07938b6a8 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariableExecutorTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariableExecutorTest.java
@@ -58,7 +58,8 @@ class ShowDistVariableExecutorTest {
void assertShowCachedConnections() {
when(connectionSession.getDatabaseConnectionManager().getConnectionSize()).thenReturn(1);
ShowDistVariableExecutor executor = new ShowDistVariableExecutor();
- Collection<LocalDataQueryResultRow> actual =
executor.getRows(metaData, connectionSession, new
ShowDistVariableStatement("CACHED_CONNECTIONS"));
+ executor.setConnectionSession(connectionSession);
+ Collection<LocalDataQueryResultRow> actual = executor.getRows(new
ShowDistVariableStatement("CACHED_CONNECTIONS"), metaData);
assertThat(actual.size(), is(1));
LocalDataQueryResultRow row = actual.iterator().next();
assertThat(row.getCell(1), is("cached_connections"));
@@ -69,7 +70,8 @@ class ShowDistVariableExecutorTest {
void assertShowPropsVariable() {
when(metaData.getProps()).thenReturn(new
ConfigurationProperties(PropertiesBuilder.build(new Property("sql-show",
Boolean.TRUE.toString()))));
ShowDistVariableExecutor executor = new ShowDistVariableExecutor();
- Collection<LocalDataQueryResultRow> actual =
executor.getRows(metaData, connectionSession, new
ShowDistVariableStatement("SQL_SHOW"));
+ executor.setConnectionSession(connectionSession);
+ Collection<LocalDataQueryResultRow> actual = executor.getRows(new
ShowDistVariableStatement("SQL_SHOW"), metaData);
assertThat(actual.size(), is(1));
LocalDataQueryResultRow row = actual.iterator().next();
assertThat(row.getCell(1), is("sql_show"));
@@ -80,7 +82,8 @@ class ShowDistVariableExecutorTest {
void assertShowPropsVariableForTypedSPI() {
when(metaData.getProps()).thenReturn(new
ConfigurationProperties(PropertiesBuilder.build(new
Property("proxy-frontend-database-protocol-type", "MySQL"))));
ShowDistVariableExecutor executor = new ShowDistVariableExecutor();
- Collection<LocalDataQueryResultRow> actual =
executor.getRows(metaData, connectionSession, new
ShowDistVariableStatement("PROXY_FRONTEND_DATABASE_PROTOCOL_TYPE"));
+ executor.setConnectionSession(connectionSession);
+ Collection<LocalDataQueryResultRow> actual = executor.getRows(new
ShowDistVariableStatement("PROXY_FRONTEND_DATABASE_PROTOCOL_TYPE"), metaData);
assertThat(actual.size(), is(1));
LocalDataQueryResultRow row = actual.iterator().next();
assertThat(row.getCell(1),
is("proxy_frontend_database_protocol_type"));
@@ -91,7 +94,8 @@ class ShowDistVariableExecutorTest {
void assertShowTemporaryPropsVariable() {
when(metaData.getTemporaryProps()).thenReturn(new
TemporaryConfigurationProperties(PropertiesBuilder.build(new
Property("proxy-meta-data-collector-enabled", Boolean.FALSE.toString()))));
ShowDistVariableExecutor executor = new ShowDistVariableExecutor();
- Collection<LocalDataQueryResultRow> actual =
executor.getRows(metaData, connectionSession, new
ShowDistVariableStatement("PROXY_META_DATA_COLLECTOR_ENABLED"));
+ executor.setConnectionSession(connectionSession);
+ Collection<LocalDataQueryResultRow> actual = executor.getRows(new
ShowDistVariableStatement("PROXY_META_DATA_COLLECTOR_ENABLED"), metaData);
assertThat(actual.size(), is(1));
LocalDataQueryResultRow row = actual.iterator().next();
assertThat(row.getCell(1), is("proxy_meta_data_collector_enabled"));
@@ -100,6 +104,8 @@ class ShowDistVariableExecutorTest {
@Test
void assertExecuteWithInvalidVariableName() {
- assertThrows(UnsupportedVariableException.class, () -> new
ShowDistVariableExecutor().getRows(metaData, connectionSession, new
ShowDistVariableStatement("wrong_name")));
+ ShowDistVariableExecutor executor = new ShowDistVariableExecutor();
+ executor.setConnectionSession(connectionSession);
+ assertThrows(UnsupportedVariableException.class, () ->
executor.getRows(new ShowDistVariableStatement("wrong_name"), metaData));
}
}
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariablesExecutorTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariablesExecutorTest.java
index 76e6636cb3a..c491d7a295f 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariablesExecutorTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariablesExecutorTest.java
@@ -61,7 +61,8 @@ class ShowDistVariablesExecutorTest {
when(metaData.getProps()).thenReturn(new
ConfigurationProperties(PropertiesBuilder.build(new
Property("system-log-level", "INFO"))));
when(metaData.getTemporaryProps()).thenReturn(new
TemporaryConfigurationProperties(PropertiesBuilder.build(new
Property("proxy-meta-data-collector-enabled", Boolean.FALSE.toString()))));
ShowDistVariablesExecutor executor = new ShowDistVariablesExecutor();
- Collection<LocalDataQueryResultRow> actual =
executor.getRows(metaData, connectionSession,
mock(ShowDistVariablesStatement.class));
+ executor.setConnectionSession(connectionSession);
+ Collection<LocalDataQueryResultRow> actual =
executor.getRows(mock(ShowDistVariablesStatement.class), metaData);
assertThat(actual.size(), is(21));
LocalDataQueryResultRow row = actual.iterator().next();
assertThat(row.getCell(1), is("agent_plugins_enabled"));
@@ -74,7 +75,8 @@ class ShowDistVariablesExecutorTest {
when(metaData.getTemporaryProps()).thenReturn(new
TemporaryConfigurationProperties(PropertiesBuilder.build(new
Property("proxy-meta-data-collector-enabled", Boolean.FALSE.toString()))));
when(metaData.getGlobalRuleMetaData()).thenReturn(new
RuleMetaData(Collections.singleton(new LoggingRule(new
DefaultLoggingRuleConfigurationBuilder().build()))));
ShowDistVariablesExecutor executor = new ShowDistVariablesExecutor();
- Collection<LocalDataQueryResultRow> actual =
executor.getRows(metaData, connectionSession, new
ShowDistVariablesStatement("sql_%"));
+ executor.setConnectionSession(connectionSession);
+ Collection<LocalDataQueryResultRow> actual = executor.getRows(new
ShowDistVariablesStatement("sql_%"), metaData);
assertThat(actual.size(), is(2));
Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
assertThat(iterator.next().getCell(1), is("sql_show"));
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowStatusFromReadwriteSplittingRulesExecutorTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowStatusFromReadwriteSplittingRulesExecutorTest.java
index 3aa449d831a..e057930d96f 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowStatusFromReadwriteSplittingRulesExecutorTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowStatusFromReadwriteSplittingRulesExecutorTest.java
@@ -27,12 +27,11 @@ import
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaDa
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
-import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
import
org.apache.shardingsphere.mode.repository.cluster.zookeeper.ZookeeperRepository;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import
org.apache.shardingsphere.readwritesplitting.distsql.statement.ShowStatusFromReadwriteSplittingRulesStatement;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DatabaseSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
@@ -59,8 +58,6 @@ import static org.mockito.Mockito.when;
@StaticMockSettings(ProxyContext.class)
class ShowStatusFromReadwriteSplittingRulesExecutorTest {
- private final ConnectionSession connectionSession =
mock(ConnectionSession.class, RETURNS_DEEP_STUBS);
-
@Test
void assertGetColumns() {
ShowStatusFromReadwriteSplittingRulesExecutor executor = new
ShowStatusFromReadwriteSplittingRulesExecutor();
@@ -73,13 +70,12 @@ class ShowStatusFromReadwriteSplittingRulesExecutorTest {
@Test
void assertGetRowsWithEmptyResult() {
- when(connectionSession.getDatabaseName()).thenReturn("readwrite_db");
ShowStatusFromReadwriteSplittingRulesExecutor executor = new
ShowStatusFromReadwriteSplittingRulesExecutor();
ContextManager contextManager = mockContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().databaseExists("readwrite_db")).thenReturn(true);
- Collection<LocalDataQueryResultRow> actual =
executor.getRows(mockMetaData(), connectionSession,
- new ShowStatusFromReadwriteSplittingRulesStatement(new
DatabaseSegment(1, 1, new IdentifierValue("readwrite_db")), null));
+
executor.setCurrentDatabase(mockMetaData().getDatabase("readwrite_db"));
+ Collection<LocalDataQueryResultRow> actual = executor.getRows(
+ new ShowStatusFromReadwriteSplittingRulesStatement(new
DatabaseSegment(1, 1, new IdentifierValue("readwrite_db")), null),
mockMetaData());
assertTrue(actual.isEmpty());
}
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetaDataExecutorTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetaDataExecutorTest.java
index 1638f08f726..7fd05b55890 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetaDataExecutorTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetaDataExecutorTest.java
@@ -20,6 +20,7 @@ package
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable;
import
org.apache.shardingsphere.distsql.statement.ral.queryable.ShowTableMetaDataStatement;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
+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.ShardingSphereIndex;
@@ -66,7 +67,9 @@ class ShowTableMetaDataExecutorTest {
@Test
void assertExecute() {
ShardingSphereDatabase database = mockDatabase();
- Collection<LocalDataQueryResultRow> actual = new
ShowTableMetaDataExecutor().getRows(database, createSqlStatement());
+ ShowTableMetaDataExecutor executor = new ShowTableMetaDataExecutor();
+ executor.setCurrentDatabase(database);
+ Collection<LocalDataQueryResultRow> actual =
executor.getRows(createSqlStatement(), mock(ShardingSphereMetaData.class));
assertThat(actual.size(), is(2));
Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
LocalDataQueryResultRow row = iterator.next();