alamb commented on code in PR #9790:
URL: https://github.com/apache/arrow-datafusion/pull/9790#discussion_r1541081927
##########
datafusion/sqllogictest/test_files/select.slt:
##########
@@ -550,9 +550,16 @@ select * from (select 1 a union all select 2) b order by a
limit 1;
1
# select limit clause invalid
-statement error DataFusion error: Error during planning: LIMIT must not be
negative
+statement error DataFusion error: Error during planning: LIMIT must be >= 0,
'\-1' was provided\.
select * from (select 1 a union all select 2) b order by a limit -1;
+# select limit with basic arithmetic
+query I
+select * from (select 1 a union all select 2) b order by a limit 1+1;
+----
+1
+2
+
Review Comment:
Can you also add a few error cases -- for example:
```sql
❯ select * from (values (1)) LIMIT 10*100;
Error during planning: Unsupported operator for LIMIT clause
❯ select * from (values (1)) LIMIT cast(column1 as tinyint);
Error during planning: Unexpected expression in LIMIT clause
```
##########
datafusion/sql/src/query.rs:
##########
@@ -283,3 +276,44 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
}
}
}
+
+/// Retrieves the constant result of an expression, evaluating it if possible.
+///
+/// This function takes an expression and an argument name as input and returns
+/// a `Result<i64>` indicating either the constant result of the expression or
an
+/// error if the expression cannot be evaluated.
+///
+/// # Arguments
+///
+/// * `expr` - An `Expr` representing the expression to evaluate.
+/// * `arg_name` - The name of the argument for error messages.
+///
+/// # Returns
+///
+/// * `Result<i64>` - An `Ok` variant containing the constant result if
evaluation is successful,
+/// or an `Err` variant containing an error message if evaluation fails.
+fn get_constant_result(expr: &Expr, arg_name: &str) -> Result<i64> {
Review Comment:
```suggestion
///
/// <https://github.com/apache/arrow-datafusion/issues/9821> tracks a more
general solution
fn get_constant_result(expr: &Expr, arg_name: &str) -> Result<i64> {
```
--
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]