@@ -216,6 +216,47 @@ public void testLimit() throws JSQLParserException {
216216
217217 Select select = (Select ) parserManager .parse (new StringReader (statement ));
218218
219+ assertEquals (3 , ((PlainSelect ) select .getSelectBody ()).getLimit ().getOffset ());
220+ assertTrue (((PlainSelect ) select .getSelectBody ()).getLimit ().isRowCountJdbcParameter ());
221+ assertFalse (((PlainSelect ) select .getSelectBody ()).getLimit ().isOffsetJdbcParameter ());
222+ assertFalse (((PlainSelect ) select .getSelectBody ()).getLimit ().isLimitAll ());
223+
224+ // toString uses standard syntax
225+ statement = "SELECT * FROM mytable WHERE mytable.col = 9 LIMIT ? OFFSET 3" ;
226+ assertSqlCanBeParsedAndDeparsed (statement );
227+
228+ statement = "SELECT * FROM mytable WHERE mytable.col = 9 OFFSET ?" ;
229+ select = (Select ) parserManager .parse (new StringReader (statement ));
230+
231+ assertEquals (0 , ((PlainSelect ) select .getSelectBody ()).getLimit ().getRowCount ());
232+ assertTrue (((PlainSelect ) select .getSelectBody ()).getLimit ().isOffsetJdbcParameter ());
233+ assertFalse (((PlainSelect ) select .getSelectBody ()).getLimit ().isLimitAll ());
234+ assertStatementCanBeDeparsedAs (select , statement );
235+
236+ statement = "(SELECT * FROM mytable WHERE mytable.col = 9 OFFSET ?) UNION "
237+ + "(SELECT * FROM mytable2 WHERE mytable2.col = 9 OFFSET ?) LIMIT 3, 4" ;
238+ select = (Select ) parserManager .parse (new StringReader (statement ));
239+ SetOperationList setList = (SetOperationList ) select .getSelectBody ();
240+ assertEquals (3 , setList .getLimit ().getOffset ());
241+ assertEquals (4 , setList .getLimit ().getRowCount ());
242+
243+ // toString uses standard syntax
244+ statement = "(SELECT * FROM mytable WHERE mytable.col = 9 OFFSET ?) UNION "
245+ + "(SELECT * FROM mytable2 WHERE mytable2.col = 9 OFFSET ?) LIMIT 4 OFFSET 3" ;
246+ assertSqlCanBeParsedAndDeparsed (statement );
247+
248+ statement = "(SELECT * FROM mytable WHERE mytable.col = 9 OFFSET ?) UNION ALL "
249+ + "(SELECT * FROM mytable2 WHERE mytable2.col = 9 OFFSET ?) UNION ALL "
250+ + "(SELECT * FROM mytable3 WHERE mytable4.col = 9 OFFSET ?) LIMIT 4 OFFSET 3" ;
251+ assertSqlCanBeParsedAndDeparsed (statement );
252+
253+ }
254+
255+ public void testLimit2 () throws JSQLParserException {
256+ String statement = "SELECT * FROM mytable WHERE mytable.col = 9 LIMIT 3, ?" ;
257+
258+ Select select = (Select ) parserManager .parse (new StringReader (statement ));
259+
219260 assertEquals (3 , ((PlainSelect ) select .getSelectBody ()).getLimit ().getOffset ());
220261 assertTrue (((PlainSelect ) select .getSelectBody ()).getLimit ().isRowCountJdbcParameter ());
221262 assertFalse (((PlainSelect ) select .getSelectBody ()).getLimit ().isOffsetJdbcParameter ());
0 commit comments