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)