Loading sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/mysql/MySQLParser.java +7 −7 Original line number Diff line number Diff line Loading @@ -27,8 +27,8 @@ import com.dangdang.ddframe.rdb.sharding.parsing.parser.context.limit.Limit; import com.dangdang.ddframe.rdb.sharding.parsing.parser.context.limit.LimitValue; import com.dangdang.ddframe.rdb.sharding.parsing.parser.exception.SQLParsingException; import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.SQLStatement; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.OffsetLimitToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.RowCountLimitToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.OffsetToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.RowCountToken; /** * MySQL解析器. Loading Loading @@ -74,7 +74,7 @@ public final class MySQLParser extends SQLParser { return getLimitWithOffset(sqlStatement, parametersIndex, valueIndex, valueBeginPosition, value, isParameterForValue); } if (!isParameterForValue) { sqlStatement.getSqlTokens().add(new RowCountLimitToken(valueBeginPosition, value)); sqlStatement.getSqlTokens().add(new RowCountToken(valueBeginPosition, value)); } Limit result = new Limit(true); result.setRowCount(new LimitValue(value, valueIndex)); Loading @@ -100,10 +100,10 @@ public final class MySQLParser extends SQLParser { } getLexer().nextToken(); if (!isParameterForValue) { sqlStatement.getSqlTokens().add(new OffsetLimitToken(valueBeginPosition, value)); sqlStatement.getSqlTokens().add(new OffsetToken(valueBeginPosition, value)); } if (!isParameterForRowCount) { sqlStatement.getSqlTokens().add(new RowCountLimitToken(rowCountBeginPosition, rowCount)); sqlStatement.getSqlTokens().add(new RowCountToken(rowCountBeginPosition, rowCount)); } Limit result = new Limit(true); result.setRowCount(new LimitValue(rowCount, rowCountIndex)); Loading @@ -130,10 +130,10 @@ public final class MySQLParser extends SQLParser { } getLexer().nextToken(); if (!isParameterForOffset) { sqlStatement.getSqlTokens().add(new OffsetLimitToken(offsetBeginPosition, offset)); sqlStatement.getSqlTokens().add(new OffsetToken(offsetBeginPosition, offset)); } if (!isParameterForValue) { sqlStatement.getSqlTokens().add(new RowCountLimitToken(valueBeginPosition, value)); sqlStatement.getSqlTokens().add(new RowCountToken(valueBeginPosition, value)); } Limit result = new Limit(true); result.setRowCount(new LimitValue(value, valueIndex)); Loading sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/postgresql/PostgreSQLSelectParser.java +15 −15 Original line number Diff line number Diff line Loading @@ -27,8 +27,8 @@ import com.dangdang.ddframe.rdb.sharding.parsing.parser.context.limit.LimitValue import com.dangdang.ddframe.rdb.sharding.parsing.parser.exception.SQLParsingException; import com.dangdang.ddframe.rdb.sharding.parsing.parser.exception.SQLParsingUnsupportedException; import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.select.AbstractSelectParser; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.OffsetLimitToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.RowCountLimitToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.OffsetToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.RowCountToken; import com.google.common.base.Optional; import static com.dangdang.ddframe.rdb.sharding.util.NumberUtil.roundHalfUp; Loading Loading @@ -71,18 +71,18 @@ public class PostgreSQLSelectParser extends AbstractSelectParser { } private void parseLimit() { Optional<LimitValue> offsetLimit = Optional.absent(); Optional<LimitValue> rowCountLimit = Optional.absent(); Optional<LimitValue> offset = Optional.absent(); Optional<LimitValue> rowCount = Optional.absent(); while (true) { if (getSqlParser().skipIfEqual(PostgreSQLKeyword.LIMIT)) { rowCountLimit = buildRowCount(); rowCount = buildRowCount(); } else if (getSqlParser().skipIfEqual(PostgreSQLKeyword.OFFSET)) { offsetLimit = buildOffsetLimit(); offset = buildOffset(); } else { break; } } setLimit(offsetLimit, rowCountLimit); setLimit(offset, rowCount); } private Optional<LimitValue> buildRowCount() { Loading @@ -96,7 +96,7 @@ public class PostgreSQLSelectParser extends AbstractSelectParser { if (getSqlParser().equalAny(Literals.INT, Literals.FLOAT)) { rowCount = roundHalfUp(getSqlParser().getLexer().getCurrentToken().getLiterals()); valueBeginPosition = valueBeginPosition - (rowCount + "").length(); getSelectStatement().getSqlTokens().add(new RowCountLimitToken(valueBeginPosition, rowCount)); getSelectStatement().getSqlTokens().add(new RowCountToken(valueBeginPosition, rowCount)); } else if (getSqlParser().equalAny(Symbol.QUESTION)) { rowCountParameterIndex = parameterIndex++; setParametersIndex(parameterIndex); Loading @@ -109,7 +109,7 @@ public class PostgreSQLSelectParser extends AbstractSelectParser { return Optional.of(new LimitValue(rowCount, rowCountParameterIndex)); } private Optional<LimitValue> buildOffsetLimit() { private Optional<LimitValue> buildOffset() { int parameterIndex = getParametersIndex(); int offset = -1; int offsetParameterIndex = -1; Loading @@ -117,7 +117,7 @@ public class PostgreSQLSelectParser extends AbstractSelectParser { if (getSqlParser().equalAny(Literals.INT, Literals.FLOAT)) { offset = roundHalfUp(getSqlParser().getLexer().getCurrentToken().getLiterals()); offsetBeginPosition = offsetBeginPosition - (offset + "").length(); getSelectStatement().getSqlTokens().add(new OffsetLimitToken(offsetBeginPosition, offset)); getSelectStatement().getSqlTokens().add(new OffsetToken(offsetBeginPosition, offset)); } else if (getSqlParser().equalAny(Symbol.QUESTION)) { offsetParameterIndex = parameterIndex++; setParametersIndex(parameterIndex); Loading @@ -130,13 +130,13 @@ public class PostgreSQLSelectParser extends AbstractSelectParser { } private void setLimit(final Optional<LimitValue> offsetLimit, final Optional<LimitValue> rowCountLimit) { private void setLimit(final Optional<LimitValue> offset, final Optional<LimitValue> rowCount) { Limit limit = new Limit(true); if (offsetLimit.isPresent()) { limit.setOffset(offsetLimit.get()); if (offset.isPresent()) { limit.setOffset(offset.get()); } if (rowCountLimit.isPresent()) { limit.setRowCount(rowCountLimit.get()); if (rowCount.isPresent()) { limit.setRowCount(rowCount.get()); } getSelectStatement().setLimit(limit); } Loading sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/token/OffsetLimitToken.java→sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/token/OffsetToken.java +1 −1 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ import lombok.RequiredArgsConstructor; */ @RequiredArgsConstructor @Getter public final class OffsetLimitToken implements SQLToken { public final class OffsetToken implements SQLToken { private final int beginPosition; Loading sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/token/RowCountLimitToken.java→sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/token/RowCountToken.java +1 −1 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ import lombok.RequiredArgsConstructor; */ @RequiredArgsConstructor @Getter public final class RowCountLimitToken implements SQLToken { public final class RowCountToken implements SQLToken { private final int beginPosition; Loading sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/rewrite/SQLRewriteEngine.java +12 −12 Original line number Diff line number Diff line Loading @@ -23,8 +23,8 @@ import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule; import com.dangdang.ddframe.rdb.sharding.parsing.parser.context.limit.Limit; import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.SQLStatement; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.ItemsToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.OffsetLimitToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.RowCountLimitToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.OffsetToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.RowCountToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.SQLToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.TableToken; import com.dangdang.ddframe.rdb.sharding.routing.type.TableUnit; Loading Loading @@ -86,10 +86,10 @@ public final class SQLRewriteEngine { appendTableToken(result, (TableToken) each, count, sqlTokens); } else if (each instanceof ItemsToken) { appendItemsToken(result, (ItemsToken) each, count, sqlTokens); } else if (each instanceof RowCountLimitToken) { appendLimitRowCount(result, (RowCountLimitToken) each, count, sqlTokens, isRewriteLimit); } else if (each instanceof OffsetLimitToken) { appendLimitOffsetToken(result, (OffsetLimitToken) each, count, sqlTokens, isRewriteLimit); } else if (each instanceof RowCountToken) { appendLimitRowCount(result, (RowCountToken) each, count, sqlTokens, isRewriteLimit); } else if (each instanceof OffsetToken) { appendLimitOffsetToken(result, (OffsetToken) each, count, sqlTokens, isRewriteLimit); } count++; } Loading Loading @@ -124,16 +124,16 @@ public final class SQLRewriteEngine { sqlBuilder.appendLiterals(originalSQL.substring(beginPosition, endPosition)); } private void appendLimitRowCount(final SQLBuilder sqlBuilder, final RowCountLimitToken rowCountLimitToken, final int count, final List<SQLToken> sqlTokens, final boolean isRewrite) { sqlBuilder.appendLiterals(isRewrite ? String.valueOf(rowCountLimitToken.getRowCount() + limit.getOffsetValue()) : String.valueOf(rowCountLimitToken.getRowCount())); int beginPosition = rowCountLimitToken.getBeginPosition() + String.valueOf(rowCountLimitToken.getRowCount()).length(); private void appendLimitRowCount(final SQLBuilder sqlBuilder, final RowCountToken rowCountToken, final int count, final List<SQLToken> sqlTokens, final boolean isRewrite) { sqlBuilder.appendLiterals(isRewrite ? String.valueOf(rowCountToken.getRowCount() + limit.getOffsetValue()) : String.valueOf(rowCountToken.getRowCount())); int beginPosition = rowCountToken.getBeginPosition() + String.valueOf(rowCountToken.getRowCount()).length(); int endPosition = sqlTokens.size() - 1 == count ? originalSQL.length() : sqlTokens.get(count + 1).getBeginPosition(); sqlBuilder.appendLiterals(originalSQL.substring(beginPosition, endPosition)); } private void appendLimitOffsetToken(final SQLBuilder sqlBuilder, final OffsetLimitToken offsetLimitToken, final int count, final List<SQLToken> sqlTokens, final boolean isRewrite) { sqlBuilder.appendLiterals(isRewrite ? "0" : String.valueOf(offsetLimitToken.getOffset())); int beginPosition = offsetLimitToken.getBeginPosition() + String.valueOf(offsetLimitToken.getOffset()).length(); private void appendLimitOffsetToken(final SQLBuilder sqlBuilder, final OffsetToken offsetToken, final int count, final List<SQLToken> sqlTokens, final boolean isRewrite) { sqlBuilder.appendLiterals(isRewrite ? "0" : String.valueOf(offsetToken.getOffset())); int beginPosition = offsetToken.getBeginPosition() + String.valueOf(offsetToken.getOffset()).length(); int endPosition = sqlTokens.size() - 1 == count ? originalSQL.length() : sqlTokens.get(count + 1).getBeginPosition(); sqlBuilder.appendLiterals(originalSQL.substring(beginPosition, endPosition)); } Loading Loading
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/mysql/MySQLParser.java +7 −7 Original line number Diff line number Diff line Loading @@ -27,8 +27,8 @@ import com.dangdang.ddframe.rdb.sharding.parsing.parser.context.limit.Limit; import com.dangdang.ddframe.rdb.sharding.parsing.parser.context.limit.LimitValue; import com.dangdang.ddframe.rdb.sharding.parsing.parser.exception.SQLParsingException; import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.SQLStatement; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.OffsetLimitToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.RowCountLimitToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.OffsetToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.RowCountToken; /** * MySQL解析器. Loading Loading @@ -74,7 +74,7 @@ public final class MySQLParser extends SQLParser { return getLimitWithOffset(sqlStatement, parametersIndex, valueIndex, valueBeginPosition, value, isParameterForValue); } if (!isParameterForValue) { sqlStatement.getSqlTokens().add(new RowCountLimitToken(valueBeginPosition, value)); sqlStatement.getSqlTokens().add(new RowCountToken(valueBeginPosition, value)); } Limit result = new Limit(true); result.setRowCount(new LimitValue(value, valueIndex)); Loading @@ -100,10 +100,10 @@ public final class MySQLParser extends SQLParser { } getLexer().nextToken(); if (!isParameterForValue) { sqlStatement.getSqlTokens().add(new OffsetLimitToken(valueBeginPosition, value)); sqlStatement.getSqlTokens().add(new OffsetToken(valueBeginPosition, value)); } if (!isParameterForRowCount) { sqlStatement.getSqlTokens().add(new RowCountLimitToken(rowCountBeginPosition, rowCount)); sqlStatement.getSqlTokens().add(new RowCountToken(rowCountBeginPosition, rowCount)); } Limit result = new Limit(true); result.setRowCount(new LimitValue(rowCount, rowCountIndex)); Loading @@ -130,10 +130,10 @@ public final class MySQLParser extends SQLParser { } getLexer().nextToken(); if (!isParameterForOffset) { sqlStatement.getSqlTokens().add(new OffsetLimitToken(offsetBeginPosition, offset)); sqlStatement.getSqlTokens().add(new OffsetToken(offsetBeginPosition, offset)); } if (!isParameterForValue) { sqlStatement.getSqlTokens().add(new RowCountLimitToken(valueBeginPosition, value)); sqlStatement.getSqlTokens().add(new RowCountToken(valueBeginPosition, value)); } Limit result = new Limit(true); result.setRowCount(new LimitValue(value, valueIndex)); Loading
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/postgresql/PostgreSQLSelectParser.java +15 −15 Original line number Diff line number Diff line Loading @@ -27,8 +27,8 @@ import com.dangdang.ddframe.rdb.sharding.parsing.parser.context.limit.LimitValue import com.dangdang.ddframe.rdb.sharding.parsing.parser.exception.SQLParsingException; import com.dangdang.ddframe.rdb.sharding.parsing.parser.exception.SQLParsingUnsupportedException; import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.select.AbstractSelectParser; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.OffsetLimitToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.RowCountLimitToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.OffsetToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.RowCountToken; import com.google.common.base.Optional; import static com.dangdang.ddframe.rdb.sharding.util.NumberUtil.roundHalfUp; Loading Loading @@ -71,18 +71,18 @@ public class PostgreSQLSelectParser extends AbstractSelectParser { } private void parseLimit() { Optional<LimitValue> offsetLimit = Optional.absent(); Optional<LimitValue> rowCountLimit = Optional.absent(); Optional<LimitValue> offset = Optional.absent(); Optional<LimitValue> rowCount = Optional.absent(); while (true) { if (getSqlParser().skipIfEqual(PostgreSQLKeyword.LIMIT)) { rowCountLimit = buildRowCount(); rowCount = buildRowCount(); } else if (getSqlParser().skipIfEqual(PostgreSQLKeyword.OFFSET)) { offsetLimit = buildOffsetLimit(); offset = buildOffset(); } else { break; } } setLimit(offsetLimit, rowCountLimit); setLimit(offset, rowCount); } private Optional<LimitValue> buildRowCount() { Loading @@ -96,7 +96,7 @@ public class PostgreSQLSelectParser extends AbstractSelectParser { if (getSqlParser().equalAny(Literals.INT, Literals.FLOAT)) { rowCount = roundHalfUp(getSqlParser().getLexer().getCurrentToken().getLiterals()); valueBeginPosition = valueBeginPosition - (rowCount + "").length(); getSelectStatement().getSqlTokens().add(new RowCountLimitToken(valueBeginPosition, rowCount)); getSelectStatement().getSqlTokens().add(new RowCountToken(valueBeginPosition, rowCount)); } else if (getSqlParser().equalAny(Symbol.QUESTION)) { rowCountParameterIndex = parameterIndex++; setParametersIndex(parameterIndex); Loading @@ -109,7 +109,7 @@ public class PostgreSQLSelectParser extends AbstractSelectParser { return Optional.of(new LimitValue(rowCount, rowCountParameterIndex)); } private Optional<LimitValue> buildOffsetLimit() { private Optional<LimitValue> buildOffset() { int parameterIndex = getParametersIndex(); int offset = -1; int offsetParameterIndex = -1; Loading @@ -117,7 +117,7 @@ public class PostgreSQLSelectParser extends AbstractSelectParser { if (getSqlParser().equalAny(Literals.INT, Literals.FLOAT)) { offset = roundHalfUp(getSqlParser().getLexer().getCurrentToken().getLiterals()); offsetBeginPosition = offsetBeginPosition - (offset + "").length(); getSelectStatement().getSqlTokens().add(new OffsetLimitToken(offsetBeginPosition, offset)); getSelectStatement().getSqlTokens().add(new OffsetToken(offsetBeginPosition, offset)); } else if (getSqlParser().equalAny(Symbol.QUESTION)) { offsetParameterIndex = parameterIndex++; setParametersIndex(parameterIndex); Loading @@ -130,13 +130,13 @@ public class PostgreSQLSelectParser extends AbstractSelectParser { } private void setLimit(final Optional<LimitValue> offsetLimit, final Optional<LimitValue> rowCountLimit) { private void setLimit(final Optional<LimitValue> offset, final Optional<LimitValue> rowCount) { Limit limit = new Limit(true); if (offsetLimit.isPresent()) { limit.setOffset(offsetLimit.get()); if (offset.isPresent()) { limit.setOffset(offset.get()); } if (rowCountLimit.isPresent()) { limit.setRowCount(rowCountLimit.get()); if (rowCount.isPresent()) { limit.setRowCount(rowCount.get()); } getSelectStatement().setLimit(limit); } Loading
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/token/OffsetLimitToken.java→sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/token/OffsetToken.java +1 −1 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ import lombok.RequiredArgsConstructor; */ @RequiredArgsConstructor @Getter public final class OffsetLimitToken implements SQLToken { public final class OffsetToken implements SQLToken { private final int beginPosition; Loading
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/token/RowCountLimitToken.java→sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/token/RowCountToken.java +1 −1 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ import lombok.RequiredArgsConstructor; */ @RequiredArgsConstructor @Getter public final class RowCountLimitToken implements SQLToken { public final class RowCountToken implements SQLToken { private final int beginPosition; Loading
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/rewrite/SQLRewriteEngine.java +12 −12 Original line number Diff line number Diff line Loading @@ -23,8 +23,8 @@ import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule; import com.dangdang.ddframe.rdb.sharding.parsing.parser.context.limit.Limit; import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.SQLStatement; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.ItemsToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.OffsetLimitToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.RowCountLimitToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.OffsetToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.RowCountToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.SQLToken; import com.dangdang.ddframe.rdb.sharding.parsing.parser.token.TableToken; import com.dangdang.ddframe.rdb.sharding.routing.type.TableUnit; Loading Loading @@ -86,10 +86,10 @@ public final class SQLRewriteEngine { appendTableToken(result, (TableToken) each, count, sqlTokens); } else if (each instanceof ItemsToken) { appendItemsToken(result, (ItemsToken) each, count, sqlTokens); } else if (each instanceof RowCountLimitToken) { appendLimitRowCount(result, (RowCountLimitToken) each, count, sqlTokens, isRewriteLimit); } else if (each instanceof OffsetLimitToken) { appendLimitOffsetToken(result, (OffsetLimitToken) each, count, sqlTokens, isRewriteLimit); } else if (each instanceof RowCountToken) { appendLimitRowCount(result, (RowCountToken) each, count, sqlTokens, isRewriteLimit); } else if (each instanceof OffsetToken) { appendLimitOffsetToken(result, (OffsetToken) each, count, sqlTokens, isRewriteLimit); } count++; } Loading Loading @@ -124,16 +124,16 @@ public final class SQLRewriteEngine { sqlBuilder.appendLiterals(originalSQL.substring(beginPosition, endPosition)); } private void appendLimitRowCount(final SQLBuilder sqlBuilder, final RowCountLimitToken rowCountLimitToken, final int count, final List<SQLToken> sqlTokens, final boolean isRewrite) { sqlBuilder.appendLiterals(isRewrite ? String.valueOf(rowCountLimitToken.getRowCount() + limit.getOffsetValue()) : String.valueOf(rowCountLimitToken.getRowCount())); int beginPosition = rowCountLimitToken.getBeginPosition() + String.valueOf(rowCountLimitToken.getRowCount()).length(); private void appendLimitRowCount(final SQLBuilder sqlBuilder, final RowCountToken rowCountToken, final int count, final List<SQLToken> sqlTokens, final boolean isRewrite) { sqlBuilder.appendLiterals(isRewrite ? String.valueOf(rowCountToken.getRowCount() + limit.getOffsetValue()) : String.valueOf(rowCountToken.getRowCount())); int beginPosition = rowCountToken.getBeginPosition() + String.valueOf(rowCountToken.getRowCount()).length(); int endPosition = sqlTokens.size() - 1 == count ? originalSQL.length() : sqlTokens.get(count + 1).getBeginPosition(); sqlBuilder.appendLiterals(originalSQL.substring(beginPosition, endPosition)); } private void appendLimitOffsetToken(final SQLBuilder sqlBuilder, final OffsetLimitToken offsetLimitToken, final int count, final List<SQLToken> sqlTokens, final boolean isRewrite) { sqlBuilder.appendLiterals(isRewrite ? "0" : String.valueOf(offsetLimitToken.getOffset())); int beginPosition = offsetLimitToken.getBeginPosition() + String.valueOf(offsetLimitToken.getOffset()).length(); private void appendLimitOffsetToken(final SQLBuilder sqlBuilder, final OffsetToken offsetToken, final int count, final List<SQLToken> sqlTokens, final boolean isRewrite) { sqlBuilder.appendLiterals(isRewrite ? "0" : String.valueOf(offsetToken.getOffset())); int beginPosition = offsetToken.getBeginPosition() + String.valueOf(offsetToken.getOffset()).length(); int endPosition = sqlTokens.size() - 1 == count ? originalSQL.length() : sqlTokens.get(count + 1).getBeginPosition(); sqlBuilder.appendLiterals(originalSQL.substring(beginPosition, endPosition)); } Loading