Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -75,3 +75,8 @@ rat.txt

# data generated by examples
datafusion-examples/examples/datafusion-examples/

output.txt
test_output.txt
datafusion/sqllogictest/test_files/scratch/

44 changes: 33 additions & 11 deletions datafusion/physical-plan/src/aggregates/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
// under the License.

//! Aggregates functionalities

use std::any::Any;
use std::sync::Arc;

Expand Down Expand Up @@ -1070,15 +1069,32 @@ impl DisplayAs for AggregateExec {
) -> std::fmt::Result {
match t {
DisplayFormatType::Default | DisplayFormatType::Verbose => {
let format_expr_with_alias =
|(e, alias): &(Arc<dyn PhysicalExpr>, String)| -> String {
let e = e.to_string();
if &e != alias {
format!("{e} as {alias}")
} else {
e
}
};
fn normalize_literal_display(s: &str) -> String {
// already quoted → keep
if s.starts_with('"') || s.starts_with('\'') {
return s.to_string();
}

// numeric literal → keep unquoted
if s.chars().all(|c| c.is_ascii_digit()) {
return s.to_string();
}

// everything else → quote
format!("\"{s}\"")
}
let format_expr_with_alias =
|(expr, alias): &(Arc<dyn PhysicalExpr>, String)| -> String {
let display = expr.human_display().to_string();

if display.is_empty() {
alias.clone()
} else if display == *alias {
display
} else {
format!("{display} as {alias}")
}
};

write!(f, "AggregateExec: mode={:?}", self.mode)?;
let g: Vec<String> = if self.group_by.is_single() {
Expand Down Expand Up @@ -1116,8 +1132,14 @@ impl DisplayAs for AggregateExec {
let a: Vec<String> = self
.aggr_expr
.iter()
.map(|agg| agg.name().to_string())
.map(|agg| {
let expr = agg.human_display().to_string();
let alias = agg.name().to_string();

if expr.is_empty() { alias.clone() } else { expr }
})
.collect();

write!(f, ", aggr=[{}]", a.join(", "))?;
if let Some(limit) = self.limit {
write!(f, ", lim=[{limit}]")?;
Expand Down
5 changes: 3 additions & 2 deletions datafusion/sqllogictest/test_files/aggregate.slt
Original file line number Diff line number Diff line change
Expand Up @@ -7730,7 +7730,8 @@ logical_plan
15)------------EmptyRelation: rows=1
physical_plan
01)ProjectionExec: expr=[last_value(a.foo) ORDER BY [a.foo ASC NULLS LAST]@1 as last_value(a.foo) ORDER BY [a.foo ASC NULLS LAST], sum(DISTINCT Int64(1))@2 as sum(DISTINCT Int64(1))]
02)--AggregateExec: mode=FinalPartitioned, gby=[id@0 as id], aggr=[last_value(a.foo) ORDER BY [a.foo ASC NULLS LAST], sum(DISTINCT Int64(1))], ordering_mode=Sorted
02)--AggregateExec: mode=FinalPartitioned, gby=[id@0 as id], aggr=[last_value(a.foo) ORDER BY [a.foo ASC NULLS LAST], sum(DISTINCT 1) as sum(DISTINCT Int64(1))]
, ordering_mode=Sorted
03)----RepartitionExec: partitioning=Hash([id@0], 4), input_partitions=5
04)------AggregateExec: mode=Partial, gby=[id@0 as id], aggr=[last_value(a.foo) ORDER BY [a.foo ASC NULLS LAST], sum(DISTINCT Int64(1))], ordering_mode=Sorted
05)--------UnionExec
Expand Down Expand Up @@ -7856,7 +7857,7 @@ logical_plan
01)Aggregate: groupBy=[[]], aggr=[[count(Int64(1)), count(Int64(2))]]
02)--TableScan: t projection=[]
physical_plan
01)AggregateExec: mode=Single, gby=[], aggr=[count(Int64(1)), count(Int64(2))]
01)AggregateExec: mode=Single, gby=[], aggr=[count(1) as count(Int64(1)), count(2) as count(Int64(2))]
02)--DataSourceExec: partitions=1, partition_sizes=[1]

query II
Expand Down
2 changes: 1 addition & 1 deletion datafusion/sqllogictest/test_files/joins.slt
Original file line number Diff line number Diff line change
Expand Up @@ -4367,7 +4367,7 @@ logical_plan
08)----------TableScan: my_catalog.my_schema.table_with_many_types projection=[binary_col]
physical_plan
01)ProjectionExec: expr=[count(Int64(1))@0 as count(*)]
02)--AggregateExec: mode=Single, gby=[], aggr=[count(Int64(1))]
02)--AggregateExec: mode=Single, gby=[], aggr=[count(1) as count(Int64(1))]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like redundant for me

03)----ProjectionExec: expr=[]
04)------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(binary_col@0, binary_col@0)]
05)--------DataSourceExec: partitions=1, partition_sizes=[1]
Expand Down
3 changes: 2 additions & 1 deletion datafusion/sqllogictest/test_files/limit.slt
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,8 @@ logical_plan
06)----------TableScan: t1 projection=[a]
physical_plan
01)ProjectionExec: expr=[count(Int64(1))@0 as count(*)]
02)--AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1))]
02)--AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1)) as count(*)]

