Note: Similar to #899
Describe the bug
The LIMIT and OFFSET present at the end of a UNION query should be associated with the UNION query as a whole. Currently, it is being associated with the last SELECT query in the UNION.
To Reproduce
Steps to reproduce the behavior:
- Example SQL
SELECT * FROM table1 UNION SELECT * FROM table2 ORDER BY col LIMIT 4 OFFSET 5
- Parsing this SQL using JSqlParser with this statements
Select unionQuery = (Select) CCJSqlParserUtil.parse("SELECT * FROM table1 UNION SELECT * FROM table2 ORDER BY col LIMIT 4 OFFSET 5");
SetOperationList unionQueries = (SetOperationList) unionQuery.getSelectBody();
System.out.println("Limit: " + unionQueries.getLimit() + "; Offset: " + unionQueries.getOffset());
unionQueries.getSelects().forEach(query -> {
PlainSelect plainQuery = (PlainSelect) query;
System.out.println("Limit: " + plainQuery.getLimit() + "; Offset: " + plainQuery.getOffset());
});
Actual behavior
Limit: null; Offset: null
Limit: null; Offset: null
Limit: LIMIT 4; Offset: OFFSET 5
Expected behavior
Limit: LIMIT 4; Offset: OFFSET 5
Limit: null; Offset: null
Limit: null; Offset: null
Reference
System
- Database you are using: PostgreSQL, MySQL
- Java Version: 11.0.3
- JSqlParser version: 3.1
Note: Similar to #899
Describe the bug
The LIMIT and OFFSET present at the end of a UNION query should be associated with the UNION query as a whole. Currently, it is being associated with the last SELECT query in the UNION.
To Reproduce
Steps to reproduce the behavior:
Actual behavior
Expected behavior
Reference
System