Jorge created ARROW-9520:
----------------------------
Summary: [Rust] [DataFusion] Can't alias an aggregate expression
Key: ARROW-9520
URL: https://issues.apache.org/jira/browse/ARROW-9520
Project: Apache Arrow
Issue Type: Bug
Components: Rust - DataFusion
Reporter: Jorge
The following test (on execute) fails:
{code}
#[test]
fn aggregate_with_alias() -> Result<()> {
let results = execute("SELECT c1, COUNT(c2) AS count FROM test GROUP BY
c1", 4)?;
assert_eq!(field_names(batch), vec!["c1", "count"]);
let expected = vec!["0,10", "1,10", "2,10", "3,10"];
let mut rows = test::format_batch(&batch);
rows.sort();
assert_eq!(rows, expected);
Ok(())
}
{code}
The root cause is that, in {{sql::planner}}, we interpret {{COUNT(c2) AS
count}} as An {{Expr::Alias}}, which fails the {{is_aggregate_expr}} condition,
thus being interpreted as grouped expression instead of an aggregated
expression. This raises the Error
{{General("Projection references non-aggregate values")}}
The planner could interpret the statement above as two steps: an aggregation
followed by a projection. Alternatively, we can allow aliases to be valid
aggregation expressions.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)