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 <[email protected]>
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");
     }
 }

Reply via email to