Loading sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/SQLParser.java +4 −4 Original line number Diff line number Diff line Loading @@ -349,15 +349,15 @@ public class SQLParser extends AbstractParser { } if (Symbol.LT == symbol || Symbol.LT_EQ == symbol) { if (sqlExpression instanceof SQLNumberExpression) { selectStatement.getLimit().setRowCountLimit(new LimitValue(((SQLNumberExpression) sqlExpression).getNumber().intValue(), -1)); selectStatement.getLimit().setRowCount(new LimitValue(((SQLNumberExpression) sqlExpression).getNumber().intValue(), -1)); } else if (sqlExpression instanceof SQLPlaceholderExpression) { selectStatement.getLimit().setRowCountLimit(new LimitValue(-1, ((SQLPlaceholderExpression) sqlExpression).getIndex())); selectStatement.getLimit().setRowCount(new LimitValue(-1, ((SQLPlaceholderExpression) sqlExpression).getIndex())); } } else if (Symbol.GT == symbol || Symbol.GT_EQ == symbol) { if (sqlExpression instanceof SQLNumberExpression) { selectStatement.getLimit().setOffsetLimit(new LimitValue(((SQLNumberExpression) sqlExpression).getNumber().intValue(), -1)); selectStatement.getLimit().setOffset(new LimitValue(((SQLNumberExpression) sqlExpression).getNumber().intValue(), -1)); } else if (sqlExpression instanceof SQLPlaceholderExpression) { selectStatement.getLimit().setOffsetLimit(new LimitValue(-1, ((SQLPlaceholderExpression) sqlExpression).getIndex())); selectStatement.getLimit().setOffset(new LimitValue(-1, ((SQLPlaceholderExpression) sqlExpression).getIndex())); } } } Loading sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/context/limit/Limit.java +16 −16 Original line number Diff line number Diff line Loading @@ -41,9 +41,9 @@ public final class Limit { private final boolean rowCountRewriteFlag; private LimitValue offsetLimit; private LimitValue offset; private LimitValue rowCountLimit; private LimitValue rowCount; /** * 获取分页偏移量. Loading @@ -51,7 +51,7 @@ public final class Limit { * @return 分页偏移量 */ public int getOffsetValue() { return null != offsetLimit ? offsetLimit.getValue() : 0; return null != offset ? offset.getValue() : 0; } /** Loading @@ -60,7 +60,7 @@ public final class Limit { * @return 分页行数 */ public int getRowCountValue() { return null != rowCountLimit ? rowCountLimit.getValue() : 0; return null != rowCount ? rowCount.getValue() : 0; } /** Loading @@ -78,14 +78,14 @@ public final class Limit { private void fill(final List<Object> parameters) { int offset = 0; if (null != offsetLimit) { offset = -1 == offsetLimit.getIndex() ? getOffsetValue() : roundHalfUp(parameters.get(offsetLimit.getIndex())); offsetLimit.setValue(offset); if (null != this.offset) { offset = -1 == this.offset.getIndex() ? getOffsetValue() : roundHalfUp(parameters.get(this.offset.getIndex())); this.offset.setValue(offset); } int rowCount = 0; if (null != rowCountLimit) { rowCount = -1 == rowCountLimit.getIndex() ? getRowCountValue() : roundHalfUp(parameters.get(rowCountLimit.getIndex())); rowCountLimit.setValue(rowCount); if (null != this.rowCount) { rowCount = -1 == this.rowCount.getIndex() ? getRowCountValue() : roundHalfUp(parameters.get(this.rowCount.getIndex())); this.rowCount.setValue(rowCount); } if (offset < 0 || rowCount < 0) { throw new SQLParsingException("LIMIT offset and row count can not be a negative value."); Loading @@ -96,15 +96,15 @@ public final class Limit { int rewriteOffset = 0; int rewriteRowCount; if (rowCountRewriteFlag) { rewriteRowCount = null == rowCountLimit ? -1 : getOffsetValue() + rowCountLimit.getValue(); rewriteRowCount = null == rowCount ? -1 : getOffsetValue() + rowCount.getValue(); } else { rewriteRowCount = rowCountLimit.getValue(); rewriteRowCount = rowCount.getValue(); } if (null != offsetLimit && offsetLimit.getIndex() > -1) { parameters.set(offsetLimit.getIndex(), rewriteOffset); if (null != offset && offset.getIndex() > -1) { parameters.set(offset.getIndex(), rewriteOffset); } if (null != rowCountLimit && rowCountLimit.getIndex() > -1) { parameters.set(rowCountLimit.getIndex(), rewriteRowCount); if (null != rowCount && rowCount.getIndex() > -1) { parameters.set(rowCount.getIndex(), rewriteRowCount); } } } sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/mysql/MySQLParser.java +5 −5 Original line number Diff line number Diff line Loading @@ -77,7 +77,7 @@ public final class MySQLParser extends SQLParser { sqlStatement.getSqlTokens().add(new RowCountLimitToken(valueBeginPosition, value)); } Limit result = new Limit(true); result.setRowCountLimit(new LimitValue(value, valueIndex)); result.setRowCount(new LimitValue(value, valueIndex)); return result; } Loading Loading @@ -106,8 +106,8 @@ public final class MySQLParser extends SQLParser { sqlStatement.getSqlTokens().add(new RowCountLimitToken(rowCountBeginPosition, rowCount)); } Limit result = new Limit(true); result.setRowCountLimit(new LimitValue(rowCount, rowCountIndex)); result.setOffsetLimit(new LimitValue(value, valueIndex)); result.setRowCount(new LimitValue(rowCount, rowCountIndex)); result.setOffset(new LimitValue(value, valueIndex)); return result; } Loading Loading @@ -136,8 +136,8 @@ public final class MySQLParser extends SQLParser { sqlStatement.getSqlTokens().add(new RowCountLimitToken(valueBeginPosition, value)); } Limit result = new Limit(true); result.setRowCountLimit(new LimitValue(value, valueIndex)); result.setOffsetLimit(new LimitValue(offset, offsetIndex)); result.setRowCount(new LimitValue(value, valueIndex)); result.setOffset(new LimitValue(offset, offsetIndex)); return result; } } sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/postgresql/PostgreSQLSelectParser.java +2 −2 Original line number Diff line number Diff line Loading @@ -133,10 +133,10 @@ public class PostgreSQLSelectParser extends AbstractSelectParser { private void setLimit(final Optional<LimitValue> offsetLimit, final Optional<LimitValue> rowCountLimit) { Limit limit = new Limit(true); if (offsetLimit.isPresent()) { limit.setOffsetLimit(offsetLimit.get()); limit.setOffset(offsetLimit.get()); } if (rowCountLimit.isPresent()) { limit.setRowCountLimit(rowCountLimit.get()); limit.setRowCount(rowCountLimit.get()); } getSelectStatement().setLimit(limit); } Loading sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/sqlserver/SQLServerParser.java +5 −5 Original line number Diff line number Diff line Loading @@ -74,10 +74,10 @@ public final class SQLServerParser extends SQLParser { } if (null == sqlStatement.getLimit()) { Limit limit = new Limit(false); limit.setRowCountLimit(rowCountLimit); limit.setRowCount(rowCountLimit); sqlStatement.setLimit(limit); } else { sqlStatement.getLimit().setRowCountLimit(rowCountLimit); sqlStatement.getLimit().setRowCount(rowCountLimit); } skipIfEqual(SQLServerKeyword.PERCENT); } Loading Loading @@ -120,10 +120,10 @@ public final class SQLServerParser extends SQLParser { } getLexer().nextToken(); getLexer().nextToken(); limit.setRowCountLimit(new LimitValue(rowCount, rowCountIndex)); limit.setOffsetLimit(new LimitValue(offset, offsetIndex)); limit.setRowCount(new LimitValue(rowCount, rowCountIndex)); limit.setOffset(new LimitValue(offset, offsetIndex)); } else { limit.setOffsetLimit(new LimitValue(offset, offsetIndex)); limit.setOffset(new LimitValue(offset, offsetIndex)); } selectStatement.setLimit(limit); } Loading Loading
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/SQLParser.java +4 −4 Original line number Diff line number Diff line Loading @@ -349,15 +349,15 @@ public class SQLParser extends AbstractParser { } if (Symbol.LT == symbol || Symbol.LT_EQ == symbol) { if (sqlExpression instanceof SQLNumberExpression) { selectStatement.getLimit().setRowCountLimit(new LimitValue(((SQLNumberExpression) sqlExpression).getNumber().intValue(), -1)); selectStatement.getLimit().setRowCount(new LimitValue(((SQLNumberExpression) sqlExpression).getNumber().intValue(), -1)); } else if (sqlExpression instanceof SQLPlaceholderExpression) { selectStatement.getLimit().setRowCountLimit(new LimitValue(-1, ((SQLPlaceholderExpression) sqlExpression).getIndex())); selectStatement.getLimit().setRowCount(new LimitValue(-1, ((SQLPlaceholderExpression) sqlExpression).getIndex())); } } else if (Symbol.GT == symbol || Symbol.GT_EQ == symbol) { if (sqlExpression instanceof SQLNumberExpression) { selectStatement.getLimit().setOffsetLimit(new LimitValue(((SQLNumberExpression) sqlExpression).getNumber().intValue(), -1)); selectStatement.getLimit().setOffset(new LimitValue(((SQLNumberExpression) sqlExpression).getNumber().intValue(), -1)); } else if (sqlExpression instanceof SQLPlaceholderExpression) { selectStatement.getLimit().setOffsetLimit(new LimitValue(-1, ((SQLPlaceholderExpression) sqlExpression).getIndex())); selectStatement.getLimit().setOffset(new LimitValue(-1, ((SQLPlaceholderExpression) sqlExpression).getIndex())); } } } Loading
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/context/limit/Limit.java +16 −16 Original line number Diff line number Diff line Loading @@ -41,9 +41,9 @@ public final class Limit { private final boolean rowCountRewriteFlag; private LimitValue offsetLimit; private LimitValue offset; private LimitValue rowCountLimit; private LimitValue rowCount; /** * 获取分页偏移量. Loading @@ -51,7 +51,7 @@ public final class Limit { * @return 分页偏移量 */ public int getOffsetValue() { return null != offsetLimit ? offsetLimit.getValue() : 0; return null != offset ? offset.getValue() : 0; } /** Loading @@ -60,7 +60,7 @@ public final class Limit { * @return 分页行数 */ public int getRowCountValue() { return null != rowCountLimit ? rowCountLimit.getValue() : 0; return null != rowCount ? rowCount.getValue() : 0; } /** Loading @@ -78,14 +78,14 @@ public final class Limit { private void fill(final List<Object> parameters) { int offset = 0; if (null != offsetLimit) { offset = -1 == offsetLimit.getIndex() ? getOffsetValue() : roundHalfUp(parameters.get(offsetLimit.getIndex())); offsetLimit.setValue(offset); if (null != this.offset) { offset = -1 == this.offset.getIndex() ? getOffsetValue() : roundHalfUp(parameters.get(this.offset.getIndex())); this.offset.setValue(offset); } int rowCount = 0; if (null != rowCountLimit) { rowCount = -1 == rowCountLimit.getIndex() ? getRowCountValue() : roundHalfUp(parameters.get(rowCountLimit.getIndex())); rowCountLimit.setValue(rowCount); if (null != this.rowCount) { rowCount = -1 == this.rowCount.getIndex() ? getRowCountValue() : roundHalfUp(parameters.get(this.rowCount.getIndex())); this.rowCount.setValue(rowCount); } if (offset < 0 || rowCount < 0) { throw new SQLParsingException("LIMIT offset and row count can not be a negative value."); Loading @@ -96,15 +96,15 @@ public final class Limit { int rewriteOffset = 0; int rewriteRowCount; if (rowCountRewriteFlag) { rewriteRowCount = null == rowCountLimit ? -1 : getOffsetValue() + rowCountLimit.getValue(); rewriteRowCount = null == rowCount ? -1 : getOffsetValue() + rowCount.getValue(); } else { rewriteRowCount = rowCountLimit.getValue(); rewriteRowCount = rowCount.getValue(); } if (null != offsetLimit && offsetLimit.getIndex() > -1) { parameters.set(offsetLimit.getIndex(), rewriteOffset); if (null != offset && offset.getIndex() > -1) { parameters.set(offset.getIndex(), rewriteOffset); } if (null != rowCountLimit && rowCountLimit.getIndex() > -1) { parameters.set(rowCountLimit.getIndex(), rewriteRowCount); if (null != rowCount && rowCount.getIndex() > -1) { parameters.set(rowCount.getIndex(), rewriteRowCount); } } }
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/mysql/MySQLParser.java +5 −5 Original line number Diff line number Diff line Loading @@ -77,7 +77,7 @@ public final class MySQLParser extends SQLParser { sqlStatement.getSqlTokens().add(new RowCountLimitToken(valueBeginPosition, value)); } Limit result = new Limit(true); result.setRowCountLimit(new LimitValue(value, valueIndex)); result.setRowCount(new LimitValue(value, valueIndex)); return result; } Loading Loading @@ -106,8 +106,8 @@ public final class MySQLParser extends SQLParser { sqlStatement.getSqlTokens().add(new RowCountLimitToken(rowCountBeginPosition, rowCount)); } Limit result = new Limit(true); result.setRowCountLimit(new LimitValue(rowCount, rowCountIndex)); result.setOffsetLimit(new LimitValue(value, valueIndex)); result.setRowCount(new LimitValue(rowCount, rowCountIndex)); result.setOffset(new LimitValue(value, valueIndex)); return result; } Loading Loading @@ -136,8 +136,8 @@ public final class MySQLParser extends SQLParser { sqlStatement.getSqlTokens().add(new RowCountLimitToken(valueBeginPosition, value)); } Limit result = new Limit(true); result.setRowCountLimit(new LimitValue(value, valueIndex)); result.setOffsetLimit(new LimitValue(offset, offsetIndex)); result.setRowCount(new LimitValue(value, valueIndex)); result.setOffset(new LimitValue(offset, offsetIndex)); return result; } }
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/postgresql/PostgreSQLSelectParser.java +2 −2 Original line number Diff line number Diff line Loading @@ -133,10 +133,10 @@ public class PostgreSQLSelectParser extends AbstractSelectParser { private void setLimit(final Optional<LimitValue> offsetLimit, final Optional<LimitValue> rowCountLimit) { Limit limit = new Limit(true); if (offsetLimit.isPresent()) { limit.setOffsetLimit(offsetLimit.get()); limit.setOffset(offsetLimit.get()); } if (rowCountLimit.isPresent()) { limit.setRowCountLimit(rowCountLimit.get()); limit.setRowCount(rowCountLimit.get()); } getSelectStatement().setLimit(limit); } Loading
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/sqlserver/SQLServerParser.java +5 −5 Original line number Diff line number Diff line Loading @@ -74,10 +74,10 @@ public final class SQLServerParser extends SQLParser { } if (null == sqlStatement.getLimit()) { Limit limit = new Limit(false); limit.setRowCountLimit(rowCountLimit); limit.setRowCount(rowCountLimit); sqlStatement.setLimit(limit); } else { sqlStatement.getLimit().setRowCountLimit(rowCountLimit); sqlStatement.getLimit().setRowCount(rowCountLimit); } skipIfEqual(SQLServerKeyword.PERCENT); } Loading Loading @@ -120,10 +120,10 @@ public final class SQLServerParser extends SQLParser { } getLexer().nextToken(); getLexer().nextToken(); limit.setRowCountLimit(new LimitValue(rowCount, rowCountIndex)); limit.setOffsetLimit(new LimitValue(offset, offsetIndex)); limit.setRowCount(new LimitValue(rowCount, rowCountIndex)); limit.setOffset(new LimitValue(offset, offsetIndex)); } else { limit.setOffsetLimit(new LimitValue(offset, offsetIndex)); limit.setOffset(new LimitValue(offset, offsetIndex)); } selectStatement.setLimit(limit); } Loading