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> {