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 d2c663d6bef Refactor getStopIndex and getNextSQLToken in 
AbstractSQLBuilder (#37131)
d2c663d6bef is described below

commit d2c663d6befee2aecc6b85fd5e35468f7483b9f9
Author: Cong Hu <[email protected]>
AuthorDate: Tue Nov 18 16:02:04 2025 +0800

    Refactor getStopIndex and getNextSQLToken in AbstractSQLBuilder (#37131)
---
 .../infra/rewrite/sql/impl/AbstractSQLBuilder.java        | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git 
a/infra/rewrite/core/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/impl/AbstractSQLBuilder.java
 
b/infra/rewrite/core/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/impl/AbstractSQLBuilder.java
index 0dbbb24741a..cd4cbd7c440 100644
--- 
a/infra/rewrite/core/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/impl/AbstractSQLBuilder.java
+++ 
b/infra/rewrite/core/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/impl/AbstractSQLBuilder.java
@@ -78,8 +78,19 @@ public abstract class AbstractSQLBuilder implements 
SQLBuilder {
     }
     
     private int getStopIndex(final SQLToken sqlToken, final List<SQLToken> 
sqlTokens, final int sqlLength, final int startIndex) {
+        Optional<SQLToken> nextSQLToken = getNextSQLToken(sqlToken, sqlTokens);
+        if (!nextSQLToken.isPresent()) {
+            return sqlLength;
+        }
+        int stopIndex = nextSQLToken.get().getStartIndex();
+        return startIndex <= stopIndex ? stopIndex : 
getStopIndex(nextSQLToken.get(), sqlTokens, sqlLength, startIndex);
+    }
+    
+    private Optional<SQLToken> getNextSQLToken(final SQLToken sqlToken, final 
List<SQLToken> sqlTokens) {
         int currentSQLTokenIndex = sqlTokens.indexOf(sqlToken);
-        int stopIndex = sqlTokens.size() - 1 == currentSQLTokenIndex ? 
sqlLength : sqlTokens.get(currentSQLTokenIndex + 1).getStartIndex();
-        return startIndex <= stopIndex ? stopIndex : 
getStopIndex(sqlTokens.get(currentSQLTokenIndex + 1), sqlTokens, sqlLength, 
startIndex);
+        if (sqlTokens.size() - 1 == currentSQLTokenIndex) {
+            return Optional.empty();
+        }
+        return Optional.ofNullable(sqlTokens.get(currentSQLTokenIndex + 1));
     }
 }

Reply via email to