From 50d3e8b4224bbaf5ed9fb053546fc3c0c86ac67b Mon Sep 17 00:00:00 2001 From: wumpz Date: Wed, 30 Jul 2014 22:41:40 +0200 Subject: [PATCH] limit 0 and limit null included --- .../sf/jsqlparser/test/select/SelectTest.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java b/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java index e53c051dd..72e6618f8 100644 --- a/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java +++ b/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java @@ -216,6 +216,47 @@ public void testLimit() throws JSQLParserException { Select select = (Select) parserManager.parse(new StringReader(statement)); + assertEquals(3, ((PlainSelect) select.getSelectBody()).getLimit().getOffset()); + assertTrue(((PlainSelect) select.getSelectBody()).getLimit().isRowCountJdbcParameter()); + assertFalse(((PlainSelect) select.getSelectBody()).getLimit().isOffsetJdbcParameter()); + assertFalse(((PlainSelect) select.getSelectBody()).getLimit().isLimitAll()); + + // toString uses standard syntax + statement = "SELECT * FROM mytable WHERE mytable.col = 9 LIMIT ? OFFSET 3"; + assertSqlCanBeParsedAndDeparsed(statement); + + statement = "SELECT * FROM mytable WHERE mytable.col = 9 OFFSET ?"; + select = (Select) parserManager.parse(new StringReader(statement)); + + assertEquals(0, ((PlainSelect) select.getSelectBody()).getLimit().getRowCount()); + assertTrue(((PlainSelect) select.getSelectBody()).getLimit().isOffsetJdbcParameter()); + assertFalse(((PlainSelect) select.getSelectBody()).getLimit().isLimitAll()); + assertStatementCanBeDeparsedAs(select, statement); + + statement = "(SELECT * FROM mytable WHERE mytable.col = 9 OFFSET ?) UNION " + + "(SELECT * FROM mytable2 WHERE mytable2.col = 9 OFFSET ?) LIMIT 3, 4"; + select = (Select) parserManager.parse(new StringReader(statement)); + SetOperationList setList = (SetOperationList) select.getSelectBody(); + assertEquals(3, setList.getLimit().getOffset()); + assertEquals(4, setList.getLimit().getRowCount()); + + // toString uses standard syntax + statement = "(SELECT * FROM mytable WHERE mytable.col = 9 OFFSET ?) UNION " + + "(SELECT * FROM mytable2 WHERE mytable2.col = 9 OFFSET ?) LIMIT 4 OFFSET 3"; + assertSqlCanBeParsedAndDeparsed(statement); + + statement = "(SELECT * FROM mytable WHERE mytable.col = 9 OFFSET ?) UNION ALL " + + "(SELECT * FROM mytable2 WHERE mytable2.col = 9 OFFSET ?) UNION ALL " + + "(SELECT * FROM mytable3 WHERE mytable4.col = 9 OFFSET ?) LIMIT 4 OFFSET 3"; + assertSqlCanBeParsedAndDeparsed(statement); + + } + + public void testLimit2() throws JSQLParserException { + String statement = "SELECT * FROM mytable WHERE mytable.col = 9 LIMIT 3, ?"; + + Select select = (Select) parserManager.parse(new StringReader(statement)); + assertEquals(3, ((PlainSelect) select.getSelectBody()).getLimit().getOffset()); assertTrue(((PlainSelect) select.getSelectBody()).getLimit().isRowCountJdbcParameter()); assertFalse(((PlainSelect) select.getSelectBody()).getLimit().isOffsetJdbcParameter());