Closed SteveLauC closed 3 months ago
So if DataFusion wants to follow DuckDB's behavior, then I guess we should evaluate that SQLExpr
rather than simply converting it to DataFusion's Expr
type.
I think ideally it should support any scalar expression. In PostgreSQL, even functions and scalar subqueries are allowed.
psql=> select * from t limit (select * from t limit 1);
a
---
1
(1 row)
psql=> select * from t limit random() + 1;
a
---
1
(1 row)
any scalar expression
Yeah, as long as it can be evaluated to a number, it should work.
I think we could run the Expr simplifier / const folder on the limit value
I am not sure we can do so from within the planner itself 🤔
Describe the bug
It should work as long as it can be evaluated without schema or data, here is how duckdb handles it:
To Reproduce
See above, the table (parquet file) should not matter.
Expected behavior
1 + 1
should be evaluated to a constant 2.Additional context
Related code:
https://github.com/apache/arrow-datafusion/blob/fc81bf10ea7cde55c6d58a670e15bfd0581ec8c2/datafusion/sql/src/query.rs#L240-L257