You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2023/10/16 09:37:54 UTC
[shardingsphere] branch master updated: Add RuleMetaData for SQLTranslator interface (#28771)
This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 bcd3c8bfb71 Add RuleMetaData for SQLTranslator interface (#28771)
bcd3c8bfb71 is described below
commit bcd3c8bfb71d57d593c0f145444230f49b0b7279
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Mon Oct 16 17:37:42 2023 +0800
Add RuleMetaData for SQLTranslator interface (#28771)
---
.../shardingsphere/infra/rewrite/SQLRewriteEntry.java | 5 +++--
.../infra/rewrite/engine/GenericSQLRewriteEngine.java | 5 ++++-
.../infra/rewrite/engine/RouteSQLRewriteEngine.java | 5 ++++-
.../infra/rewrite/engine/GenericSQLRewriteEngineTest.java | 5 +++--
.../infra/rewrite/engine/RouteSQLRewriteEngineTest.java | 13 +++++++------
.../shardingsphere/sqltranslator/spi/SQLTranslator.java | 4 +++-
.../sqltranslator/rule/SQLTranslatorRule.java | 6 ++++--
.../sqltranslator/rule/SQLTranslatorRuleTest.java | 12 +++++++-----
.../rule/fixture/AlwaysFailedSQLTranslator.java | 3 ++-
.../rule/fixture/ConvertToUpperCaseSQLTranslator.java | 3 ++-
.../sqltranslator/jooq/JooQSQLTranslator.java | 3 ++-
.../sqltranslator/natived/NativeSQLTranslator.java | 3 ++-
12 files changed, 43 insertions(+), 24 deletions(-)
diff --git a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/SQLRewriteEntry.java b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/SQLRewriteEntry.java
index a3aa2874c56..2ac4172383c 100644
--- a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/SQLRewriteEntry.java
+++ b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/SQLRewriteEntry.java
@@ -78,9 +78,10 @@ public final class SQLRewriteEntry {
SQLTranslatorRule rule = globalRuleMetaData.getSingleRule(SQLTranslatorRule.class);
DatabaseType protocolType = database.getProtocolType();
Map<String, StorageUnit> storageUnits = database.getResourceMetaData().getStorageUnits();
+ RuleMetaData ruleMetaData = database.getRuleMetaData();
return routeContext.getRouteUnits().isEmpty()
- ? new GenericSQLRewriteEngine(rule, protocolType, storageUnits).rewrite(sqlRewriteContext)
- : new RouteSQLRewriteEngine(rule, protocolType, storageUnits).rewrite(sqlRewriteContext, routeContext);
+ ? new GenericSQLRewriteEngine(rule, protocolType, storageUnits, ruleMetaData).rewrite(sqlRewriteContext)
+ : new RouteSQLRewriteEngine(rule, protocolType, storageUnits, ruleMetaData).rewrite(sqlRewriteContext, routeContext);
}
private SQLRewriteContext createSQLRewriteContext(final String sql, final List<Object> params, final SQLStatementContext sqlStatementContext,
diff --git a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngine.java b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngine.java
index 66ad3447f2d..7e1a4547fde 100644
--- a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngine.java
+++ b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngine.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.infra.rewrite.engine;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
+import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.rewrite.context.SQLRewriteContext;
import org.apache.shardingsphere.infra.rewrite.engine.result.GenericSQLRewriteResult;
import org.apache.shardingsphere.infra.rewrite.engine.result.SQLRewriteUnit;
@@ -40,6 +41,8 @@ public final class GenericSQLRewriteEngine {
private final Map<String, StorageUnit> storageUnits;
+ private final RuleMetaData globalRuleMetaData;
+
/**
* Rewrite SQL and parameters.
*
@@ -49,7 +52,7 @@ public final class GenericSQLRewriteEngine {
public GenericSQLRewriteResult rewrite(final SQLRewriteContext sqlRewriteContext) {
String sql = translatorRule.translate(
new DefaultSQLBuilder(sqlRewriteContext).toSQL(), sqlRewriteContext.getSqlStatementContext().getSqlStatement(), protocolType,
- storageUnits.isEmpty() ? protocolType : storageUnits.values().iterator().next().getStorageType());
+ storageUnits.isEmpty() ? protocolType : storageUnits.values().iterator().next().getStorageType(), globalRuleMetaData);
return new GenericSQLRewriteResult(new SQLRewriteUnit(sql, sqlRewriteContext.getParameterBuilder().getParameters()));
}
}
diff --git a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngine.java b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngine.java
index 6b839bdc0fc..a7c0d2c0ddc 100644
--- a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngine.java
+++ b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngine.java
@@ -23,6 +23,7 @@ import org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatem
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.datanode.DataNode;
import org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
+import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.rewrite.context.SQLRewriteContext;
import org.apache.shardingsphere.infra.rewrite.engine.result.RouteSQLRewriteResult;
import org.apache.shardingsphere.infra.rewrite.engine.result.SQLRewriteUnit;
@@ -56,6 +57,8 @@ public final class RouteSQLRewriteEngine {
private final Map<String, StorageUnit> storageUnits;
+ private final RuleMetaData globalRuleMetaData;
+
/**
* Rewrite SQL and parameters.
*
@@ -158,7 +161,7 @@ public final class RouteSQLRewriteEngine {
Map<RouteUnit, SQLRewriteUnit> result = new LinkedHashMap<>(sqlRewriteUnits.size(), 1F);
for (Entry<RouteUnit, SQLRewriteUnit> entry : sqlRewriteUnits.entrySet()) {
DatabaseType storageType = storageUnits.get(entry.getKey().getDataSourceMapper().getActualName()).getStorageType();
- String sql = translatorRule.translate(entry.getValue().getSql(), sqlStatement, protocolType, storageType);
+ String sql = translatorRule.translate(entry.getValue().getSql(), sqlStatement, protocolType, storageType, globalRuleMetaData);
SQLRewriteUnit sqlRewriteUnit = new SQLRewriteUnit(sql, entry.getValue().getParameters());
result.put(entry.getKey(), sqlRewriteUnit);
}
diff --git a/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngineTest.java b/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngineTest.java
index 9ace771448d..90d19b541ed 100644
--- a/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngineTest.java
+++ b/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngineTest.java
@@ -23,6 +23,7 @@ import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.hint.HintValueContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
+import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.rewrite.context.SQLRewriteContext;
import org.apache.shardingsphere.infra.rewrite.engine.result.GenericSQLRewriteResult;
@@ -46,7 +47,7 @@ class GenericSQLRewriteEngineTest {
void assertRewrite() {
DatabaseType databaseType = mock(DatabaseType.class);
SQLTranslatorRule rule = new SQLTranslatorRule(new SQLTranslatorRuleConfiguration());
- GenericSQLRewriteResult actual = new GenericSQLRewriteEngine(rule, databaseType, mockStorageUnits(databaseType))
+ GenericSQLRewriteResult actual = new GenericSQLRewriteEngine(rule, databaseType, mockStorageUnits(databaseType), mock(RuleMetaData.class))
.rewrite(new SQLRewriteContext(mockDatabase(), mock(CommonSQLStatementContext.class), "SELECT 1", Collections.emptyList(), mock(ConnectionContext.class),
new HintValueContext()));
assertThat(actual.getSqlRewriteUnit().getSql(), is("SELECT 1"));
@@ -56,7 +57,7 @@ class GenericSQLRewriteEngineTest {
@Test
void assertRewriteStorageTypeIsEmpty() {
SQLTranslatorRule rule = new SQLTranslatorRule(new SQLTranslatorRuleConfiguration());
- GenericSQLRewriteResult actual = new GenericSQLRewriteEngine(rule, mock(DatabaseType.class), Collections.emptyMap())
+ GenericSQLRewriteResult actual = new GenericSQLRewriteEngine(rule, mock(DatabaseType.class), Collections.emptyMap(), mock(RuleMetaData.class))
.rewrite(new SQLRewriteContext(mockDatabase(), mock(CommonSQLStatementContext.class), "SELECT 1", Collections.emptyList(), mock(ConnectionContext.class),
new HintValueContext()));
assertThat(actual.getSqlRewriteUnit().getSql(), is("SELECT 1"));
diff --git a/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngineTest.java b/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngineTest.java
index 144779871fd..db5eae2ea57 100644
--- a/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngineTest.java
+++ b/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngineTest.java
@@ -27,6 +27,7 @@ import org.apache.shardingsphere.infra.datanode.DataNode;
import org.apache.shardingsphere.infra.hint.HintValueContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
+import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.rewrite.context.SQLRewriteContext;
import org.apache.shardingsphere.infra.rewrite.engine.result.RouteSQLRewriteResult;
@@ -60,7 +61,7 @@ class RouteSQLRewriteEngineTest {
routeContext.getRouteUnits().add(routeUnit);
DatabaseType databaseType = mock(DatabaseType.class);
RouteSQLRewriteResult actual = new RouteSQLRewriteEngine(
- new SQLTranslatorRule(new SQLTranslatorRuleConfiguration()), databaseType, mockStorageUnits(databaseType)).rewrite(sqlRewriteContext, routeContext);
+ new SQLTranslatorRule(new SQLTranslatorRuleConfiguration()), databaseType, mockStorageUnits(databaseType), mock(RuleMetaData.class)).rewrite(sqlRewriteContext, routeContext);
assertThat(actual.getSqlRewriteUnits().size(), is(1));
assertThat(actual.getSqlRewriteUnits().get(routeUnit).getSql(), is("SELECT ?"));
assertThat(actual.getSqlRewriteUnits().get(routeUnit).getParameters(), is(Collections.singletonList(1)));
@@ -79,7 +80,7 @@ class RouteSQLRewriteEngineTest {
routeContext.getRouteUnits().add(secondRouteUnit);
DatabaseType databaseType = mock(DatabaseType.class);
RouteSQLRewriteResult actual = new RouteSQLRewriteEngine(
- new SQLTranslatorRule(new SQLTranslatorRuleConfiguration()), databaseType, mockStorageUnits(databaseType)).rewrite(sqlRewriteContext, routeContext);
+ new SQLTranslatorRule(new SQLTranslatorRuleConfiguration()), databaseType, mockStorageUnits(databaseType), mock(RuleMetaData.class)).rewrite(sqlRewriteContext, routeContext);
assertThat(actual.getSqlRewriteUnits().size(), is(1));
assertThat(actual.getSqlRewriteUnits().get(firstRouteUnit).getSql(), is("SELECT ? UNION ALL SELECT ?"));
assertThat(actual.getSqlRewriteUnits().get(firstRouteUnit).getParameters(), is(Arrays.asList(1, 1)));
@@ -99,7 +100,7 @@ class RouteSQLRewriteEngineTest {
routeContext.getRouteUnits().add(routeUnit);
DatabaseType databaseType = mock(DatabaseType.class);
RouteSQLRewriteResult actual = new RouteSQLRewriteEngine(
- new SQLTranslatorRule(new SQLTranslatorRuleConfiguration()), databaseType, mockStorageUnits(databaseType)).rewrite(sqlRewriteContext, routeContext);
+ new SQLTranslatorRule(new SQLTranslatorRuleConfiguration()), databaseType, mockStorageUnits(databaseType), mock(RuleMetaData.class)).rewrite(sqlRewriteContext, routeContext);
assertThat(actual.getSqlRewriteUnits().size(), is(1));
assertThat(actual.getSqlRewriteUnits().get(routeUnit).getSql(), is("INSERT INTO tbl VALUES (?)"));
assertThat(actual.getSqlRewriteUnits().get(routeUnit).getParameters(), is(Collections.singletonList(1)));
@@ -121,7 +122,7 @@ class RouteSQLRewriteEngineTest {
routeContext.getOriginalDataNodes().add(Collections.singletonList(new DataNode("ds.tbl_0")));
DatabaseType databaseType = mock(DatabaseType.class);
RouteSQLRewriteResult actual = new RouteSQLRewriteEngine(
- new SQLTranslatorRule(new SQLTranslatorRuleConfiguration()), databaseType, mockStorageUnits(databaseType)).rewrite(sqlRewriteContext, routeContext);
+ new SQLTranslatorRule(new SQLTranslatorRuleConfiguration()), databaseType, mockStorageUnits(databaseType), mock(RuleMetaData.class)).rewrite(sqlRewriteContext, routeContext);
assertThat(actual.getSqlRewriteUnits().size(), is(1));
assertThat(actual.getSqlRewriteUnits().get(routeUnit).getSql(), is("INSERT INTO tbl VALUES (?)"));
assertThat(actual.getSqlRewriteUnits().get(routeUnit).getParameters(), is(Collections.singletonList(1)));
@@ -142,7 +143,7 @@ class RouteSQLRewriteEngineTest {
routeContext.getOriginalDataNodes().add(Collections.emptyList());
DatabaseType databaseType = mock(DatabaseType.class);
RouteSQLRewriteResult actual = new RouteSQLRewriteEngine(
- new SQLTranslatorRule(new SQLTranslatorRuleConfiguration()), databaseType, mockStorageUnits(databaseType)).rewrite(sqlRewriteContext, routeContext);
+ new SQLTranslatorRule(new SQLTranslatorRuleConfiguration()), databaseType, mockStorageUnits(databaseType), mock(RuleMetaData.class)).rewrite(sqlRewriteContext, routeContext);
assertThat(actual.getSqlRewriteUnits().size(), is(1));
assertThat(actual.getSqlRewriteUnits().get(routeUnit).getSql(), is("INSERT INTO tbl VALUES (?)"));
assertThat(actual.getSqlRewriteUnits().get(routeUnit).getParameters(), is(Collections.singletonList(1)));
@@ -163,7 +164,7 @@ class RouteSQLRewriteEngineTest {
routeContext.getOriginalDataNodes().add(Collections.singletonList(new DataNode("ds_1.tbl_1")));
DatabaseType databaseType = mock(DatabaseType.class);
RouteSQLRewriteResult actual = new RouteSQLRewriteEngine(
- new SQLTranslatorRule(new SQLTranslatorRuleConfiguration()), databaseType, mockStorageUnits(databaseType)).rewrite(sqlRewriteContext, routeContext);
+ new SQLTranslatorRule(new SQLTranslatorRuleConfiguration()), databaseType, mockStorageUnits(databaseType), mock(RuleMetaData.class)).rewrite(sqlRewriteContext, routeContext);
assertThat(actual.getSqlRewriteUnits().size(), is(1));
assertThat(actual.getSqlRewriteUnits().get(routeUnit).getSql(), is("INSERT INTO tbl VALUES (?)"));
assertTrue(actual.getSqlRewriteUnits().get(routeUnit).getParameters().isEmpty());
diff --git a/kernel/sql-translator/api/src/main/java/org/apache/shardingsphere/sqltranslator/spi/SQLTranslator.java b/kernel/sql-translator/api/src/main/java/org/apache/shardingsphere/sqltranslator/spi/SQLTranslator.java
index 4b95ba5f59b..ed0d35b9620 100644
--- a/kernel/sql-translator/api/src/main/java/org/apache/shardingsphere/sqltranslator/spi/SQLTranslator.java
+++ b/kernel/sql-translator/api/src/main/java/org/apache/shardingsphere/sqltranslator/spi/SQLTranslator.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.sqltranslator.spi;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -35,7 +36,8 @@ public interface SQLTranslator extends TypedSPI {
* @param sqlStatement to be translated SQL statement
* @param protocolType protocol type
* @param storageType storage type
+ * @param globalRuleMetaData global rule meta data
* @return translated SQL
*/
- String translate(String sql, SQLStatement sqlStatement, DatabaseType protocolType, DatabaseType storageType);
+ String translate(String sql, SQLStatement sqlStatement, DatabaseType protocolType, DatabaseType storageType, RuleMetaData globalRuleMetaData);
}
diff --git a/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/rule/SQLTranslatorRule.java b/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/rule/SQLTranslatorRule.java
index 3355e010626..c55b14b9dda 100644
--- a/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/rule/SQLTranslatorRule.java
+++ b/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/rule/SQLTranslatorRule.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.sqltranslator.rule;
import lombok.Getter;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.rule.identifier.scope.GlobalRule;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -51,14 +52,15 @@ public final class SQLTranslatorRule implements GlobalRule {
* @param sqlStatement to be translated SQL statement
* @param protocolType protocol type
* @param storageType storage type
+ * @param globalRuleMetaData global rule meta data
* @return translated SQL
*/
- public String translate(final String sql, final SQLStatement sqlStatement, final DatabaseType protocolType, final DatabaseType storageType) {
+ public String translate(final String sql, final SQLStatement sqlStatement, final DatabaseType protocolType, final DatabaseType storageType, final RuleMetaData globalRuleMetaData) {
if (protocolType.equals(storageType) || null == storageType) {
return sql;
}
try {
- return translator.translate(sql, sqlStatement, protocolType, storageType);
+ return translator.translate(sql, sqlStatement, protocolType, storageType, globalRuleMetaData);
} catch (final SQLTranslationException ex) {
if (useOriginalSQLWhenTranslatingFailed) {
return sql;
diff --git a/kernel/sql-translator/core/src/test/java/org/apache/shardingsphere/sqltranslator/rule/SQLTranslatorRuleTest.java b/kernel/sql-translator/core/src/test/java/org/apache/shardingsphere/sqltranslator/rule/SQLTranslatorRuleTest.java
index 6d847167a08..4736040d915 100644
--- a/kernel/sql-translator/core/src/test/java/org/apache/shardingsphere/sqltranslator/rule/SQLTranslatorRuleTest.java
+++ b/kernel/sql-translator/core/src/test/java/org/apache/shardingsphere/sqltranslator/rule/SQLTranslatorRuleTest.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.sqltranslator.rule;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sqltranslator.api.config.SQLTranslatorRuleConfiguration;
import org.apache.shardingsphere.sqltranslator.exception.syntax.UnsupportedTranslatedDatabaseException;
@@ -28,6 +29,7 @@ import java.util.Locale;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.mock;
class SQLTranslatorRuleTest {
@@ -35,7 +37,7 @@ class SQLTranslatorRuleTest {
void assertTranslateWhenProtocolSameAsStorage() {
String expected = "select 1";
DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "PostgreSQL");
- String actual = new SQLTranslatorRule(new SQLTranslatorRuleConfiguration("CONVERT_TO_UPPER_CASE", false)).translate(expected, null, databaseType, databaseType);
+ String actual = new SQLTranslatorRule(new SQLTranslatorRuleConfiguration("CONVERT_TO_UPPER_CASE", false)).translate(expected, null, databaseType, databaseType, mock(RuleMetaData.class));
assertThat(actual, is(expected));
}
@@ -43,7 +45,7 @@ class SQLTranslatorRuleTest {
void assertTranslateWhenNoStorage() {
String expected = "select 1";
String actual = new SQLTranslatorRule(new SQLTranslatorRuleConfiguration("CONVERT_TO_UPPER_CASE", false)).translate(
- expected, null, TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"), null);
+ expected, null, TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"), null, mock(RuleMetaData.class));
assertThat(actual, is(expected));
}
@@ -51,7 +53,7 @@ class SQLTranslatorRuleTest {
void assertTranslateWithProtocolDifferentWithStorage() {
String input = "select 1";
String actual = new SQLTranslatorRule(new SQLTranslatorRuleConfiguration("CONVERT_TO_UPPER_CASE", false)).translate(
- input, null, TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"), TypedSPILoader.getService(DatabaseType.class, "MySQL"));
+ input, null, TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"), TypedSPILoader.getService(DatabaseType.class, "MySQL"), mock(RuleMetaData.class));
assertThat(actual, is(input.toUpperCase(Locale.ROOT)));
}
@@ -59,7 +61,7 @@ class SQLTranslatorRuleTest {
void assertUseOriginalSQLWhenTranslatingFailed() {
String expected = "select 1";
String actual = new SQLTranslatorRule(new SQLTranslatorRuleConfiguration("ALWAYS_FAILED", true)).translate(expected, null,
- TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"), TypedSPILoader.getService(DatabaseType.class, "MySQL"));
+ TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"), TypedSPILoader.getService(DatabaseType.class, "MySQL"), mock(RuleMetaData.class));
assertThat(actual, is(expected));
}
@@ -67,7 +69,7 @@ class SQLTranslatorRuleTest {
void assertNotUseOriginalSQLWhenTranslatingFailed() {
assertThrows(UnsupportedTranslatedDatabaseException.class,
() -> new SQLTranslatorRule(new SQLTranslatorRuleConfiguration("ALWAYS_FAILED", false)).translate("", null,
- TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"), TypedSPILoader.getService(DatabaseType.class, "MySQL")));
+ TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"), TypedSPILoader.getService(DatabaseType.class, "MySQL"), mock(RuleMetaData.class)));
}
@Test
diff --git a/kernel/sql-translator/core/src/test/java/org/apache/shardingsphere/sqltranslator/rule/fixture/AlwaysFailedSQLTranslator.java b/kernel/sql-translator/core/src/test/java/org/apache/shardingsphere/sqltranslator/rule/fixture/AlwaysFailedSQLTranslator.java
index a60197c76a2..388c48ea3a3 100644
--- a/kernel/sql-translator/core/src/test/java/org/apache/shardingsphere/sqltranslator/rule/fixture/AlwaysFailedSQLTranslator.java
+++ b/kernel/sql-translator/core/src/test/java/org/apache/shardingsphere/sqltranslator/rule/fixture/AlwaysFailedSQLTranslator.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.sqltranslator.rule.fixture;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.sqltranslator.exception.syntax.UnsupportedTranslatedDatabaseException;
import org.apache.shardingsphere.sqltranslator.spi.SQLTranslator;
@@ -25,7 +26,7 @@ import org.apache.shardingsphere.sqltranslator.spi.SQLTranslator;
public final class AlwaysFailedSQLTranslator implements SQLTranslator {
@Override
- public String translate(final String sql, final SQLStatement sqlStatement, final DatabaseType protocolType, final DatabaseType storageType) {
+ public String translate(final String sql, final SQLStatement sqlStatement, final DatabaseType protocolType, final DatabaseType storageType, final RuleMetaData globalRuleMetaData) {
throw new UnsupportedTranslatedDatabaseException(storageType);
}
diff --git a/kernel/sql-translator/core/src/test/java/org/apache/shardingsphere/sqltranslator/rule/fixture/ConvertToUpperCaseSQLTranslator.java b/kernel/sql-translator/core/src/test/java/org/apache/shardingsphere/sqltranslator/rule/fixture/ConvertToUpperCaseSQLTranslator.java
index 5c0a8e4f4b2..4427a63de02 100644
--- a/kernel/sql-translator/core/src/test/java/org/apache/shardingsphere/sqltranslator/rule/fixture/ConvertToUpperCaseSQLTranslator.java
+++ b/kernel/sql-translator/core/src/test/java/org/apache/shardingsphere/sqltranslator/rule/fixture/ConvertToUpperCaseSQLTranslator.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.sqltranslator.rule.fixture;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.sqltranslator.spi.SQLTranslator;
@@ -26,7 +27,7 @@ import java.util.Locale;
public final class ConvertToUpperCaseSQLTranslator implements SQLTranslator {
@Override
- public String translate(final String sql, final SQLStatement sqlStatement, final DatabaseType protocolType, final DatabaseType storageType) {
+ public String translate(final String sql, final SQLStatement sqlStatement, final DatabaseType protocolType, final DatabaseType storageType, final RuleMetaData globalRuleMetaData) {
return sql.toUpperCase(Locale.ROOT);
}
diff --git a/kernel/sql-translator/provider/jooq/src/main/java/org/apache/shardingsphere/sqltranslator/jooq/JooQSQLTranslator.java b/kernel/sql-translator/provider/jooq/src/main/java/org/apache/shardingsphere/sqltranslator/jooq/JooQSQLTranslator.java
index 7d8e6ac009e..878f88736d8 100644
--- a/kernel/sql-translator/provider/jooq/src/main/java/org/apache/shardingsphere/sqltranslator/jooq/JooQSQLTranslator.java
+++ b/kernel/sql-translator/provider/jooq/src/main/java/org/apache/shardingsphere/sqltranslator/jooq/JooQSQLTranslator.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.sqltranslator.jooq;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.sqltranslator.exception.syntax.UnsupportedTranslatedSQLException;
import org.apache.shardingsphere.sqltranslator.spi.SQLTranslator;
@@ -30,7 +31,7 @@ import org.jooq.impl.DSL;
public final class JooQSQLTranslator implements SQLTranslator {
@Override
- public String translate(final String sql, final SQLStatement statement, final DatabaseType protocolType, final DatabaseType storageType) {
+ public String translate(final String sql, final SQLStatement statement, final DatabaseType protocolType, final DatabaseType storageType, final RuleMetaData globalRuleMetaData) {
try {
Query query = DSL.using(JooQDialectRegistry.getSQLDialect(protocolType)).parser().parseQuery(sql);
return DSL.using(JooQDialectRegistry.getSQLDialect(storageType)).render(query);
diff --git a/kernel/sql-translator/provider/native/src/main/java/org/apache/shardingsphere/sqltranslator/natived/NativeSQLTranslator.java b/kernel/sql-translator/provider/native/src/main/java/org/apache/shardingsphere/sqltranslator/natived/NativeSQLTranslator.java
index 90582e55ad6..1f959eabb5c 100644
--- a/kernel/sql-translator/provider/native/src/main/java/org/apache/shardingsphere/sqltranslator/natived/NativeSQLTranslator.java
+++ b/kernel/sql-translator/provider/native/src/main/java/org/apache/shardingsphere/sqltranslator/natived/NativeSQLTranslator.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.sqltranslator.natived;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.sqltranslator.spi.SQLTranslator;
@@ -27,7 +28,7 @@ import org.apache.shardingsphere.sqltranslator.spi.SQLTranslator;
public final class NativeSQLTranslator implements SQLTranslator {
@Override
- public String translate(final String sql, final SQLStatement statement, final DatabaseType protocolType, final DatabaseType storageType) {
+ public String translate(final String sql, final SQLStatement statement, final DatabaseType protocolType, final DatabaseType storageType, final RuleMetaData globalRuleMetaData) {
// TODO
return sql;
}