Commit b734b2d5 authored by terrymanu's avatar terrymanu
Browse files

refactor LimitValue to add boundOpened

parent 40c6107f
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ public final class RowNumberDecoratorResultSetMerger extends AbstractDecoratorRe
    }
    
    private boolean skipOffset() throws SQLException {
        int end = limit.isIncludeOffset() ? limit.getOffsetValue() - 1 : limit.getOffsetValue();
        int end = limit.getOffset().isBoundOpened() ? limit.getOffsetValue() - 1 : limit.getOffsetValue();
        for (int i = 0; i < end; i++) {
            if (!getResultSetMerger().next()) {
                return true;
@@ -61,7 +61,7 @@ public final class RowNumberDecoratorResultSetMerger extends AbstractDecoratorRe
        if (limit.getRowCountValue() < 0) {
            return getResultSetMerger().next();
        }
        if (limit.isIncludeRowCount()) {
        if (limit.getRowCount().isBoundOpened()) {
            return rowNumber++ <= limit.getRowCountValue() && getResultSetMerger().next();
        }
        return rowNumber++ < limit.getRowCountValue() && getResultSetMerger().next();
+1 −1
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ public final class TopAndRowNumberDecoratorResultSetMerger extends AbstractDecor
    }
    
    private boolean skipOffset() throws SQLException {
        int end = limit.isIncludeOffset() ? limit.getOffsetValue() - 1 : limit.getOffsetValue();
        int end = limit.getOffset().isBoundOpened() ? limit.getOffsetValue() - 1 : limit.getOffsetValue();
        for (int i = 0; i < end; i++) {
            if (!getResultSetMerger().next()) {
                return true;
+4 −6
Original line number Diff line number Diff line
@@ -182,13 +182,12 @@ public class WhereClauseParser implements SQLClauseParser {
        }
        if (sqlExpression instanceof SQLNumberExpression) {
            int rowCount = ((SQLNumberExpression) sqlExpression).getNumber().intValue();
            selectStatement.getLimit().setRowCount(new LimitValue(rowCount, -1));
            selectStatement.getLimit().setRowCount(new LimitValue(rowCount, -1, includeRowCount));
            selectStatement.getSqlTokens().add(new RowCountToken(
                    lexerEngine.getCurrentToken().getEndPosition() - String.valueOf(rowCount).length() - lexerEngine.getCurrentToken().getLiterals().length(), rowCount));
        } else if (sqlExpression instanceof SQLPlaceholderExpression) {
            selectStatement.getLimit().setRowCount(new LimitValue(-1, ((SQLPlaceholderExpression) sqlExpression).getIndex()));
            selectStatement.getLimit().setRowCount(new LimitValue(-1, ((SQLPlaceholderExpression) sqlExpression).getIndex(), includeRowCount));
        }
        selectStatement.getLimit().setIncludeRowCount(includeRowCount);
    }
    
    private void parseOffsetCondition(final SelectStatement selectStatement, final boolean includeOffset) {
@@ -198,13 +197,12 @@ public class WhereClauseParser implements SQLClauseParser {
        }
        if (sqlExpression instanceof SQLNumberExpression) {
            int offset = ((SQLNumberExpression) sqlExpression).getNumber().intValue();
            selectStatement.getLimit().setOffset(new LimitValue(offset, -1));
            selectStatement.getLimit().setOffset(new LimitValue(offset, -1, includeOffset));
            selectStatement.getSqlTokens().add(new OffsetToken(
                    lexerEngine.getCurrentToken().getEndPosition() - String.valueOf(offset).length() - lexerEngine.getCurrentToken().getLiterals().length(), offset));
        } else if (sqlExpression instanceof SQLPlaceholderExpression) {
            selectStatement.getLimit().setOffset(new LimitValue(-1, ((SQLPlaceholderExpression) sqlExpression).getIndex()));
            selectStatement.getLimit().setOffset(new LimitValue(-1, ((SQLPlaceholderExpression) sqlExpression).getIndex(), includeOffset));
        }
        selectStatement.getLimit().setIncludeOffset(includeOffset);
    }
    
    protected Keyword[] getCustomizedOtherConditionOperators() {
+0 −4
Original line number Diff line number Diff line
@@ -45,10 +45,6 @@ public final class Limit {
    
    private LimitValue rowCount;
    
    private boolean includeOffset;
    
    private boolean includeRowCount;
    
    /**
     * Get offset value.
     * 
+2 −0
Original line number Diff line number Diff line
@@ -36,4 +36,6 @@ public final class LimitValue {
    private int value;
    
    private int index;
    
    private boolean boundOpened;
}
Loading