You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by dh...@apache.org on 2023/06/27 11:32:17 UTC
[arrow-datafusion] branch main updated: Enable IsDistinctFrom and IsNotDistinctFrom on interval types (#6776)
This is an automated email from the ASF dual-hosted git repository.
dheres pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-datafusion.git
The following commit(s) were added to refs/heads/main by this push:
new 143ef16bff Enable IsDistinctFrom and IsNotDistinctFrom on interval types (#6776)
143ef16bff is described below
commit 143ef16bfff1b15949086dab4bdfd1064ff09d64
Author: Georgi Krastev <jo...@gmail.com>
AuthorDate: Tue Jun 27 14:32:12 2023 +0300
Enable IsDistinctFrom and IsNotDistinctFrom on interval types (#6776)
---
.../core/tests/sqllogictests/test_files/interval.slt | 15 +++++++++++++++
datafusion/physical-expr/src/expressions/binary.rs | 9 +++++++++
.../physical-expr/src/expressions/binary/kernels_arrow.rs | 4 ++--
3 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/datafusion/core/tests/sqllogictests/test_files/interval.slt b/datafusion/core/tests/sqllogictests/test_files/interval.slt
index 74ddfbf78d..889e2759b2 100644
--- a/datafusion/core/tests/sqllogictests/test_files/interval.slt
+++ b/datafusion/core/tests/sqllogictests/test_files/interval.slt
@@ -489,5 +489,20 @@ select interval '1 month' + '2012-01-01'::date;
----
2012-02-01
+# is (not) distinct from
+query BBBBBB
+select
+ i is distinct from null,
+ i is distinct from (interval '1 month'),
+ i is distinct from i,
+ i is not distinct from null,
+ i is not distinct from (interval '1 day'),
+ i is not distinct from i
+from t;
+----
+true false false false false true
+true true false false true true
+true true false false false true
+
statement ok
drop table t
diff --git a/datafusion/physical-expr/src/expressions/binary.rs b/datafusion/physical-expr/src/expressions/binary.rs
index 8e9e361596..e3bbefbcd3 100644
--- a/datafusion/physical-expr/src/expressions/binary.rs
+++ b/datafusion/physical-expr/src/expressions/binary.rs
@@ -554,6 +554,15 @@ macro_rules! binary_array_op {
DataType::Time64(TimeUnit::Nanosecond) => {
compute_op!($LEFT, $RIGHT, $OP, Time64NanosecondArray)
}
+ DataType::Interval(IntervalUnit::YearMonth) => {
+ compute_op!($LEFT, $RIGHT, $OP, IntervalYearMonthArray)
+ }
+ DataType::Interval(IntervalUnit::DayTime) => {
+ compute_op!($LEFT, $RIGHT, $OP, IntervalDayTimeArray)
+ }
+ DataType::Interval(IntervalUnit::MonthDayNano) => {
+ compute_op!($LEFT, $RIGHT, $OP, IntervalMonthDayNanoArray)
+ }
DataType::Boolean => compute_bool_op!($LEFT, $RIGHT, $OP, BooleanArray),
other => Err(DataFusionError::Internal(format!(
"Data type {:?} not supported for binary operation '{}' on dyn arrays",
diff --git a/datafusion/physical-expr/src/expressions/binary/kernels_arrow.rs b/datafusion/physical-expr/src/expressions/binary/kernels_arrow.rs
index 4d984ac8e8..ab1b4b376f 100644
--- a/datafusion/physical-expr/src/expressions/binary/kernels_arrow.rs
+++ b/datafusion/physical-expr/src/expressions/binary/kernels_arrow.rs
@@ -99,7 +99,7 @@ pub(crate) fn is_distinct_from<T>(
right: &PrimitiveArray<T>,
) -> Result<BooleanArray>
where
- T: ArrowNumericType,
+ T: ArrowPrimitiveType,
{
distinct(
left,
@@ -140,7 +140,7 @@ fn distinct<
mut op: F,
) -> Result<BooleanArray>
where
- T: ArrowNumericType,
+ T: ArrowPrimitiveType,
{
let left_values = left.values();
let right_values = right.values();