You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by su...@apache.org on 2023/02/19 16:41:27 UTC
[shardingsphere] branch master updated: Add DefaultSessionVariableHandler (#24250)
This is an automated email from the ASF dual-hosted git repository.
sunnianjun 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 d2d4384ebe4 Add DefaultSessionVariableHandler (#24250)
d2d4384ebe4 is described below
commit d2d4384ebe47623307055873274c13a85f4c3f0d
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Mon Feb 20 00:41:21 2023 +0800
Add DefaultSessionVariableHandler (#24250)
---
.../DefaultSessionVariableHandler.java} | 15 +++++++++------
.../mysql/DefaultMySQLSessionVariableHandler.java | 22 ++++------------------
.../DefaultPostgreSQLSessionVariableHandler.java | 22 ++++------------------
3 files changed, 17 insertions(+), 42 deletions(-)
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/DefaultMySQLSessionVariableHandler.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DefaultSessionVariableHandler.java
similarity index 67%
copy from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/DefaultMySQLSessionVariableHandler.java
copy to proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DefaultSessionVariableHandler.java
index 12d2df47047..ca77969baf5 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/DefaultMySQLSessionVariableHandler.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DefaultSessionVariableHandler.java
@@ -15,26 +15,29 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.admin.mysql;
+package org.apache.shardingsphere.proxy.backend.handler.admin.executor;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
-import org.apache.shardingsphere.proxy.backend.handler.admin.executor.ReplayedSessionVariablesProvider;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import java.util.Collection;
import java.util.Collections;
/**
- * Default session variable handler for MySQL.
+ * Default session variable handler.
*/
@Slf4j
-public final class DefaultMySQLSessionVariableHandler implements MySQLSessionVariableHandler {
+public abstract class DefaultSessionVariableHandler implements SessionVariableHandler {
- private final Collection<String> replayedSessionVariables = TypedSPILoader.findService(ReplayedSessionVariablesProvider.class, "MySQL").orElseGet(() -> Collections::emptySet).getVariables();
+ private final Collection<String> replayedSessionVariables;
+
+ protected DefaultSessionVariableHandler(final String databaseType) {
+ replayedSessionVariables = TypedSPILoader.findService(ReplayedSessionVariablesProvider.class, databaseType).map(ReplayedSessionVariablesProvider::getVariables).orElse(Collections.emptySet());
+ }
@Override
- public void handle(final ConnectionSession connectionSession, final String variableName, final String assignValue) {
+ public final void handle(final ConnectionSession connectionSession, final String variableName, final String assignValue) {
if (replayedSessionVariables.contains(variableName)) {
connectionSession.getRequiredSessionVariableRecorder().setVariable(variableName, assignValue);
} else {
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/DefaultMySQLSessionVariableHandler.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/DefaultMySQLSessionVariableHandler.java
index 12d2df47047..a116708c7a4 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/DefaultMySQLSessionVariableHandler.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/DefaultMySQLSessionVariableHandler.java
@@ -17,28 +17,14 @@
package org.apache.shardingsphere.proxy.backend.handler.admin.mysql;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
-import org.apache.shardingsphere.proxy.backend.handler.admin.executor.ReplayedSessionVariablesProvider;
-import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-
-import java.util.Collection;
-import java.util.Collections;
+import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DefaultSessionVariableHandler;
/**
* Default session variable handler for MySQL.
*/
-@Slf4j
-public final class DefaultMySQLSessionVariableHandler implements MySQLSessionVariableHandler {
-
- private final Collection<String> replayedSessionVariables = TypedSPILoader.findService(ReplayedSessionVariablesProvider.class, "MySQL").orElseGet(() -> Collections::emptySet).getVariables();
+public final class DefaultMySQLSessionVariableHandler extends DefaultSessionVariableHandler implements MySQLSessionVariableHandler {
- @Override
- public void handle(final ConnectionSession connectionSession, final String variableName, final String assignValue) {
- if (replayedSessionVariables.contains(variableName)) {
- connectionSession.getRequiredSessionVariableRecorder().setVariable(variableName, assignValue);
- } else {
- log.debug("Set statement {} = {} was discarded.", variableName, assignValue);
- }
+ public DefaultMySQLSessionVariableHandler() {
+ super("MySQL");
}
}
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/postgresql/DefaultPostgreSQLSessionVariableHandler.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/postgresql/DefaultPostgreSQLSessionVariableHandler.java
index 2b1bfe4a0b1..7b25e800f0f 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/postgresql/DefaultPostgreSQLSessionVariableHandler.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/postgresql/DefaultPostgreSQLSessionVariableHandler.java
@@ -17,28 +17,14 @@
package org.apache.shardingsphere.proxy.backend.handler.admin.postgresql;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
-import org.apache.shardingsphere.proxy.backend.handler.admin.executor.ReplayedSessionVariablesProvider;
-import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-
-import java.util.Collection;
-import java.util.Collections;
+import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DefaultSessionVariableHandler;
/**
* Default session variable handler for PostgreSQL.
*/
-@Slf4j
-public final class DefaultPostgreSQLSessionVariableHandler implements PostgreSQLSessionVariableHandler {
-
- private final Collection<String> replayedSessionVariables = TypedSPILoader.findService(ReplayedSessionVariablesProvider.class, "PostgreSQL").orElseGet(() -> Collections::emptySet).getVariables();
+public final class DefaultPostgreSQLSessionVariableHandler extends DefaultSessionVariableHandler implements PostgreSQLSessionVariableHandler {
- @Override
- public void handle(final ConnectionSession connectionSession, final String variableName, final String assignValue) {
- if (replayedSessionVariables.contains(variableName)) {
- connectionSession.getRequiredSessionVariableRecorder().setVariable(variableName, assignValue);
- } else {
- log.debug("Set statement {} = {} was discarded.", variableName, assignValue);
- }
+ public DefaultPostgreSQLSessionVariableHandler() {
+ super("PostgreSQL");
}
}