You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datafusion.apache.org by gi...@apache.org on 2026/07/07 01:00:39 UTC
(datafusion) branch main updated: feat: Support BinaryView type in approx_distinct (#23333)
This is an automated email from the ASF dual-hosted git repository.
github-merge-queue[bot] pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion.git
The following commit(s) were added to refs/heads/main by this push:
new f755cb44fa feat: Support BinaryView type in approx_distinct (#23333)
f755cb44fa is described below
commit f755cb44fa33c69837a8774be862fbfe01e7a100
Author: Michael Kleen <mk...@gmail.com>
AuthorDate: Tue Jul 7 02:49:52 2026 +0200
feat: Support BinaryView type in approx_distinct (#23333)
## Which issue does this PR close?
- Relates to https://github.com/apache/datafusion/issues/22989 but does
not close it. More types are coming.
## Rationale for this change
- Support the `BinaryView` type for `approx_distinct`
- The Arrow type `BinaryView` can be directly supported for
`HLLAccumulator` and `HllGroupsAccumulator`
## What changes are included in this PR?
- Enable `HLLAccumulator` and `HllGroupsAccumulator` to support
`BinaryView`
- Tests for the non-grouped and grouped path as part of `aggregate.slt`
## Are these changes tested?
Yes
## Are there any user-facing changes?
Yes, `approx_distinct` supports now `BinaryView` but no breaking
changes.
---
datafusion/functions-aggregate/src/approx_distinct.rs | 2 ++
datafusion/sqllogictest/test_files/aggregate.slt | 17 +++++++++++++++++
2 files changed, 19 insertions(+)
diff --git a/datafusion/functions-aggregate/src/approx_distinct.rs b/datafusion/functions-aggregate/src/approx_distinct.rs
index 3b74d3b714..a8dbd8611d 100644
--- a/datafusion/functions-aggregate/src/approx_distinct.rs
+++ b/datafusion/functions-aggregate/src/approx_distinct.rs
@@ -798,6 +798,7 @@ impl AggregateUDFImpl for ApproxDistinct {
| DataType::LargeUtf8
| DataType::Utf8View
| DataType::Binary
+ | DataType::BinaryView
| DataType::LargeBinary => Box::new(HLLAccumulator::new()),
DataType::Null => {
Box::new(NoopAccumulator::new(ScalarValue::UInt64(Some(0))))
@@ -866,6 +867,7 @@ fn is_hll_groups_type(data_type: &DataType) -> bool {
| DataType::LargeUtf8
| DataType::Utf8View
| DataType::Binary
+ | DataType::BinaryView
| DataType::LargeBinary
)
}
diff --git a/datafusion/sqllogictest/test_files/aggregate.slt b/datafusion/sqllogictest/test_files/aggregate.slt
index 7f538a9bfe..37ee3d8a95 100644
--- a/datafusion/sqllogictest/test_files/aggregate.slt
+++ b/datafusion/sqllogictest/test_files/aggregate.slt
@@ -1936,6 +1936,23 @@ SELECT g, approx_distinct(arrow_cast(s, 'Utf8View')) FROM approx_distinct_group_
3 0
4 1
+# BinaryView non-grouped
+query I
+SELECT approx_distinct(arrow_cast(arrow_cast(s, 'Binary'), 'BinaryView')) FROM approx_distinct_group_test WHERE g = 2;
+----
+2
+
+
+# BinaryView grouped
+query II
+SELECT g, approx_distinct(arrow_cast(arrow_cast(s, 'Binary'), 'BinaryView')) FROM approx_distinct_group_test GROUP BY g ORDER BY g;
+----
+1 2
+2 2
+3 0
+4 1
+
+
# Integers (Int32): group 1 -> {10,20}=2, group 2 -> {30,40}=2, group 3 -> 0, group 4 -> {50}=1
query II
SELECT g, approx_distinct(i) FROM approx_distinct_group_test GROUP BY g ORDER BY g;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datafusion.apache.org
For additional commands, e-mail: commits-help@datafusion.apache.org