You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2022/06/10 15:00:55 UTC
[shardingsphere] branch master updated: Refactor UpdatableRALBackendHandler (#18289)
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 b11676fc415 Refactor UpdatableRALBackendHandler (#18289)
b11676fc415 is described below
commit b11676fc415b7ea46affeb5f45af4d2f4963ab5f
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Fri Jun 10 23:00:47 2022 +0800
Refactor UpdatableRALBackendHandler (#18289)
---
.../distsql/ral/QueryableRALBackendHandler.java | 44 ++++++++---------
.../text/distsql/ral/RALBackendHandler.java | 14 +-----
.../text/distsql/ral/RALBackendHandlerFactory.java | 4 +-
.../distsql/ral/UpdatableRALBackendHandler.java | 11 +++--
.../text/distsql/ral/advanced/FormatHandler.java | 2 +-
.../ral/advanced/ParseDistSQLBackendHandler.java | 11 ++---
.../ral/common/updatable/AlterInstanceHandler.java | 19 +++-----
.../updatable/AlterSQLParserRuleHandler.java | 2 +-
.../common/updatable/AlterTrafficRuleHandler.java | 6 +--
.../updatable/AlterTransactionRuleHandler.java | 2 +-
.../ral/common/updatable/ApplyDistSQLHandler.java | 2 +-
.../common/updatable/CreateTrafficRuleHandler.java | 10 ++--
.../common/updatable/DiscardDistSQLHandler.java | 2 +-
.../common/updatable/DropTrafficRuleHandler.java | 12 ++---
.../ImportDatabaseConfigurationHandler.java | 55 ++++++++++------------
.../ral/common/updatable/LabelInstanceHandler.java | 8 ++--
.../common/updatable/PrepareDistSQLHandler.java | 2 +-
.../updatable/RefreshTableMetadataHandler.java | 29 ++++++------
.../common/updatable/SetInstanceStatusHandler.java | 6 +--
.../SetReadwriteSplittingStatusHandler.java | 8 ++--
.../ral/common/updatable/SetVariableHandler.java | 18 +++----
.../common/updatable/UnlabelInstanceHandler.java | 10 ++--
22 files changed, 127 insertions(+), 150 deletions(-)
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/QueryableRALBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/QueryableRALBackendHandler.java
index 4dbe4e9eed7..3139e9a8f46 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/QueryableRALBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/QueryableRALBackendHandler.java
@@ -18,13 +18,15 @@
package org.apache.shardingsphere.proxy.backend.text.distsql.ral;
import org.apache.shardingsphere.distsql.parser.statement.ral.RALStatement;
+import org.apache.shardingsphere.infra.merge.result.MergedResult;
import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
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.data.impl.TextQueryResponseCell;
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
-import org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
import org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeader;
+import org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
import org.apache.shardingsphere.sharding.merge.dal.common.MultipleLocalDataMergedResult;
import java.sql.SQLException;
@@ -43,15 +45,23 @@ public abstract class QueryableRALBackendHandler<E extends RALStatement> extends
private List<QueryHeader> queryHeaders;
- private MultipleLocalDataMergedResult mergedResult;
+ private MergedResult mergedResult;
@Override
- protected final ResponseHeader handle(final ContextManager contextManager, final E sqlStatement) throws SQLException {
- queryHeaders = createQueryHeader(getColumnNames());
- mergedResult = createMergedResult(getRows(contextManager));
+ public final ResponseHeader execute() throws SQLException {
+ queryHeaders = createQueryHeader();
+ mergedResult = createMergedResult();
return new QueryResponseHeader(queryHeaders);
}
+ private List<QueryHeader> createQueryHeader() {
+ return getColumnNames().stream().map(each -> new QueryHeader("", "", each, each, Types.CHAR, "CHAR", 255, 0, false, false, false, false)).collect(Collectors.toList());
+ }
+
+ private MergedResult createMergedResult() throws SQLException {
+ return new MultipleLocalDataMergedResult(getRows(ProxyContext.getInstance().getContextManager()));
+ }
+
@Override
public final boolean next() throws SQLException {
return null != mergedResult && mergedResult.next();
@@ -59,28 +69,14 @@ public abstract class QueryableRALBackendHandler<E extends RALStatement> extends
@Override
public final Collection<Object> getRowData() throws SQLException {
- return createQueryResponseRow(queryHeaders.size(), mergedResult).getData();
+ List<QueryResponseCell> cells = new ArrayList<>(queryHeaders.size());
+ for (int i = 0; i < queryHeaders.size(); i++) {
+ cells.add(new TextQueryResponseCell(mergedResult.getValue(i + 1, Object.class)));
+ }
+ return new QueryResponseRow(cells).getData();
}
protected abstract Collection<String> getColumnNames();
protected abstract Collection<List<Object>> getRows(ContextManager contextManager) throws SQLException;
-
- private MultipleLocalDataMergedResult createMergedResult(final Collection<List<Object>> rows) {
- return new MultipleLocalDataMergedResult(rows);
- }
-
- private List<QueryHeader> createQueryHeader(final Collection<String> columnNames) {
- return columnNames.stream()
- .map(each -> new QueryHeader("", "", each, each, Types.CHAR, "CHAR", 255, 0, false, false, false, false))
- .collect(Collectors.toList());
- }
-
- private QueryResponseRow createQueryResponseRow(final int size, final MultipleLocalDataMergedResult mergedResult) {
- List<QueryResponseCell> cells = new ArrayList<>(size);
- for (int i = 0; i < size; i++) {
- cells.add(new TextQueryResponseCell(mergedResult.getValue(i + 1, Object.class)));
- }
- return new QueryResponseRow(cells);
- }
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandler.java
index abe0e6361a5..342f1bb3481 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandler.java
@@ -19,14 +19,9 @@ package org.apache.shardingsphere.proxy.backend.text.distsql.ral;
import lombok.Getter;
import org.apache.shardingsphere.distsql.parser.statement.ral.RALStatement;
-import org.apache.shardingsphere.mode.manager.ContextManager;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
-import java.sql.SQLException;
-
/**
* RAL backend handler.
*/
@@ -43,15 +38,8 @@ public abstract class RALBackendHandler<E extends RALStatement> implements TextP
* @param sqlStatement SQL statement
* @param connectionSession connection session
*/
- public void init(final RALStatement sqlStatement, final ConnectionSession connectionSession) {
+ public final void init(final RALStatement sqlStatement, final ConnectionSession connectionSession) {
this.sqlStatement = (E) sqlStatement;
this.connectionSession = connectionSession;
}
-
- @Override
- public final ResponseHeader execute() throws SQLException {
- return handle(ProxyContext.getInstance().getContextManager(), sqlStatement);
- }
-
- protected abstract ResponseHeader handle(ContextManager contextManager, E sqlStatement) throws SQLException;
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandlerFactory.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandlerFactory.java
index 5d7ed1f8fa7..b7e0c35a6d1 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandlerFactory.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandlerFactory.java
@@ -153,7 +153,7 @@ public final class RALBackendHandlerFactory {
if (sqlStatement instanceof UpdatableScalingRALStatement) {
return new UpdatableScalingRALBackendHandler((UpdatableScalingRALStatement) sqlStatement);
}
- return getHandler(sqlStatement, connectionSession);
+ return createRALBackendHandler(sqlStatement, connectionSession);
}
private static RALBackendHandler<?> newInstance(final Class<? extends RALBackendHandler> clazz) {
@@ -164,7 +164,7 @@ public final class RALBackendHandlerFactory {
}
}
- private static RALBackendHandler<?> getHandler(final RALStatement sqlStatement, final ConnectionSession connectionSession) {
+ private static RALBackendHandler<?> createRALBackendHandler(final RALStatement sqlStatement, final ConnectionSession connectionSession) {
Class<? extends RALBackendHandler> clazz = HANDLERS.get(sqlStatement.getClass().getName());
if (null == clazz) {
throw new UnsupportedOperationException(String.format("Unsupported SQL statement : %s", sqlStatement.getClass().getCanonicalName()));
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/UpdatableRALBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/UpdatableRALBackendHandler.java
index 862dc93e72c..4c297cdabcf 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/UpdatableRALBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/UpdatableRALBackendHandler.java
@@ -20,9 +20,12 @@ package org.apache.shardingsphere.proxy.backend.text.distsql.ral;
import org.apache.shardingsphere.distsql.parser.statement.ral.RALStatement;
import org.apache.shardingsphere.infra.distsql.exception.DistSQLException;
import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
import org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
+import java.sql.SQLException;
+
/**
* Updatable RAL backend handler.
*
@@ -31,10 +34,10 @@ import org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResp
public abstract class UpdatableRALBackendHandler<E extends RALStatement> extends RALBackendHandler<E> {
@Override
- protected final ResponseHeader handle(final ContextManager contextManager, final E sqlStatement) throws DistSQLException {
- update(contextManager, sqlStatement);
- return new UpdateResponseHeader(sqlStatement);
+ public final ResponseHeader execute() throws SQLException {
+ update(ProxyContext.getInstance().getContextManager());
+ return new UpdateResponseHeader(getSqlStatement());
}
- protected abstract void update(ContextManager contextManager, E sqlStatement) throws DistSQLException;
+ protected abstract void update(ContextManager contextManager) throws DistSQLException;
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/FormatHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/FormatHandler.java
index 594ec72f6a4..bfd719cde32 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/FormatHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/FormatHandler.java
@@ -41,7 +41,7 @@ public final class FormatHandler extends QueryableRALBackendHandler<FormatStatem
@Override
protected Collection<String> getColumnNames() {
- return Collections.singletonList(FORMATTED_RESULT);
+ return Collections.singleton(FORMATTED_RESULT);
}
@Override
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/ParseDistSQLBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/ParseDistSQLBackendHandler.java
index 4d1fe2e12c5..3090cf78f95 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/ParseDistSQLBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/ParseDistSQLBackendHandler.java
@@ -25,7 +25,6 @@ import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.parser.rule.SQLParserRule;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import org.apache.shardingsphere.proxy.backend.text.distsql.ral.QueryableRALBackendHandler;
import org.apache.shardingsphere.sql.parser.exception.SQLParsingException;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -56,17 +55,17 @@ public final class ParseDistSQLBackendHandler extends QueryableRALBackendHandler
Preconditions.checkState(sqlParserRule.isPresent());
SQLStatement parsedSqlStatement;
try {
- parsedSqlStatement = sqlParserRule.get().getSQLParserEngine(getStorageType(getConnectionSession()).getType()).parse(getSqlStatement().getSql(), false);
- } catch (SQLParsingException ex) {
+ parsedSqlStatement = sqlParserRule.get().getSQLParserEngine(getStorageType().getType()).parse(getSqlStatement().getSql(), false);
+ } catch (final SQLParsingException ex) {
throw new SQLParsingException("You have a syntax error in your parsed statement");
}
return Collections.singleton(Arrays.asList(parsedSqlStatement.getClass().getSimpleName(), new Gson().toJson(parsedSqlStatement)));
}
- private static DatabaseType getStorageType(final ConnectionSession connectionSession) {
- String databaseName = connectionSession.getDatabaseName();
+ private DatabaseType getStorageType() {
+ String databaseName = getConnectionSession().getDatabaseName();
return Strings.isNullOrEmpty(databaseName) || !ProxyContext.getInstance().databaseExists(databaseName)
- ? connectionSession.getDatabaseType()
+ ? getConnectionSession().getDatabaseType()
: ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabases().get(databaseName).getResource().getDatabaseType();
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterInstanceHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterInstanceHandler.java
index be8783f86f8..f03d58068a4 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterInstanceHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterInstanceHandler.java
@@ -36,23 +36,18 @@ public final class AlterInstanceHandler extends UpdatableRALBackendHandler<Alter
private static final String XA_RECOVERY_NODES = "xa_recovery_nodes";
@Override
- protected void update(final ContextManager contextManager, final AlterInstanceStatement sqlStatement) throws DistSQLException {
- if (XA_RECOVERY_NODES.equalsIgnoreCase(sqlStatement.getKey())) {
- setXaRecoveryId(contextManager, sqlStatement);
- } else {
- throw new UnsupportedOperationException(String.format("%s is not supported", sqlStatement.getKey()));
+ protected void update(final ContextManager contextManager) throws DistSQLException {
+ if (!XA_RECOVERY_NODES.equalsIgnoreCase(getSqlStatement().getKey())) {
+ throw new UnsupportedOperationException(String.format("%s is not supported", getSqlStatement().getKey()));
}
- }
-
- private void setXaRecoveryId(final ContextManager contextManager, final AlterInstanceStatement sqlStatement) {
Optional<MetaDataPersistService> persistService = contextManager.getMetaDataContexts().getPersistService();
if (!persistService.isPresent()) {
- throw new UnsupportedOperationException(String.format("No persistence configuration found, unable to set '%s'", sqlStatement.getKey()));
+ throw new UnsupportedOperationException(String.format("No persistence configuration found, unable to set '%s'", getSqlStatement().getKey()));
}
- if (!contextManager.getInstanceContext().getComputeNodeInstanceById(sqlStatement.getInstanceId()).isPresent()) {
- throw new UnsupportedOperationException(String.format("'%s' does not exist", sqlStatement.getInstanceId()));
+ if (!contextManager.getInstanceContext().getComputeNodeInstanceById(getSqlStatement().getInstanceId()).isPresent()) {
+ throw new UnsupportedOperationException(String.format("'%s' does not exist", getSqlStatement().getInstanceId()));
}
// TODO need support standalone mode
- ShardingSphereEventBus.getInstance().post(new XaRecoveryIdChangedEvent(sqlStatement.getInstanceId(), Splitter.on(",").splitToList(sqlStatement.getValue())));
+ ShardingSphereEventBus.getInstance().post(new XaRecoveryIdChangedEvent(getSqlStatement().getInstanceId(), Splitter.on(",").splitToList(getSqlStatement().getValue())));
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterSQLParserRuleHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterSQLParserRuleHandler.java
index 9ce86e52ca8..39fbeac61a4 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterSQLParserRuleHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterSQLParserRuleHandler.java
@@ -37,7 +37,7 @@ import java.util.Optional;
public final class AlterSQLParserRuleHandler extends UpdatableRALBackendHandler<AlterSQLParserRuleStatement> {
@Override
- protected void update(final ContextManager contextManager, final AlterSQLParserRuleStatement sqlStatement) {
+ protected void update(final ContextManager contextManager) {
Optional<SQLParserRuleConfiguration> currentConfig = findCurrentConfiguration();
SQLParserRuleConfiguration toBeAlteredRuleConfig = createSQLParserRuleConfiguration(currentConfig.orElseGet(() -> new DefaultSQLParserRuleConfigurationBuilder().build()));
Collection<RuleConfiguration> globalRuleConfigs = ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getConfigurations();
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTrafficRuleHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTrafficRuleHandler.java
index e82cb61ccb6..626fc8c5f96 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTrafficRuleHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTrafficRuleHandler.java
@@ -45,11 +45,11 @@ import java.util.stream.Collectors;
public final class AlterTrafficRuleHandler extends UpdatableRALBackendHandler<AlterTrafficRuleStatement> {
@Override
- protected void update(final ContextManager contextManager, final AlterTrafficRuleStatement sqlStatement) throws DistSQLException {
+ protected void update(final ContextManager contextManager) throws DistSQLException {
Optional<TrafficRuleConfiguration> currentConfig = findCurrentConfiguration();
DistSQLException.predictionThrow(currentConfig.isPresent(), () -> new RequiredRuleMissedException("Traffic"));
- check(sqlStatement, currentConfig.get());
- TrafficRuleConfiguration toBeAlteredConfig = TrafficRuleConverter.convert(sqlStatement.getSegments());
+ check(getSqlStatement(), currentConfig.get());
+ TrafficRuleConfiguration toBeAlteredConfig = TrafficRuleConverter.convert(getSqlStatement().getSegments());
persistNewRuleConfigurations(toBeAlteredConfig, currentConfig.get());
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTransactionRuleHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTransactionRuleHandler.java
index b74b4252bf0..1e0629d7610 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTransactionRuleHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTransactionRuleHandler.java
@@ -38,7 +38,7 @@ import java.util.Optional;
public final class AlterTransactionRuleHandler extends UpdatableRALBackendHandler<AlterTransactionRuleStatement> {
@Override
- protected void update(final ContextManager contextManager, final AlterTransactionRuleStatement sqlStatement) {
+ protected void update(final ContextManager contextManager) {
ShardingSphereRuleMetaData globalRuleMetaData = contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData();
Collection<ShardingSphereRule> globalRules = globalRuleMetaData.getRules();
globalRules.removeIf(each -> each instanceof TransactionRule);
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ApplyDistSQLHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ApplyDistSQLHandler.java
index 9c509f9e88e..1700bb51044 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ApplyDistSQLHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ApplyDistSQLHandler.java
@@ -27,7 +27,7 @@ import org.apache.shardingsphere.proxy.backend.text.distsql.ral.UpdatableRALBack
public final class ApplyDistSQLHandler extends UpdatableRALBackendHandler<AlterTransactionRuleStatement> {
@Override
- protected void update(final ContextManager contextManager, final AlterTransactionRuleStatement sqlStatement) {
+ protected void update(final ContextManager contextManager) {
// TODO Metadata support required
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/CreateTrafficRuleHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/CreateTrafficRuleHandler.java
index 7453c0df7d3..ff7fcfacf35 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/CreateTrafficRuleHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/CreateTrafficRuleHandler.java
@@ -46,19 +46,19 @@ import java.util.stream.Collectors;
public final class CreateTrafficRuleHandler extends UpdatableRALBackendHandler<CreateTrafficRuleStatement> {
@Override
- protected void update(final ContextManager contextManager, final CreateTrafficRuleStatement sqlStatement) throws DistSQLException {
+ protected void update(final ContextManager contextManager) throws DistSQLException {
Optional<TrafficRuleConfiguration> trafficRuleConfig = ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData()
.findRuleConfigurations(TrafficRuleConfiguration.class).stream().findAny();
if (trafficRuleConfig.isPresent()) {
- checkTrafficRuleConfiguration(sqlStatement, trafficRuleConfig.get());
+ checkTrafficRuleConfiguration(trafficRuleConfig.get());
}
checkInvalidAlgorithmNames();
- updateToRepository(TrafficRuleConverter.convert(sqlStatement.getSegments()), trafficRuleConfig.orElse(null));
+ updateToRepository(TrafficRuleConverter.convert(getSqlStatement().getSegments()), trafficRuleConfig.orElse(null));
}
- private void checkTrafficRuleConfiguration(final CreateTrafficRuleStatement sqlStatement, final TrafficRuleConfiguration trafficRuleConfig) throws DistSQLException {
+ private void checkTrafficRuleConfiguration(final TrafficRuleConfiguration trafficRuleConfig) throws DistSQLException {
Collection<String> currentRuleNames = trafficRuleConfig.getTrafficStrategies().stream().map(TrafficStrategyConfiguration::getName).collect(Collectors.toSet());
- Set<String> duplicatedRuleNames = sqlStatement.getSegments().stream().map(TrafficRuleSegment::getName).filter(currentRuleNames::contains).collect(Collectors.toSet());
+ Set<String> duplicatedRuleNames = getSqlStatement().getSegments().stream().map(TrafficRuleSegment::getName).filter(currentRuleNames::contains).collect(Collectors.toSet());
DistSQLException.predictionThrow(duplicatedRuleNames.isEmpty(), () -> new DuplicateRuleException("traffic", duplicatedRuleNames));
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DiscardDistSQLHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DiscardDistSQLHandler.java
index 6f850ab5792..61313834371 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DiscardDistSQLHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DiscardDistSQLHandler.java
@@ -27,7 +27,7 @@ import org.apache.shardingsphere.proxy.backend.text.distsql.ral.UpdatableRALBack
public final class DiscardDistSQLHandler extends UpdatableRALBackendHandler<AlterTransactionRuleStatement> {
@Override
- protected void update(final ContextManager contextManager, final AlterTransactionRuleStatement sqlStatement) {
+ protected void update(final ContextManager contextManager) {
// TODO Metadata support required
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DropTrafficRuleHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DropTrafficRuleHandler.java
index 72fea003d52..0a8e9c0eee0 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DropTrafficRuleHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DropTrafficRuleHandler.java
@@ -39,24 +39,24 @@ import java.util.stream.Collectors;
public final class DropTrafficRuleHandler extends UpdatableRALBackendHandler<DropTrafficRuleStatement> {
@Override
- protected void update(final ContextManager contextManager, final DropTrafficRuleStatement sqlStatement) throws DistSQLException {
+ protected void update(final ContextManager contextManager) throws DistSQLException {
Optional<TrafficRuleConfiguration> config = ProxyContext.getInstance()
.getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData().findSingleRuleConfiguration(TrafficRuleConfiguration.class);
- if (!sqlStatement.isContainsIfExistClause()) {
+ if (!getSqlStatement().isContainsIfExistClause()) {
DistSQLException.predictionThrow(config.isPresent(), () -> new RequiredRuleMissedException("Traffic"));
- checkTrafficRuleConfiguration(sqlStatement, config.get());
+ checkTrafficRuleConfiguration(config.get());
}
if (config.isPresent()) {
- config.get().getTrafficStrategies().removeIf(each -> sqlStatement.getRuleNames().contains(each.getName()));
+ config.get().getTrafficStrategies().removeIf(each -> getSqlStatement().getRuleNames().contains(each.getName()));
getUnusedAlgorithm(config.get()).forEach(each -> config.get().getTrafficAlgorithms().remove(each));
getUnusedLoadBalancer(config.get()).forEach(each -> config.get().getLoadBalancers().remove(each));
updateToRepository(config.get());
}
}
- private void checkTrafficRuleConfiguration(final DropTrafficRuleStatement sqlStatement, final TrafficRuleConfiguration config) throws DistSQLException {
+ private void checkTrafficRuleConfiguration(final TrafficRuleConfiguration config) throws DistSQLException {
Set<String> currentTrafficStrategyNames = config.getTrafficStrategies().stream().map(TrafficStrategyConfiguration::getName).collect(Collectors.toSet());
- Set<String> notExistRuleNames = sqlStatement.getRuleNames().stream().filter(each -> !currentTrafficStrategyNames.contains(each)).collect(Collectors.toSet());
+ Set<String> notExistRuleNames = getSqlStatement().getRuleNames().stream().filter(each -> !currentTrafficStrategyNames.contains(each)).collect(Collectors.toSet());
DistSQLException.predictionThrow(notExistRuleNames.isEmpty(), () -> new RequiredRuleMissedException("Traffic"));
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ImportDatabaseConfigurationHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ImportDatabaseConfigurationHandler.java
index 344c77ca7dc..c80f89b2c33 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ImportDatabaseConfigurationHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ImportDatabaseConfigurationHandler.java
@@ -86,6 +86,32 @@ public final class ImportDatabaseConfigurationHandler extends UpdatableRALBacken
private final YamlProxyDataSourceConfigurationSwapper dataSourceConfigSwapper = new YamlProxyDataSourceConfigurationSwapper();
+ @Override
+ protected void update(final ContextManager contextManager) throws DistSQLException {
+ if (!getSqlStatement().getFilePath().isPresent()) {
+ return;
+ }
+ File yamlFile = new File(getSqlStatement().getFilePath().get());
+ YamlProxyDatabaseConfiguration yamlConfig;
+ try {
+ yamlConfig = YamlEngine.unmarshal(yamlFile, YamlProxyDatabaseConfiguration.class);
+ } catch (final IOException ex) {
+ throw new ShardingSphereException(ex);
+ }
+ String databaseName = yamlConfig.getDatabaseName();
+ DistSQLException.predictionThrow(!Strings.isNullOrEmpty(databaseName), () -> new ImportDatabaseNotExistedException(yamlFile.getName()));
+ checkDatabaseName(databaseName);
+ DistSQLException.predictionThrow(null != yamlConfig.getDataSources() && !yamlConfig.getDataSources().isEmpty(), () -> new ImportResourceNotExistedException(yamlFile.getName()));
+ alterResourcesConfig(databaseName, yamlConfig.getDataSources());
+ alterRulesConfig(databaseName, yamlConfig.getRules());
+ }
+
+ private void checkDatabaseName(final String databaseName) {
+ if (!ProxyContext.getInstance().getAllDatabaseNames().contains(databaseName)) {
+ throw new DatabaseNotExistedException(databaseName);
+ }
+ }
+
private void alterResourcesConfig(final String databaseName, final Map<String, YamlProxyDataSourceConfiguration> yamlDataSourceMap) throws DistSQLException {
Map<String, DataSourceProperties> toBeUpdatedResourcePropsMap = new LinkedHashMap<>(yamlDataSourceMap.size(), 1);
for (Entry<String, YamlProxyDataSourceConfiguration> each : yamlDataSourceMap.entrySet()) {
@@ -142,33 +168,4 @@ public final class ImportDatabaseConfigurationHandler extends UpdatableRALBacken
Optional<MetaDataPersistService> metaDataPersistService = metaDataContexts.getPersistService();
metaDataPersistService.ifPresent(optional -> optional.getDatabaseRulePersistService().persist(databaseName, toBeUpdatedRuleConfigs));
}
-
- private void checkDatabaseName(final String databaseName) {
- if (!ProxyContext.getInstance().getAllDatabaseNames().contains(databaseName)) {
- throw new DatabaseNotExistedException(databaseName);
- }
- }
-
- @Override
- protected void update(final ContextManager contextManager, final ImportDatabaseConfigurationStatement sqlStatement) throws DistSQLException {
- if (!sqlStatement.getFilePath().isPresent()) {
- return;
- }
- File yamlFile = new File(sqlStatement.getFilePath().get());
- YamlProxyDatabaseConfiguration yamlConfig;
- try {
- yamlConfig = YamlEngine.unmarshal(yamlFile, YamlProxyDatabaseConfiguration.class);
- if (null == yamlConfig) {
- return;
- }
- } catch (final IOException ex) {
- throw new ShardingSphereException(ex);
- }
- String databaseName = yamlConfig.getDatabaseName();
- DistSQLException.predictionThrow(!Strings.isNullOrEmpty(databaseName), () -> new ImportDatabaseNotExistedException(yamlFile.getName()));
- checkDatabaseName(databaseName);
- DistSQLException.predictionThrow(null != yamlConfig.getDataSources() && !yamlConfig.getDataSources().isEmpty(), () -> new ImportResourceNotExistedException(yamlFile.getName()));
- alterResourcesConfig(databaseName, yamlConfig.getDataSources());
- alterRulesConfig(databaseName, yamlConfig.getRules());
- }
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/LabelInstanceHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/LabelInstanceHandler.java
index 372e3786a68..46516995d54 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/LabelInstanceHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/LabelInstanceHandler.java
@@ -38,16 +38,16 @@ import java.util.Optional;
public final class LabelInstanceHandler extends UpdatableRALBackendHandler<LabelInstanceStatement> {
@Override
- public void update(final ContextManager contextManager, final LabelInstanceStatement sqlStatement) {
+ public void update(final ContextManager contextManager) {
MetaDataPersistService persistService = ProxyContext.getInstance().getContextManager().getMetaDataContexts().getPersistService().orElse(null);
if (null == persistService || null == persistService.getRepository() || persistService.getRepository() instanceof StandalonePersistRepository) {
throw new UnsupportedOperationException("Labels can only be added in cluster mode");
}
- String instanceId = sqlStatement.getInstanceId();
+ String instanceId = getSqlStatement().getInstanceId();
Optional<ComputeNodeInstance> computeNodeInstance = contextManager.getInstanceContext().getComputeNodeInstanceById(instanceId);
if (computeNodeInstance.isPresent()) {
- Collection<String> labels = new LinkedHashSet<>(sqlStatement.getLabels());
- if (!sqlStatement.isOverwrite() && null != computeNodeInstance.get().getLabels()) {
+ Collection<String> labels = new LinkedHashSet<>(getSqlStatement().getLabels());
+ if (!getSqlStatement().isOverwrite() && null != computeNodeInstance.get().getLabels()) {
labels.addAll(computeNodeInstance.get().getLabels());
}
ShardingSphereEventBus.getInstance().post(new LabelsChangedEvent(instanceId, new LinkedList<>(labels)));
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/PrepareDistSQLHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/PrepareDistSQLHandler.java
index 7ffb2e99698..a91757c703e 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/PrepareDistSQLHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/PrepareDistSQLHandler.java
@@ -27,7 +27,7 @@ import org.apache.shardingsphere.proxy.backend.text.distsql.ral.UpdatableRALBack
public final class PrepareDistSQLHandler extends UpdatableRALBackendHandler<AlterTransactionRuleStatement> {
@Override
- protected void update(final ContextManager contextManager, final AlterTransactionRuleStatement sqlStatement) {
+ protected void update(final ContextManager contextManager) {
// TODO Metadata support required
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/RefreshTableMetadataHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/RefreshTableMetadataHandler.java
index 164e6b9bc4d..04ccce7201c 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/RefreshTableMetadataHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/RefreshTableMetadataHandler.java
@@ -33,22 +33,22 @@ import org.apache.shardingsphere.proxy.backend.text.distsql.ral.UpdatableRALBack
public final class RefreshTableMetadataHandler extends UpdatableRALBackendHandler<RefreshTableMetadataStatement> {
@Override
- protected void update(final ContextManager contextManager, final RefreshTableMetadataStatement sqlStatement) throws DistSQLException {
+ protected void update(final ContextManager contextManager) throws DistSQLException {
String databaseName = getDatabaseName();
- String schemaName = getSchemaName(sqlStatement, databaseName);
- if (sqlStatement.getResourceName().isPresent()) {
- if (sqlStatement.getTableName().isPresent()) {
- contextManager.reloadMetaData(databaseName, schemaName, sqlStatement.getResourceName().get(), sqlStatement.getTableName().get());
+ String schemaName = getSchemaName(databaseName);
+ if (getSqlStatement().getResourceName().isPresent()) {
+ if (getSqlStatement().getTableName().isPresent()) {
+ contextManager.reloadMetaData(databaseName, schemaName, getSqlStatement().getResourceName().get(), getSqlStatement().getTableName().get());
} else {
- contextManager.reloadSchemaMetaData(databaseName, schemaName, sqlStatement.getResourceName().get());
+ contextManager.reloadSchemaMetaData(databaseName, schemaName, getSqlStatement().getResourceName().get());
}
return;
}
- if (sqlStatement.getTableName().isPresent()) {
- contextManager.reloadMetaData(databaseName, schemaName, sqlStatement.getTableName().get());
- return;
+ if (getSqlStatement().getTableName().isPresent()) {
+ contextManager.reloadMetaData(databaseName, schemaName, getSqlStatement().getTableName().get());
+ } else {
+ contextManager.reloadMetaData(databaseName);
}
- contextManager.reloadMetaData(databaseName);
}
private String getDatabaseName() {
@@ -62,10 +62,9 @@ public final class RefreshTableMetadataHandler extends UpdatableRALBackendHandle
return result;
}
- private String getSchemaName(final RefreshTableMetadataStatement sqlStatement, final String databaseName) {
- if (sqlStatement.getSchemaName().isPresent()) {
- return sqlStatement.getSchemaName().get();
- }
- return DatabaseTypeEngine.getDefaultSchemaName(getConnectionSession().getDatabaseType(), databaseName);
+ private String getSchemaName(final String databaseName) {
+ return getSqlStatement().getSchemaName().isPresent()
+ ? getSqlStatement().getSchemaName().get()
+ : DatabaseTypeEngine.getDefaultSchemaName(getConnectionSession().getDatabaseType(), databaseName);
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetInstanceStatusHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetInstanceStatusHandler.java
index 197b82f1c0b..7ebf6076e03 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetInstanceStatusHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetInstanceStatusHandler.java
@@ -31,12 +31,12 @@ import org.apache.shardingsphere.proxy.backend.text.distsql.ral.UpdatableRALBack
public final class SetInstanceStatusHandler extends UpdatableRALBackendHandler<SetInstanceStatusStatement> {
@Override
- protected void update(final ContextManager contextManager, final SetInstanceStatusStatement sqlStatement) {
+ protected void update(final ContextManager contextManager) {
if (!contextManager.getInstanceContext().isCluster()) {
throw new UnsupportedOperationException("Only allowed in cluster mode");
}
- String instanceId = sqlStatement.getInstanceId();
- boolean isDisable = "DISABLE".equals(sqlStatement.getStatus());
+ String instanceId = getSqlStatement().getInstanceId();
+ boolean isDisable = "DISABLE".equals(getSqlStatement().getStatus());
if (isDisable) {
checkDisablingIsValid(contextManager, instanceId);
} else {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetReadwriteSplittingStatusHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetReadwriteSplittingStatusHandler.java
index 2ab49884545..d9c02877af0 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetReadwriteSplittingStatusHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetReadwriteSplittingStatusHandler.java
@@ -58,16 +58,16 @@ public final class SetReadwriteSplittingStatusHandler extends UpdatableRALBacken
private static final String DISABLE = "DISABLE";
@Override
- protected void update(final ContextManager contextManager, final SetReadwriteSplittingStatusStatement sqlStatement) throws DistSQLException {
- String databaseName = sqlStatement.getDatabase().isPresent() ? sqlStatement.getDatabase().get().getIdentifier().getValue() : getConnectionSession().getDatabaseName();
- String toBeUpdatedResource = sqlStatement.getResourceName();
+ protected void update(final ContextManager contextManager) throws DistSQLException {
+ String databaseName = getSqlStatement().getDatabase().isPresent() ? getSqlStatement().getDatabase().get().getIdentifier().getValue() : getConnectionSession().getDatabaseName();
+ String toBeUpdatedResource = getSqlStatement().getResourceName();
checkModeAndPersistRepository(contextManager);
checkDatabaseName(databaseName);
checkReadwriteSplittingRule(contextManager, databaseName);
Map<String, String> replicaResources = getReplicaResources(contextManager, databaseName);
Map<String, String> disabledResources = getDisabledResources(contextManager, databaseName);
Map<String, String> autoAwareResources = getAutoAwareResources(contextManager, databaseName);
- boolean isDisable = DISABLE.equals(sqlStatement.getStatus());
+ boolean isDisable = DISABLE.equals(getSqlStatement().getStatus());
if (isDisable) {
checkDisable(contextManager, databaseName, disabledResources.keySet(), toBeUpdatedResource, replicaResources);
} else {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetVariableHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetVariableHandler.java
index b232660c866..cefdc1e1d4c 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetVariableHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetVariableHandler.java
@@ -43,14 +43,14 @@ import java.util.Properties;
public final class SetVariableHandler extends UpdatableRALBackendHandler<SetVariableStatement> {
@Override
- protected void update(final ContextManager contextManager, final SetVariableStatement sqlStatement) throws DistSQLException {
- Enum<?> enumType = getEnumType(sqlStatement.getName());
+ protected void update(final ContextManager contextManager) throws DistSQLException {
+ Enum<?> enumType = getEnumType(getSqlStatement().getName());
if (enumType instanceof ConfigurationPropertyKey) {
- handleConfigurationProperty((ConfigurationPropertyKey) enumType, sqlStatement.getValue());
+ handleConfigurationProperty((ConfigurationPropertyKey) enumType, getSqlStatement().getValue());
} else if (enumType instanceof VariableEnum) {
- handleVariables(sqlStatement);
+ handleVariables();
} else {
- throw new UnsupportedVariableException(sqlStatement.getName());
+ throw new UnsupportedVariableException(getSqlStatement().getName());
}
}
@@ -83,8 +83,8 @@ public final class SetVariableHandler extends UpdatableRALBackendHandler<SetVari
}
}
- private void handleVariables(final SetVariableStatement setVariableStatement) {
- VariableEnum variable = VariableEnum.getValueOf(setVariableStatement.getName());
+ private void handleVariables() {
+ VariableEnum variable = VariableEnum.getValueOf(getSqlStatement().getName());
switch (variable) {
case AGENT_PLUGINS_ENABLED:
Boolean agentPluginsEnabled = BooleanUtils.toBooleanObject(getSqlStatement().getValue());
@@ -94,14 +94,14 @@ public final class SetVariableHandler extends UpdatableRALBackendHandler<SetVari
getConnectionSession().getTransactionStatus().setTransactionType(getTransactionType(getSqlStatement().getValue()));
break;
default:
- throw new UnsupportedVariableException(setVariableStatement.getName());
+ throw new UnsupportedVariableException(getSqlStatement().getName());
}
}
private TransactionType getTransactionType(final String transactionTypeName) throws UnsupportedVariableException {
try {
return TransactionType.valueOf(transactionTypeName.toUpperCase());
- } catch (IllegalArgumentException ex) {
+ } catch (final IllegalArgumentException ex) {
throw new UnsupportedVariableException(transactionTypeName);
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/UnlabelInstanceHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/UnlabelInstanceHandler.java
index 8f38d1cb690..aa29f4f7eb3 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/UnlabelInstanceHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/UnlabelInstanceHandler.java
@@ -40,19 +40,19 @@ import java.util.Optional;
public final class UnlabelInstanceHandler extends UpdatableRALBackendHandler<UnlabelInstanceStatement> {
@Override
- protected void update(final ContextManager contextManager, final UnlabelInstanceStatement sqlStatement) throws DistSQLException {
+ protected void update(final ContextManager contextManager) throws DistSQLException {
MetaDataPersistService persistService = ProxyContext.getInstance().getContextManager().getMetaDataContexts().getPersistService().orElse(null);
if (null == persistService || null == persistService.getRepository() || persistService.getRepository() instanceof StandalonePersistRepository) {
throw new UnsupportedOperationException("Labels can only be removed in cluster mode");
}
- String instanceId = sqlStatement.getInstanceId();
+ String instanceId = getSqlStatement().getInstanceId();
Optional<ComputeNodeInstance> computeNodeInstance = contextManager.getInstanceContext().getComputeNodeInstanceById(instanceId);
if (computeNodeInstance.isPresent()) {
Collection<String> labels = new LinkedHashSet<>(computeNodeInstance.get().getLabels());
- if (sqlStatement.getLabels().isEmpty()) {
- ShardingSphereEventBus.getInstance().post(new LabelsChangedEvent(instanceId, Collections.EMPTY_LIST));
+ if (getSqlStatement().getLabels().isEmpty()) {
+ ShardingSphereEventBus.getInstance().post(new LabelsChangedEvent(instanceId, Collections.emptyList()));
} else {
- labels.removeAll(sqlStatement.getLabels());
+ labels.removeAll(getSqlStatement().getLabels());
ShardingSphereEventBus.getInstance().post(new LabelsChangedEvent(instanceId, new LinkedList<>(labels)));
}
}