Commit 40c6107f authored by terrymanu's avatar terrymanu
Browse files

refactor limit to remove rowCountRewriteFlag

parent 17df0f02
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ public final class LimitDecoratorResultSetMerger extends AbstractDecoratorResult
                return true;
            }
        }
        rowNumber = limit.isRowCountRewriteFlag() ? 0 : limit.getOffsetValue();
        rowNumber = 0;
        return false;
    }
    
+1 −1
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ public final class RowNumberDecoratorResultSetMerger extends AbstractDecoratorRe
                return true;
            }
        }
        rowNumber = limit.isRowCountRewriteFlag() ? 0 : end + 1;
        rowNumber = end + 1;
        return false;
    }
    
+1 −1
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ public final class TopAndRowNumberDecoratorResultSetMerger extends AbstractDecor
                return true;
            }
        }
        rowNumber = limit.isRowCountRewriteFlag() ? 0 : end + 1;
        rowNumber = end + 1;
        return false;
    }
    
+2 −2
Original line number Diff line number Diff line
@@ -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();
@@ -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();
+10 −3
Original line number Diff line number Diff line
@@ -41,8 +41,6 @@ public final class Limit {
    
    private final DatabaseType databaseType;
    
    private final boolean rowCountRewriteFlag;
    
    private LimitValue offset;
    
    private LimitValue rowCount;
@@ -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();
@@ -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