Skip to content
Merged
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
7 changes: 5 additions & 2 deletions datafusion/sqllogictest/src/test_context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -573,14 +573,17 @@ fn register_union_table(ctx: &SessionContext) {
],
)
.unwrap(),
ScalarBuffer::from(vec![3, 1, 3]),
ScalarBuffer::from(vec![3, 1, 3, 3, 1, 3]),
None,
vec![
Arc::new(Int32Array::from(vec![1, 2, 3])),
Arc::new(Int32Array::from(vec![1, 2, 3, 1, 5, 3])),
Arc::new(StringArray::from(vec![
Some("foo"),
Some("bar"),
Some("baz"),
Some("qux"),
Some("bar"),
Some("quux"),
])),
],
)
Expand Down
47 changes: 47 additions & 0 deletions datafusion/sqllogictest/test_files/union_function.slt
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ select union_column, union_extract(union_column, 'int') from union_table;
{int=1} 1
{string=bar} NULL
{int=3} 3
{int=1} 1
{string=bar} NULL
{int=3} 3

query error DataFusion error: Execution error: field bool not found on union
select union_extract(union_column, 'bool') from union_table;
Expand Down Expand Up @@ -56,6 +59,9 @@ select union_column, union_tag(union_column) from union_table;
{int=1} int
{string=bar} string
{int=3} int
{int=1} int
{string=bar} string
{int=3} int

query error DataFusion error: Error during planning: 'union_tag' does not support zero arguments
select union_tag() from union_table;
Expand All @@ -65,3 +71,44 @@ select union_tag(union_column, 'int') from union_table;

query error DataFusion error: Execution error: union_tag only support unions, got Utf8
select union_tag('int') from union_table;

##########
## UNION Hashing Tests
##########

query ?I
select union_column, count(*)
from union_table
group by union_column
order by union_column;
----
{string=bar} 2
{int=1} 2
{int=3} 2

query ?
select distinct union_column
from union_table
order by union_column;
----
{string=bar}
{int=1}
{int=3}

query I
select count(distinct union_column) from union_table;
----
3

query ?II
select
union_column,
count(*),
sum(union_extract(union_column, 'int'))
from union_table
group by union_column
order by union_column;
----
{string=bar} 2 NULL
{int=1} 2 2
{int=3} 2 6
Loading