03)----CoalescePartitionsExec
04)------AggregateExec: mode=Partial, gby=[], aggr=[count(Int64(1))]
05)--------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
env,value,category
prod,100,A
dev,200,B
test,150,A
prod,300,C
dev,250,B
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
2 changes: 2 additions & 0 deletions datafusion/sqllogictest/test_files/scratch/copy/table.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
1,Foo
2,Bar
2 changes: 2 additions & 0 deletions datafusion/sqllogictest/test_files/scratch/copy/table.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{"col1":1,"col2":"Foo"}
{"col1":2,"col2":"Bar"}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
col1;col2
1;Foo
2;Bar
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{"col1":1,"col2":"Foo"}
{"col1":2,"col2":"Bar"}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
1,aaa,100,1
2,bbb,200,1
3,ccc,300,1
4,ddd,400,1
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
5,eee,500,2
6,fff,600,2
7,ggg,700,2
8,hhh,800,2
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
column1,column2
#second line is a comment
2,3
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
c1,c2
id0,"""value0"""
id1,"""value1"""
id2,"""value2"""
id3,"""value3"""
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
c1,c2
id0,"#"value0#""
id1,"#"value1#""
id2,"#"value2#""
id3,"#"value3#""
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
int_col|string_col
1|~e|e|e~
2|~f|f|f~
3|~g|g|g~
4|~h|h|h~
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
int_col,string_col,bigint_col
1,aaa,100
2,bbb,200
3,ccc,300
4,ddd,400
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
int_col,string_col,bigint_col
5,eee,500
6,fff,600
7,ggg,700
8,hhh,800
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{"int_col":1,"string_col":"aaa","bigint_col":100}
{"int_col":2,"string_col":"bbb","bigint_col":200}
{"int_col":3,"string_col":"ccc","bigint_col":300}
{"int_col":4,"string_col":"ddd","bigint_col":400}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{"int_col":5,"string_col":"eee","bigint_col":500}
{"int_col":6,"string_col":"fff","bigint_col":600}
{"int_col":7,"string_col":"ggg","bigint_col":700}
{"int_col":8,"string_col":"hhh","bigint_col":800}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
column1,column2,column3,column4
1,foo,1,2023-01-01
2,bar,2,2023-01-02
3,baz,3,2023-01-03
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{"int_col":1,"string_col":"foo","bigint_col":1,"date_col":"2023-01-01"}
{"int_col":2,"string_col":"bar","bigint_col":2,"date_col":"2023-01-02"}
{"int_col":3,"string_col":"baz","bigint_col":3,"date_col":"2023-01-03"}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
t1,c2
2020-12-10T00:00:00,0
2020-12-11T00:00:00,1
2020-12-12T00:00:00,2
2020-12-13T00:00:00,3
2020-12-14T00:00:00,4
2020-12-15T00:00:00,5
2020-12-16T00:00:00,6
2020-12-17T00:00:00,7
2020-12-18T00:00:00,8
2020-12-19T00:00:00,9
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
t1,c2
2020-12-10T00:00:00,0
2020-12-11T00:00:00,1
2020-12-12T00:00:00,2
2020-12-13T00:00:00,3
2020-12-14T00:00:00,4
2020-12-15T00:00:00,5
2020-12-16T00:00:00,6
2020-12-17T00:00:00,7
2020-12-18T00:00:00,8
2020-12-19T00:00:00,9
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
t1,c2
2020-12-10T00:00:00,0
2020-12-11T00:00:00,1
2020-12-12T00:00:00,2
2020-12-13T00:00:00,3
2020-12-14T00:00:00,4
2020-12-15T00:00:00,5
2020-12-16T00:00:00,6
2020-12-17T00:00:00,7
2020-12-18T00:00:00,8
2020-12-19T00:00:00,9
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
t1,c2
2020-12-10T00:00:00,0
2020-12-11T00:00:00,1
2020-12-12T00:00:00,2
2020-12-13T00:00:00,3
2020-12-14T00:00:00,4
2020-12-15T00:00:00,5
2020-12-16T00:00:00,6
2020-12-17T00:00:00,7
2020-12-18T00:00:00,8
2020-12-19T00:00:00,9
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
a,b
1,5
2,4
3,3
4,2
5,1
7,10
7,9
7,8
7,7
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
c
1
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
c
1
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
c
1
2
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
c
1
2
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
c
3
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{"b":"1"}
{"b":"1"}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{"b":"3"}
{"b":"3"}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{"b":"5"}
{"b":"5"}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
1,2
3,4
4,5
6,7
6 changes: 6 additions & 0 deletions datafusion/sqllogictest/test_files/scratch/joins/t1.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
column1
1
2
3
4
5
Binary file not shown.
6 changes: 6 additions & 0 deletions datafusion/sqllogictest/test_files/scratch/joins/t2.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
column1
5
4
3
2
1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
column1
1
2
3
4
5
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{"column1":1}
{"column1":2}
{"column1":3}
{"column1":4}
{"column1":5}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
2 changes: 1 addition & 1 deletion datafusion/sqllogictest/test_files/window.slt
Original file line number Diff line number Diff line change
Expand Up @@ -504,7 +504,7 @@ LIMIT 5
#// let actual = execute_to_batches(&ctx, sql).await;
#// let expected = vec![
#// "+----------------------------+-----------------+",
#// "| SUM(aggregate_test_100.c4) | COUNT(Int64(1)) |",
#// "| SUM(aggregate_test_100.c4) | count(1) as count(Int64(1))|",
#// "+----------------------------+-----------------+",
#// "| -33822 | 3|",
#// "| 20808 | 3|",
Expand Down
Loading