ming535 opened a new issue, #2624:
URL: https://github.com/apache/arrow-datafusion/issues/2624
**Describe the bug**
`limit_push_down` tries to push a limit to TableScan when `OFFSET` is
without `LIMIT` which makes all the result disappeared.
`OFFSET` without `LIMIT` is allowed in Postgres.
**To Reproduce**
in `limit_push_down.rs`, add this test code:
`#[test]
fn limit_pushdown_should_not_pushdown_limit_with_offset_only() ->
Result<()> {
let table_scan = test_table_scan()?;
let plan = LogicalPlanBuilder::from(table_scan)
.offset(10)?
.build()?;
// Should not push any limit down to table provider
// When it has a select
let expected = "Offset: 10\
\n TableScan: test projection=None";
assert_optimized_plan_eq(&plan, expected);
Ok(())
}
`
The problem is here in the code, which adds a limit when `OFFSET` doesnt
have one:
<img width="1368" alt="Screen Shot 2022-05-27 at 00 05 17"
src="https://user-images.githubusercontent.com/7576663/170527953-36a7412e-ea4e-4146-ae86-b8f35c7cbe58.png">
**Expected behavior**
The test case should pass. No limit should pushed down to TableScan.
**Additional context**
I was trying to implement the `OFFSET` physical plan.
--
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]