This is an automated email from the ASF dual-hosted git repository.

alamb 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 0433026b56 Support equality and comparison between interval arrays and 
scalars (#6948)
0433026b56 is described below

commit 0433026b569abfcd48b1770f3f4fbcdd799f927f
Author: Georgi Krastev <[email protected]>
AuthorDate: Thu Jul 13 23:32:15 2023 +0300

    Support equality and comparison between interval arrays and scalars (#6948)
    
    Add missing cases for interval types to `binary_array_op_dyn_scalar`.
    Also added tests for the array-array and scalar-scalar cases
    that already work today but seem untested.
---
 .../tests/sqllogictests/test_files/interval.slt    | 35 ++++++++++++++++++++++
 datafusion/physical-expr/src/expressions/binary.rs |  3 ++
 2 files changed, 38 insertions(+)

diff --git a/datafusion/core/tests/sqllogictests/test_files/interval.slt 
b/datafusion/core/tests/sqllogictests/test_files/interval.slt
index 9dd56c4636..1016cb155e 100644
--- a/datafusion/core/tests/sqllogictests/test_files/interval.slt
+++ b/datafusion/core/tests/sqllogictests/test_files/interval.slt
@@ -522,5 +522,40 @@ true false false false false true
 true true false false true true
 true true false false false true
 
+### interval (array) cmp interval (array)
+query BBBBBB
+select i = i, i != i, i < i, i <= i, i > i, i >= i from t;
+----
+true false false true false true
+true false false true false true
+true false false true false true
+
+### interval (array) cmp interval (scalar)
+query BBBBBB
+select
+    (interval '1 day') = i,
+    (interval '1 day') != i,
+    i < (interval '1 day'),
+    i <= (interval '1 day'),
+    i > (interval '1 day'),
+    i >= (interval '1 day')
+from t;
+----
+false true false false true true
+true false false true false true
+false true true true false false
+
+### interval (scalar) cmp interval (scalar)
+query BBBBBB
+select
+    (interval '1 day') = (interval '1 day'),
+    (interval '1 month') != (interval '1 day'),
+    (interval '1 minute') < (interval '1 day'),
+    (interval '1 hour') <= (interval '1 day'),
+    (interval '1 year') > (interval '1 day'),
+    (interval '1 day') >= (interval '1 day');
+----
+true true true true true 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 6132b7a954..9d2087a0c5 100644
--- a/datafusion/physical-expr/src/expressions/binary.rs
+++ b/datafusion/physical-expr/src/expressions/binary.rs
@@ -1035,6 +1035,9 @@ macro_rules! binary_array_op_dyn_scalar {
             ScalarValue::TimestampMillisecond(v, _) => 
compute_op_dyn_scalar!($LEFT, v, $OP, $OP_TYPE),
             ScalarValue::TimestampMicrosecond(v, _) => 
compute_op_dyn_scalar!($LEFT, v, $OP, $OP_TYPE),
             ScalarValue::TimestampNanosecond(v, _) => 
compute_op_dyn_scalar!($LEFT, v, $OP, $OP_TYPE),
+            ScalarValue::IntervalYearMonth(v) => compute_op_dyn_scalar!($LEFT, 
v, $OP, $OP_TYPE),
+            ScalarValue::IntervalDayTime(v) => compute_op_dyn_scalar!($LEFT, 
v, $OP, $OP_TYPE),
+            ScalarValue::IntervalMonthDayNano(v) => 
compute_op_dyn_scalar!($LEFT, v, $OP, $OP_TYPE),
             other => Err(DataFusionError::Internal(format!(
                 "Data type {:?} not supported for scalar operation '{}' on dyn 
array",
                 other, stringify!($OP)))

Reply via email to