This is an automated email from the ASF dual-hosted git repository.
tuichenchuxin 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 806c6fb1b3a Refactor SQLHintUtils logic for method reuse (#29134)
806c6fb1b3a is described below
commit 806c6fb1b3afbb9ba7b3d2c0e58af654276d3e42
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Thu Nov 23 15:55:20 2023 +0800
Refactor SQLHintUtils logic for method reuse (#29134)
---
.../shardingsphere/infra/hint/SQLHintUtils.java | 25 ++++++++++++++--------
1 file changed, 16 insertions(+), 9 deletions(-)
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/hint/SQLHintUtils.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/hint/SQLHintUtils.java
index 452e967ef99..c3ca0598253 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/hint/SQLHintUtils.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/hint/SQLHintUtils.java
@@ -55,14 +55,10 @@ public final class SQLHintUtils {
*/
public static Properties getSQLHintProps(final String comment) {
Properties result = new Properties();
- String lowerCaseComment = comment.toLowerCase();
- int startIndex =
lowerCaseComment.startsWith(SQLHintTokenEnum.SQL_START_HINT_TOKEN.getAlias().toLowerCase())
- ?
lowerCaseComment.indexOf(SQLHintTokenEnum.SQL_HINT_TOKEN.getAlias())
- :
lowerCaseComment.indexOf(SQLHintTokenEnum.SQL_HINT_TOKEN.getKey());
+ int startIndex = getStartIndex(comment,
SQLHintTokenEnum.SQL_START_HINT_TOKEN, SQLHintTokenEnum.SQL_HINT_TOKEN);
if (startIndex < 0) {
return result;
}
- startIndex = startIndex +
SQLHintTokenEnum.SQL_HINT_TOKEN.getKey().length();
int endIndex = comment.endsWith(SQL_COMMENT_SUFFIX) ?
comment.indexOf(SQL_COMMENT_SUFFIX) : comment.length();
Collection<String> sqlHints =
Splitter.on(SQL_HINT_SPLIT).trimResults().splitToList(comment.substring(startIndex,
endIndex).trim());
for (String each : sqlHints) {
@@ -74,6 +70,17 @@ public final class SQLHintUtils {
return result;
}
+ private static int getStartIndex(final String comment, final
SQLHintTokenEnum sqlStartHintToken, final SQLHintTokenEnum sqlHintToken) {
+ String lowerCaseComment = comment.toLowerCase();
+ int result =
lowerCaseComment.startsWith(sqlStartHintToken.getAlias().toLowerCase())
+ ? lowerCaseComment.indexOf(sqlHintToken.getAlias())
+ : lowerCaseComment.indexOf(sqlHintToken.getKey());
+ if (result >= 0) {
+ return result + sqlHintToken.getKey().length();
+ }
+ return result;
+ }
+
private static Object convert(final String value) {
try {
return new BigInteger(value);
@@ -99,7 +106,7 @@ public final class SQLHintUtils {
* @return Hint value context
*/
public static Optional<HintValueContext> extractHint(final String sql) {
- if (!startWithHint(sql)) {
+ if (!startWithHint(sql, SQLHintTokenEnum.SQL_START_HINT_TOKEN)) {
return Optional.empty();
}
HintValueContext result = new HintValueContext();
@@ -135,8 +142,8 @@ public final class SQLHintUtils {
return Optional.of(result);
}
- private static boolean startWithHint(final String sql) {
- return null != sql &&
(sql.startsWith(SQLHintTokenEnum.SQL_START_HINT_TOKEN.getKey()) ||
sql.startsWith(SQLHintTokenEnum.SQL_START_HINT_TOKEN.getAlias()));
+ private static boolean startWithHint(final String sql, final
SQLHintTokenEnum sqlStartHintToken) {
+ return null != sql && (sql.startsWith(sqlStartHintToken.getKey()) ||
sql.startsWith(sqlStartHintToken.getAlias()));
}
private static boolean containsPropertyKey(final Properties hintProps,
final SQLHintPropertiesKey sqlHintPropsKey) {
@@ -159,6 +166,6 @@ public final class SQLHintUtils {
* @return SQL after remove hint
*/
public static String removeHint(final String sql) {
- return startWithHint(sql) ?
sql.substring(sql.indexOf(SQL_COMMENT_SUFFIX) + 2) : sql;
+ return startWithHint(sql, SQLHintTokenEnum.SQL_START_HINT_TOKEN) ?
sql.substring(sql.indexOf(SQL_COMMENT_SUFFIX) + 2) : sql;
}
}