You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2022/09/29 04:30:06 UTC
[shardingsphere] branch master updated: Refactor read write split SQL hint (#21226)
This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 56d21e6a7be Refactor read write split SQL hint (#21226)
56d21e6a7be is described below
commit 56d21e6a7be71e8526f0da0a4a29dea7d304e376
Author: Zonglei Dong <do...@apache.org>
AuthorDate: Thu Sep 29 12:29:54 2022 +0800
Refactor read write split SQL hint (#21226)
* Refactor SQL hint, rename SQL hint key name.
* Fixes SQL hint test case.
* Fixes SQL hint test case.
* Fixes SQL hint test case.
---
.../shardingsphere/infra/hint/SQLHintExtractor.java | 2 +-
.../shardingsphere/infra/hint/SQLHintPropertiesKey.java | 8 ++++----
.../apache/shardingsphere/infra/hint/SQLHintUtils.java | 4 ++--
.../shardingsphere/infra/hint/SQLHintExtractorTest.java | 6 +++---
.../shardingsphere/infra/hint/SQLHintUtilsTest.java | 16 ++++++++--------
.../algorithm/traffic/hint/SQLHintTrafficAlgorithm.java | 2 +-
.../traffic/hint/SQLHintTrafficAlgorithmTest.java | 4 ++--
.../shardingsphere/traffic/rule/TrafficRuleTest.java | 2 +-
.../encrypt/case/query-with-cipher/dml/update/update.xml | 8 ++++----
9 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/hint/SQLHintExtractor.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/hint/SQLHintExtractor.java
index 47f475e1e72..1c4b9ca5f09 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/hint/SQLHintExtractor.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/hint/SQLHintExtractor.java
@@ -73,6 +73,6 @@ public final class SQLHintExtractor {
* @return disable audit names
*/
public Collection<String> findDisableAuditNames() {
- return SQLHintUtils.getSplitterSQLHintValue(sqlHintProperties.getValue(SQLHintPropertiesKey.DISABLE_AUDIT_NAMES));
+ return SQLHintUtils.getSplitterSQLHintValue(sqlHintProperties.getValue(SQLHintPropertiesKey.DISABLE_AUDIT_NAMES_KEY));
}
}
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/hint/SQLHintPropertiesKey.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/hint/SQLHintPropertiesKey.java
index 119f5492d29..6a06a9057e1 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/hint/SQLHintPropertiesKey.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/hint/SQLHintPropertiesKey.java
@@ -31,22 +31,22 @@ public enum SQLHintPropertiesKey implements TypedPropertyKey {
/**
* Whether hint route write data source or not.
*/
- WRITE_ROUTE_ONLY_KEY("writeRouteOnly", String.valueOf(Boolean.FALSE), boolean.class),
+ WRITE_ROUTE_ONLY_KEY("WRITE_ROUTE_ONLY", String.valueOf(Boolean.FALSE), boolean.class),
/**
* Whether to use traffic or not.
*/
- USE_TRAFFIC("useTraffic", String.valueOf(Boolean.FALSE), boolean.class),
+ USE_TRAFFIC_KEY("USE_TRAFFIC", String.valueOf(Boolean.FALSE), boolean.class),
/**
* Whether hint skip encrypt rewrite or not.
*/
- SKIP_ENCRYPT_REWRITE_KEY("skipEncryptRewrite", String.valueOf(Boolean.FALSE), boolean.class),
+ SKIP_ENCRYPT_REWRITE_KEY("SKIP_ENCRYPT_REWRITE", String.valueOf(Boolean.FALSE), boolean.class),
/**
* Hint disable audit names.
*/
- DISABLE_AUDIT_NAMES("disableAuditNames", "", String.class);
+ DISABLE_AUDIT_NAMES_KEY("DISABLE_AUDIT_NAMES", "", String.class);
private final String key;
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/hint/SQLHintUtils.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/hint/SQLHintUtils.java
index 7f338ac5b2d..593d01bc30a 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/hint/SQLHintUtils.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/hint/SQLHintUtils.java
@@ -35,7 +35,7 @@ public final class SQLHintUtils {
private static final String SQL_COMMENT_SUFFIX = "*/";
- private static final String SQL_HINT_TOKEN = "shardingsphere hint:";
+ private static final String SQL_HINT_TOKEN = "shardingsphere_hint:";
private static final String SQL_HINT_SPLIT = ",";
@@ -63,7 +63,7 @@ public final class SQLHintUtils {
for (String each : sqlHints) {
List<String> hintValues = Splitter.on(SQL_HINT_VALUE_SPLIT).trimResults().splitToList(each);
if (SQL_HINT_VALUE_SIZE == hintValues.size()) {
- result.put(hintValues.get(0), hintValues.get(1));
+ result.put(hintValues.get(0).toUpperCase(), hintValues.get(1));
}
}
return result;
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/hint/SQLHintExtractorTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/hint/SQLHintExtractorTest.java
index 599f4079def..4bced191dca 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/hint/SQLHintExtractorTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/hint/SQLHintExtractorTest.java
@@ -36,21 +36,21 @@ public final class SQLHintExtractorTest {
@Test
public void assertSQLHintWriteRouteOnly() {
AbstractSQLStatement statement = mock(AbstractSQLStatement.class);
- when(statement.getCommentSegments()).thenReturn(Collections.singletonList(new CommentSegment("/* ShardingSphere hint: writeRouteOnly=true */", 0, 0)));
+ when(statement.getCommentSegments()).thenReturn(Collections.singletonList(new CommentSegment("/* SHARDINGSPHERE_HINT: WRITE_ROUTE_ONLY=true */", 0, 0)));
assertTrue(new SQLHintExtractor(statement).isHintWriteRouteOnly());
}
@Test
public void assertSQLHintSkipEncryptRewrite() {
AbstractSQLStatement statement = mock(AbstractSQLStatement.class);
- when(statement.getCommentSegments()).thenReturn(Collections.singletonList(new CommentSegment("/* ShardingSphere hint: skipEncryptRewrite=true */", 0, 0)));
+ when(statement.getCommentSegments()).thenReturn(Collections.singletonList(new CommentSegment("/* SHARDINGSPHERE_HINT: SKIP_ENCRYPT_REWRITE=true */", 0, 0)));
assertTrue(new SQLHintExtractor(statement).isHintSkipEncryptRewrite());
}
@Test
public void assertSQLHintDisableAuditNames() {
AbstractSQLStatement statement = mock(AbstractSQLStatement.class);
- when(statement.getCommentSegments()).thenReturn(Collections.singletonList(new CommentSegment("/* ShardingSphere hint: disableAuditNames=sharding_audit1 sharding_audit2 */", 0, 0)));
+ when(statement.getCommentSegments()).thenReturn(Collections.singletonList(new CommentSegment("/* SHARDINGSPHERE_HINT: DISABLE_AUDIT_NAMES=sharding_audit1 sharding_audit2 */", 0, 0)));
Collection<String> actual = new SQLHintExtractor(statement).findDisableAuditNames();
assertThat(actual.size(), is(2));
assertTrue(actual.containsAll(Arrays.asList("sharding_audit1", "sharding_audit2")));
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/hint/SQLHintUtilsTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/hint/SQLHintUtilsTest.java
index 6e4c3e678fe..a58d093ce33 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/hint/SQLHintUtilsTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/hint/SQLHintUtilsTest.java
@@ -36,25 +36,25 @@ public final class SQLHintUtilsTest {
@Test
public void assertGetSQLHintPropsWithSingleProp() {
- Properties actual = SQLHintUtils.getSQLHintProps("/* ShardingSphere hint: tableName=t_order */");
+ Properties actual = SQLHintUtils.getSQLHintProps("/* SHARDINGSPHERE_HINT: TABLE_NAME=t_order */");
assertThat(actual.size(), is(1));
- assertThat(actual.get("tableName"), is("t_order"));
+ assertThat(actual.get("TABLE_NAME"), is("t_order"));
}
@Test
public void assertGetSQLHintPropsWithMultiProps() {
- Properties actual = SQLHintUtils.getSQLHintProps("/* ShardingSphere hint: tableName=t_order, columnName=order_id */");
+ Properties actual = SQLHintUtils.getSQLHintProps("/* SHARDINGSPHERE_HINT: TABLE_NAME=t_order, COLUMN_NAME=order_id */");
assertThat(actual.size(), is(2));
- assertThat(actual.get("tableName"), is("t_order"));
- assertThat(actual.get("columnName"), is("order_id"));
+ assertThat(actual.get("TABLE_NAME"), is("t_order"));
+ assertThat(actual.get("COLUMN_NAME"), is("order_id"));
}
@Test
public void assertGetSQLHintPropsWithWrongFormat() {
- Properties actual = SQLHintUtils.getSQLHintProps("/* ShardingSphere hint: tableName=t_order, , databaseName:sharding_db, columnName=order_id */");
+ Properties actual = SQLHintUtils.getSQLHintProps("/* SHARDINGSPHERE_HINT: TABLE_NAME=t_order, , DATABASE_NAME:sharding_db, COLUMN_NAME=order_id */");
assertThat(actual.size(), is(2));
- assertThat(actual.get("tableName"), is("t_order"));
- assertThat(actual.get("columnName"), is("order_id"));
+ assertThat(actual.get("TABLE_NAME"), is("t_order"));
+ assertThat(actual.get("COLUMN_NAME"), is("order_id"));
}
@Test
diff --git a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/algorithm/traffic/hint/SQLHintTrafficAlgorithm.java b/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/algorithm/traffic/hint/SQLHintTrafficAlgorithm.java
index 240e685aba0..d5d974dfbfd 100644
--- a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/algorithm/traffic/hint/SQLHintTrafficAlgorithm.java
+++ b/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/algorithm/traffic/hint/SQLHintTrafficAlgorithm.java
@@ -39,7 +39,7 @@ public final class SQLHintTrafficAlgorithm implements HintTrafficAlgorithm {
@Override
public boolean match(final HintTrafficValue hintTrafficValue) {
- return hintTrafficValue.getSqlHintProps().getValue(SQLHintPropertiesKey.USE_TRAFFIC);
+ return hintTrafficValue.getSqlHintProps().getValue(SQLHintPropertiesKey.USE_TRAFFIC_KEY);
}
@Override
diff --git a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/test/java/org/apache/shardingsphere/traffic/algorithm/traffic/hint/SQLHintTrafficAlgorithmTest.java b/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/test/java/org/apache/shardingsphere/traffic/algorithm/traffic/hint/SQLHintTrafficAlgorithmTest.java
index 8ef68316e00..d0db02da123 100644
--- a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/test/java/org/apache/shardingsphere/traffic/algorithm/traffic/hint/SQLHintTrafficAlgorithmTest.java
+++ b/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/test/java/org/apache/shardingsphere/traffic/algorithm/traffic/hint/SQLHintTrafficAlgorithmTest.java
@@ -31,14 +31,14 @@ public final class SQLHintTrafficAlgorithmTest {
@Test
public void assertMatchWhenSQLHintAllMatch() {
Properties props = new Properties();
- props.put("useTraffic", Boolean.TRUE.toString());
+ props.put("USE_TRAFFIC", Boolean.TRUE.toString());
assertTrue(new SQLHintTrafficAlgorithm().match(new HintTrafficValue(new SQLHintProperties(props))));
}
@Test
public void assertMatchWhenSQLHintOneMatch() {
Properties props = new Properties();
- props.put("useTraffic", Boolean.FALSE.toString());
+ props.put("USE_TRAFFIC", Boolean.FALSE.toString());
assertFalse(new SQLHintTrafficAlgorithm().match(new HintTrafficValue(new SQLHintProperties(props))));
}
}
diff --git a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/test/java/org/apache/shardingsphere/traffic/rule/TrafficRuleTest.java b/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/test/java/org/apache/shardingsphere/traffic/rule/TrafficRuleTest.java
index 31ebd7ed98b..6052aac1d2c 100644
--- a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/test/java/org/apache/shardingsphere/traffic/rule/TrafficRuleTest.java
+++ b/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/test/java/org/apache/shardingsphere/traffic/rule/TrafficRuleTest.java
@@ -84,7 +84,7 @@ public final class TrafficRuleTest {
private QueryContext createQueryContext(final boolean includeComments) {
QueryContext result = mock(QueryContext.class);
MySQLSelectStatement sqlStatement = mock(MySQLSelectStatement.class);
- when(sqlStatement.getCommentSegments()).thenReturn(includeComments ? Collections.singleton(new CommentSegment("/* ShardingSphere hint: useTraffic=true */", 0, 0)) : Collections.emptyList());
+ when(sqlStatement.getCommentSegments()).thenReturn(includeComments ? Collections.singleton(new CommentSegment("/* SHARDINGSPHERE_HINT: USE_TRAFFIC=true */", 0, 0)) : Collections.emptyList());
when(sqlStatement.getProjections()).thenReturn(new ProjectionsSegment(0, 0));
SQLStatementContext statementContext = new SelectStatementContext(
Collections.singletonMap("sharding_db", mock(ShardingSphereDatabase.class)), Collections.emptyList(), sqlStatement, "sharding_db");
diff --git a/shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/update/update.xml b/shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/update/update.xml
index fe99df8c154..150015a7937 100644
--- a/shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/update/update.xml
+++ b/shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/update/update.xml
@@ -50,13 +50,13 @@
</rewrite-assertion>
<rewrite-assertion id="update_blank_to_clear_plain_with_skip_encrypt_rewrite_true" db-types="MySQL">
- <input sql="/*shardingsphere hint: skipEncryptRewrite=true*/UPDATE t_account_bak SET certificate_number = '', status = 'OK'" />
- <output sql="/*shardingsphere hint: skipEncryptRewrite=true*/UPDATE t_account_bak SET certificate_number = '', status = 'OK'" />
+ <input sql="/*SHARDINGSPHERE_HINT: SKIP_ENCRYPT_REWRITE=true*/UPDATE t_account_bak SET certificate_number = '', status = 'OK'" />
+ <output sql="/*SHARDINGSPHERE_HINT: SKIP_ENCRYPT_REWRITE=true*/UPDATE t_account_bak SET certificate_number = '', status = 'OK'" />
</rewrite-assertion>
<rewrite-assertion id="update_blank_to_clear_plain_with_skip_encrypt_rewrite_false" db-types="MySQL">
- <input sql="/*shardingsphere hint: skipEncryptRewrite=false*/UPDATE t_account_bak SET certificate_number = '', status = 'OK'" />
- <output sql="/*shardingsphere hint: skipEncryptRewrite=false*/UPDATE t_account_bak SET cipher_certificate_number = 'encrypt_', assisted_query_certificate_number = 'assisted_query_', plain_certificate_number = '', status = 'OK'" />
+ <input sql="/*SHARDINGSPHERE_HINT: SKIP_ENCRYPT_REWRITE=false*/UPDATE t_account_bak SET certificate_number = '', status = 'OK'" />
+ <output sql="/*SHARDINGSPHERE_HINT: SKIP_ENCRYPT_REWRITE=false*/UPDATE t_account_bak SET cipher_certificate_number = 'encrypt_', assisted_query_certificate_number = 'assisted_query_', plain_certificate_number = '', status = 'OK'" />
</rewrite-assertion>
<rewrite-assertion id="update_blank_to_clear_plain_with_normal_skip_encrypt_rewrite_hint" db-types="MySQL">