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/12/12 16:25:11 UTC

(shardingsphere) branch master updated: Refactor DistSQL implementation for SQL translator (#29380)

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 565c0684284 Refactor DistSQL implementation for SQL translator (#29380)
565c0684284 is described below

commit 565c06842844890791d005f72ec9e497aea14029
Author: Raigor <ra...@gmail.com>
AuthorDate: Wed Dec 13 00:25:05 2023 +0800

    Refactor DistSQL implementation for SQL translator (#29380)
---
 .../update/AlterSQLTranslatorRuleStatementUpdater.java  | 10 +++-------
 .../AlterSQLTranslatorRuleStatementUpdaterTest.java     |  5 +++--
 .../src/main/antlr4/imports/sqltranslator/BaseRule.g4   | 12 ++++++++++++
 .../main/antlr4/imports/sqltranslator/RALStatement.g4   | 10 +---------
 .../core/SQLTranslatorDistSQLStatementVisitor.java      | 17 ++++++++++++++---
 .../updateable/AlterSQLTranslatorRuleStatement.java     |  7 ++-----
 .../update/AlterTransactionRuleStatementUpdater.java    |  2 +-
 7 files changed, 36 insertions(+), 27 deletions(-)

diff --git a/kernel/sql-translator/distsql/handler/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/handler/update/AlterSQLTranslatorRuleStatementUpdater.java b/kernel/sql-translator/distsql/handler/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/handler/update/AlterSQLTranslatorRuleStatementUpdater.java
index d7ecee7eae9..c9947da48f3 100644
--- a/kernel/sql-translator/distsql/handler/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/handler/update/AlterSQLTranslatorRuleStatementUpdater.java
+++ b/kernel/sql-translator/distsql/handler/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/handler/update/AlterSQLTranslatorRuleStatementUpdater.java
@@ -24,22 +24,18 @@ import org.apache.shardingsphere.sqltranslator.distsql.statement.updateable.Alte
 import org.apache.shardingsphere.sqltranslator.spi.SQLTranslator;
 
 /**
- * Alter SQL translator rule statement handler.
+ * Alter SQL translator rule statement updater.
  */
 public final class AlterSQLTranslatorRuleStatementUpdater implements GlobalRuleRALUpdater<AlterSQLTranslatorRuleStatement, SQLTranslatorRuleConfiguration> {
     
     @Override
     public void checkSQLStatement(final SQLTranslatorRuleConfiguration currentRuleConfig, final AlterSQLTranslatorRuleStatement sqlStatement) {
-        checkProvider(sqlStatement);
-    }
-    
-    private void checkProvider(final AlterSQLTranslatorRuleStatement sqlStatement) {
-        TypedSPILoader.checkService(SQLTranslator.class, sqlStatement.getType(), sqlStatement.getProps());
+        TypedSPILoader.checkService(SQLTranslator.class, sqlStatement.getProvider().getName(), sqlStatement.getProvider().getProps());
     }
     
     @Override
     public SQLTranslatorRuleConfiguration buildAlteredRuleConfiguration(final SQLTranslatorRuleConfiguration currentRuleConfig, final AlterSQLTranslatorRuleStatement sqlStatement) {
-        return new SQLTranslatorRuleConfiguration(sqlStatement.getType(), sqlStatement.getProps(),
+        return new SQLTranslatorRuleConfiguration(sqlStatement.getProvider().getName(), sqlStatement.getProvider().getProps(),
                 null == sqlStatement.getUseOriginalSQLWhenTranslatingFailed() ? currentRuleConfig.isUseOriginalSQLWhenTranslatingFailed() : sqlStatement.getUseOriginalSQLWhenTranslatingFailed());
     }
     
diff --git a/kernel/sql-translator/distsql/handler/src/test/java/org/apache/shardingsphere/sqltranslator/distsql/handler/update/AlterSQLTranslatorRuleStatementUpdaterTest.java b/kernel/sql-translator/distsql/handler/src/test/java/org/apache/shardingsphere/sqltranslator/distsql/handler/update/AlterSQLTranslatorRuleStatementUpdaterTest.java
index ad32bb58bf4..71646986809 100644
--- a/kernel/sql-translator/distsql/handler/src/test/java/org/apache/shardingsphere/sqltranslator/distsql/handler/update/AlterSQLTranslatorRuleStatementUpdaterTest.java
+++ b/kernel/sql-translator/distsql/handler/src/test/java/org/apache/shardingsphere/sqltranslator/distsql/handler/update/AlterSQLTranslatorRuleStatementUpdaterTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.sqltranslator.distsql.handler.update;
 
+import org.apache.shardingsphere.distsql.segment.AlgorithmSegment;
 import org.apache.shardingsphere.infra.props.PropertiesConverter;
 import org.apache.shardingsphere.sqltranslator.api.config.SQLTranslatorRuleConfiguration;
 import org.apache.shardingsphere.sqltranslator.distsql.statement.updateable.AlterSQLTranslatorRuleStatement;
@@ -36,8 +37,8 @@ class AlterSQLTranslatorRuleStatementUpdaterTest {
     @Test
     void assertExecute() {
         AlterSQLTranslatorRuleStatementUpdater updater = new AlterSQLTranslatorRuleStatementUpdater();
-        SQLTranslatorRuleConfiguration actual = updater.buildAlteredRuleConfiguration(createSQLTranslatorRuleConfiguration(), new AlterSQLTranslatorRuleStatement("JOOQ",
-                PropertiesBuilder.build(new Property("foo", "bar")), null));
+        SQLTranslatorRuleConfiguration actual = updater.buildAlteredRuleConfiguration(createSQLTranslatorRuleConfiguration(),
+                new AlterSQLTranslatorRuleStatement(new AlgorithmSegment("JOOQ", PropertiesBuilder.build(new Property("foo", "bar"))), null));
         assertThat(actual.getType(), is("JOOQ"));
         assertFalse(actual.getProps().isEmpty());
         String props = PropertiesConverter.convert(actual.getProps());
diff --git a/kernel/sql-translator/distsql/parser/src/main/antlr4/imports/sqltranslator/BaseRule.g4 b/kernel/sql-translator/distsql/parser/src/main/antlr4/imports/sqltranslator/BaseRule.g4
index bbc13c59b47..0eef60a72b9 100644
--- a/kernel/sql-translator/distsql/parser/src/main/antlr4/imports/sqltranslator/BaseRule.g4
+++ b/kernel/sql-translator/distsql/parser/src/main/antlr4/imports/sqltranslator/BaseRule.g4
@@ -19,6 +19,18 @@ grammar BaseRule;
 
 import Symbol, Keyword, Literals;
 
+algorithmDefinition
+    : TYPE LP_ NAME EQ_ algorithmTypeName (COMMA_ propertiesDefinition)? RP_
+    ;
+
+algorithmTypeName
+    : STRING_ | buildInProviderTypeName
+    ;
+
+buildInProviderTypeName
+    : JOOQ | NATIVE
+    ;
+
 propertiesDefinition
     : PROPERTIES LP_ properties? RP_
     ;
diff --git a/kernel/sql-translator/distsql/parser/src/main/antlr4/imports/sqltranslator/RALStatement.g4 b/kernel/sql-translator/distsql/parser/src/main/antlr4/imports/sqltranslator/RALStatement.g4
index b99b2af908c..299cbd54e59 100644
--- a/kernel/sql-translator/distsql/parser/src/main/antlr4/imports/sqltranslator/RALStatement.g4
+++ b/kernel/sql-translator/distsql/parser/src/main/antlr4/imports/sqltranslator/RALStatement.g4
@@ -28,21 +28,13 @@ alterSQLTranslatorRule
     ;
 
 sqlTranslatorRuleDefinition
-    : TYPE LP_ NAME EQ_ providerName (COMMA_ propertiesDefinition)? RP_ (COMMA_ useOriginalSQLDefinition)?
+    : algorithmDefinition (COMMA_ useOriginalSQLDefinition)?
     ;
 
 useOriginalSQLDefinition
     : USE_ORIGINAL_SQL_WHEN_TRANSLATING_FAILED EQ_ useOriginalSQL
     ;
 
-providerName
-    : STRING_ | buildInProviderTypeName
-    ;
-
-buildInProviderTypeName
-    : JOOQ | NATIVE
-    ;
-
 useOriginalSQL
     : TRUE | FALSE
     ;
diff --git a/kernel/sql-translator/distsql/parser/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/parser/core/SQLTranslatorDistSQLStatementVisitor.java b/kernel/sql-translator/distsql/parser/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/parser/core/SQLTranslatorDistSQLStatementVisitor.java
index 9117042f7eb..41824d3f25b 100644
--- a/kernel/sql-translator/distsql/parser/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/parser/core/SQLTranslatorDistSQLStatementVisitor.java
+++ b/kernel/sql-translator/distsql/parser/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/parser/core/SQLTranslatorDistSQLStatementVisitor.java
@@ -19,10 +19,13 @@ package org.apache.shardingsphere.sqltranslator.distsql.parser.core;
 
 import org.antlr.v4.runtime.tree.ParseTree;
 import org.apache.shardingsphere.distsql.parser.autogen.SQLTranslatorDistSQLStatementBaseVisitor;
+import org.apache.shardingsphere.distsql.parser.autogen.SQLTranslatorDistSQLStatementParser.AlgorithmDefinitionContext;
 import org.apache.shardingsphere.distsql.parser.autogen.SQLTranslatorDistSQLStatementParser.AlterSQLTranslatorRuleContext;
 import org.apache.shardingsphere.distsql.parser.autogen.SQLTranslatorDistSQLStatementParser.PropertiesDefinitionContext;
 import org.apache.shardingsphere.distsql.parser.autogen.SQLTranslatorDistSQLStatementParser.PropertyContext;
 import org.apache.shardingsphere.distsql.parser.autogen.SQLTranslatorDistSQLStatementParser.ShowSQLTranslatorRuleContext;
+import org.apache.shardingsphere.distsql.parser.autogen.SQLTranslatorDistSQLStatementParser.UseOriginalSQLDefinitionContext;
+import org.apache.shardingsphere.distsql.segment.AlgorithmSegment;
 import org.apache.shardingsphere.sql.parser.api.ASTNode;
 import org.apache.shardingsphere.sql.parser.api.visitor.SQLVisitor;
 import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
@@ -43,9 +46,13 @@ public final class SQLTranslatorDistSQLStatementVisitor extends SQLTranslatorDis
     
     @Override
     public ASTNode visitAlterSQLTranslatorRule(final AlterSQLTranslatorRuleContext ctx) {
-        return new AlterSQLTranslatorRuleStatement(getIdentifierValue(ctx.sqlTranslatorRuleDefinition().providerName()), getProperties(ctx.sqlTranslatorRuleDefinition().propertiesDefinition()),
-                null == ctx.sqlTranslatorRuleDefinition().useOriginalSQLDefinition() ? null
-                        : Boolean.valueOf(getIdentifierValue(ctx.sqlTranslatorRuleDefinition().useOriginalSQLDefinition().useOriginalSQL())));
+        return new AlterSQLTranslatorRuleStatement((AlgorithmSegment) visit(ctx.sqlTranslatorRuleDefinition().algorithmDefinition()),
+                isUseOriginalSQLWhenTranslatingFailed(ctx.sqlTranslatorRuleDefinition().useOriginalSQLDefinition()));
+    }
+    
+    @Override
+    public ASTNode visitAlgorithmDefinition(final AlgorithmDefinitionContext ctx) {
+        return new AlgorithmSegment(getIdentifierValue(ctx.algorithmTypeName()), getProperties(ctx.propertiesDefinition()));
     }
     
     private Properties getProperties(final PropertiesDefinitionContext ctx) {
@@ -59,6 +66,10 @@ public final class SQLTranslatorDistSQLStatementVisitor extends SQLTranslatorDis
         return result;
     }
     
+    private Boolean isUseOriginalSQLWhenTranslatingFailed(final UseOriginalSQLDefinitionContext ctx) {
+        return null == ctx ? null : Boolean.valueOf(getIdentifierValue(ctx.useOriginalSQL()));
+    }
+    
     private String getIdentifierValue(final ParseTree context) {
         return null == context ? null : new IdentifierValue(context.getText()).getValue();
     }
diff --git a/kernel/sql-translator/distsql/statement/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/statement/updateable/AlterSQLTranslatorRuleStatement.java b/kernel/sql-translator/distsql/statement/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/statement/updateable/AlterSQLTranslatorRuleStatement.java
index f404cde243e..d345e82f40b 100644
--- a/kernel/sql-translator/distsql/statement/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/statement/updateable/AlterSQLTranslatorRuleStatement.java
+++ b/kernel/sql-translator/distsql/statement/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/statement/updateable/AlterSQLTranslatorRuleStatement.java
@@ -19,10 +19,9 @@ package org.apache.shardingsphere.sqltranslator.distsql.statement.updateable;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.distsql.segment.AlgorithmSegment;
 import org.apache.shardingsphere.distsql.statement.ral.UpdatableGlobalRuleRALStatement;
 
-import java.util.Properties;
-
 /**
  * Alter SQL translator rule statement.
  */
@@ -30,9 +29,7 @@ import java.util.Properties;
 @Getter
 public final class AlterSQLTranslatorRuleStatement extends UpdatableGlobalRuleRALStatement {
     
-    private final String type;
-    
-    private final Properties props;
+    private final AlgorithmSegment provider;
     
     private final Boolean useOriginalSQLWhenTranslatingFailed;
 }
diff --git a/kernel/transaction/distsql/handler/src/main/java/org/apache/shardingsphere/transaction/distsql/handler/update/AlterTransactionRuleStatementUpdater.java b/kernel/transaction/distsql/handler/src/main/java/org/apache/shardingsphere/transaction/distsql/handler/update/AlterTransactionRuleStatementUpdater.java
index 07bcc7375df..4f8a94b873d 100644
--- a/kernel/transaction/distsql/handler/src/main/java/org/apache/shardingsphere/transaction/distsql/handler/update/AlterTransactionRuleStatementUpdater.java
+++ b/kernel/transaction/distsql/handler/src/main/java/org/apache/shardingsphere/transaction/distsql/handler/update/AlterTransactionRuleStatementUpdater.java
@@ -30,7 +30,7 @@ import java.util.Collection;
 import java.util.Optional;
 
 /**
- * Alter transaction rule statement handler.
+ * Alter transaction rule statement updater.
  */
 public final class AlterTransactionRuleStatementUpdater implements GlobalRuleRALUpdater<AlterTransactionRuleStatement, TransactionRuleConfiguration> {