Skip to content

Commit

Permalink
Using display_name for Expr::Aggregation
Browse files Browse the repository at this point in the history
  • Loading branch information
Lordworms committed Jun 21, 2024
1 parent cc60278 commit 58b95d3
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 2 deletions.
1 change: 1 addition & 0 deletions datafusion/core/src/physical_planner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1916,6 +1916,7 @@ pub fn create_aggregate_expr_and_maybe_filter(
// unpack (nested) aliased logical expressions, e.g. "sum(col) as total"
let (name, e) = match e {
Expr::Alias(Alias { expr, name, .. }) => (name.clone(), expr.as_ref()),
Expr::AggregateFunction(_) => (e.display_name().unwrap_or(physical_name(e)?), e),
_ => (physical_name(e)?, e),
};

Expand Down
37 changes: 35 additions & 2 deletions datafusion/sqllogictest/test_files/expr.slt
Original file line number Diff line number Diff line change
Expand Up @@ -2473,7 +2473,7 @@ host2 202
host3 303

# TODO: Issue tracked in https://github.com/apache/datafusion/issues/10364
query error
query TR
select
t2.server['c3'] as host,
sum((
Expand All @@ -2488,6 +2488,10 @@ select
) t2
where t2.server['c3'] IS NOT NULL
group by t2.server['c3'] order by host;
----
host1 101
host2 202
host3 303

# can have 2 projections with aggr(short_circuited), with different short-circuited expr
query TRR
Expand Down Expand Up @@ -2559,7 +2563,7 @@ host2 2.2 202
host3 3.3 303

# TODO: Issue tracked in https://github.com/apache/datafusion/issues/10364
query error
query TRR
select
t2.server['c3'] as host,
sum((
Expand All @@ -2579,6 +2583,10 @@ select
) t2
where t2.server['c3'] IS NOT NULL
group by t2.server['c3'] order by host;
----
host1 1.1 101
host2 2.2 202
host3 3.3 303

# can have 2 projections with aggr(short_circuited), with the same short-circuited expr (e.g. coalesce)
query TRR
Expand All @@ -2587,3 +2595,28 @@ select t2."struct(t1.time,t1.load1,t1.load2,t1.host)"['c3'] as host, sum(coalesc
host1 1.1 101
host2 2.2 202
host3 3.3 303

statement ok
set datafusion.sql_parser.dialect = 'Postgres';

statement ok
create table t (a float) as values (1), (2), (3);

query TT
explain select min(a) filter (where a > 1) as x from t;
----
logical_plan
01)Projection: MIN(t.a) FILTER (WHERE t.a > Int64(1)) AS x
02)--Aggregate: groupBy=[[]], aggr=[[MIN(t.a) FILTER (WHERE t.a > Float32(1)) AS MIN(t.a) FILTER (WHERE t.a > Int64(1))]]
03)----TableScan: t projection=[a]
physical_plan
01)ProjectionExec: expr=[MIN(t.a) FILTER (WHERE t.a > Int64(1))@0 as x]
02)--AggregateExec: mode=Single, gby=[], aggr=[MIN(t.a) FILTER (WHERE t.a > Int64(1))]
03)----MemoryExec: partitions=1, partition_sizes=[1]


statement ok
drop table t;

statement ok
set datafusion.sql_parser.dialect = 'Generic';

0 comments on commit 58b95d3

Please sign in to comment.