Loading sharding-jdbc-core/src/main/java/io/shardingjdbc/core/merger/limit/LimitDecoratorResultSetMerger.java +1 −1 Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ public final class LimitDecoratorResultSetMerger extends AbstractDecoratorResult return true; } } rowNumber = limit.isRowCountRewriteFlag() ? 0 : limit.getOffsetValue(); rowNumber = 0; return false; } Loading sharding-jdbc-core/src/main/java/io/shardingjdbc/core/merger/limit/RowNumberDecoratorResultSetMerger.java +1 −1 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ public final class RowNumberDecoratorResultSetMerger extends AbstractDecoratorRe return true; } } rowNumber = limit.isRowCountRewriteFlag() ? 0 : end + 1; rowNumber = end + 1; return false; } Loading sharding-jdbc-core/src/main/java/io/shardingjdbc/core/merger/limit/TopAndRowNumberDecoratorResultSetMerger.java +1 −1 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ public final class TopAndRowNumberDecoratorResultSetMerger extends AbstractDecor return true; } } rowNumber = limit.isRowCountRewriteFlag() ? 0 : end + 1; rowNumber = end + 1; return false; } Loading sharding-jdbc-core/src/main/java/io/shardingjdbc/core/parsing/parser/clause/WhereClauseParser.java +2 −2 Original line number Diff line number Diff line Loading @@ -178,7 +178,7 @@ public class WhereClauseParser implements SQLClauseParser { private void parseRowCountCondition(final SelectStatement selectStatement, final boolean includeRowCount) { SQLExpression sqlExpression = expressionClauseParser.parse(selectStatement); if (null == selectStatement.getLimit()) { selectStatement.setLimit(new Limit(databaseType, false)); selectStatement.setLimit(new Limit(databaseType)); } if (sqlExpression instanceof SQLNumberExpression) { int rowCount = ((SQLNumberExpression) sqlExpression).getNumber().intValue(); Loading @@ -194,7 +194,7 @@ public class WhereClauseParser implements SQLClauseParser { private void parseOffsetCondition(final SelectStatement selectStatement, final boolean includeOffset) { SQLExpression sqlExpression = expressionClauseParser.parse(selectStatement); if (null == selectStatement.getLimit()) { selectStatement.setLimit(new Limit(databaseType, false)); selectStatement.setLimit(new Limit(databaseType)); } if (sqlExpression instanceof SQLNumberExpression) { int offset = ((SQLNumberExpression) sqlExpression).getNumber().intValue(); Loading sharding-jdbc-core/src/main/java/io/shardingjdbc/core/parsing/parser/context/limit/Limit.java +10 −3 Original line number Diff line number Diff line Loading @@ -41,8 +41,6 @@ public final class Limit { private final DatabaseType databaseType; private final boolean rowCountRewriteFlag; private LimitValue offset; private LimitValue rowCount; Loading Loading @@ -101,7 +99,7 @@ public final class Limit { int rewriteRowCount; if (isFetchAll) { rewriteRowCount = Integer.MAX_VALUE; } else if (rowCountRewriteFlag) { } else if (isNeedRewriteRowCount()) { rewriteRowCount = null == rowCount ? -1 : getOffsetValue() + rowCount.getValue(); } else { rewriteRowCount = rowCount.getValue(); Loading @@ -113,4 +111,13 @@ public final class Limit { parameters.set(rowCount.getIndex(), rewriteRowCount); } } /** * Is need rewrite row count. * * @return is need rewrite row count or not */ public boolean isNeedRewriteRowCount() { return DatabaseType.MySQL == databaseType || DatabaseType.PostgreSQL == databaseType || DatabaseType.H2 == databaseType; } } Loading
sharding-jdbc-core/src/main/java/io/shardingjdbc/core/merger/limit/LimitDecoratorResultSetMerger.java +1 −1 Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ public final class LimitDecoratorResultSetMerger extends AbstractDecoratorResult return true; } } rowNumber = limit.isRowCountRewriteFlag() ? 0 : limit.getOffsetValue(); rowNumber = 0; return false; } Loading
sharding-jdbc-core/src/main/java/io/shardingjdbc/core/merger/limit/RowNumberDecoratorResultSetMerger.java +1 −1 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ public final class RowNumberDecoratorResultSetMerger extends AbstractDecoratorRe return true; } } rowNumber = limit.isRowCountRewriteFlag() ? 0 : end + 1; rowNumber = end + 1; return false; } Loading
sharding-jdbc-core/src/main/java/io/shardingjdbc/core/merger/limit/TopAndRowNumberDecoratorResultSetMerger.java +1 −1 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ public final class TopAndRowNumberDecoratorResultSetMerger extends AbstractDecor return true; } } rowNumber = limit.isRowCountRewriteFlag() ? 0 : end + 1; rowNumber = end + 1; return false; } Loading
sharding-jdbc-core/src/main/java/io/shardingjdbc/core/parsing/parser/clause/WhereClauseParser.java +2 −2 Original line number Diff line number Diff line Loading @@ -178,7 +178,7 @@ public class WhereClauseParser implements SQLClauseParser { private void parseRowCountCondition(final SelectStatement selectStatement, final boolean includeRowCount) { SQLExpression sqlExpression = expressionClauseParser.parse(selectStatement); if (null == selectStatement.getLimit()) { selectStatement.setLimit(new Limit(databaseType, false)); selectStatement.setLimit(new Limit(databaseType)); } if (sqlExpression instanceof SQLNumberExpression) { int rowCount = ((SQLNumberExpression) sqlExpression).getNumber().intValue(); Loading @@ -194,7 +194,7 @@ public class WhereClauseParser implements SQLClauseParser { private void parseOffsetCondition(final SelectStatement selectStatement, final boolean includeOffset) { SQLExpression sqlExpression = expressionClauseParser.parse(selectStatement); if (null == selectStatement.getLimit()) { selectStatement.setLimit(new Limit(databaseType, false)); selectStatement.setLimit(new Limit(databaseType)); } if (sqlExpression instanceof SQLNumberExpression) { int offset = ((SQLNumberExpression) sqlExpression).getNumber().intValue(); Loading
sharding-jdbc-core/src/main/java/io/shardingjdbc/core/parsing/parser/context/limit/Limit.java +10 −3 Original line number Diff line number Diff line Loading @@ -41,8 +41,6 @@ public final class Limit { private final DatabaseType databaseType; private final boolean rowCountRewriteFlag; private LimitValue offset; private LimitValue rowCount; Loading Loading @@ -101,7 +99,7 @@ public final class Limit { int rewriteRowCount; if (isFetchAll) { rewriteRowCount = Integer.MAX_VALUE; } else if (rowCountRewriteFlag) { } else if (isNeedRewriteRowCount()) { rewriteRowCount = null == rowCount ? -1 : getOffsetValue() + rowCount.getValue(); } else { rewriteRowCount = rowCount.getValue(); Loading @@ -113,4 +111,13 @@ public final class Limit { parameters.set(rowCount.getIndex(), rewriteRowCount); } } /** * Is need rewrite row count. * * @return is need rewrite row count or not */ public boolean isNeedRewriteRowCount() { return DatabaseType.MySQL == databaseType || DatabaseType.PostgreSQL == databaseType || DatabaseType.H2 == databaseType; } }