Ted-Jiang commented on code in PR #2566:
URL: https://github.com/apache/arrow-datafusion/pull/2566#discussion_r877857827
##########
datafusion/core/src/sql/planner.rs:
##########
@@ -4847,6 +4861,29 @@ mod tests {
quick_test(sql, expected);
}
+ #[test]
+ fn test_offset_after_limit_with_limit_push() {
+ let sql = "select id from person where person.id > 100 LIMIT 5 OFFSET
3;";
+ let expected = "Offset: 3\
+ \n Limit: 8\
+ \n Projection: #person.id\
+ \n Filter: #person.id > Int64(100)\
+ \n TableScan: person
projection=None";
+
+ quick_test_with_limit_pushdown(sql, expected);
+ }
+
+ #[test]
+ fn test_offset_before_limit_with_limit_push() {
+ let sql = "select id from person where person.id > 100 OFFSET 3 LIMIT
5;";
+ let expected = "Offset: 3\
+ \n Limit: 8\
+ \n Projection: #person.id\
+ \n Filter: #person.id > Int64(100)\
+ \n TableScan: person
projection=None";
+ quick_test_with_limit_pushdown(sql, expected);
+ }
+
Review Comment:
Add test
##########
datafusion/core/src/sql/planner.rs:
##########
@@ -296,9 +296,10 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
let plan = self.order_by(plan, query.order_by)?;
- let plan: LogicalPlan = self.offset(plan, query.offset)?;
+ let plan: LogicalPlan = self.limit(plan, query.limit)?;
- self.limit(plan, query.limit)
+ //make limit as offset's input will enable limit push down simply
+ self.offset(plan, query.offset)
Review Comment:
fix and add test in
[20366bd](https://github.com/apache/arrow-datafusion/pull/2566/commits/20366bd32654ee0691bae3598f4f41be7960de48)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]