From 0272f929806c129410094ff677363ea8147aed7e Mon Sep 17 00:00:00 2001 From: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> Date: Tue, 13 Feb 2024 02:09:56 +0400 Subject: [PATCH] feat: Support `TimestampNanosecond` in `CASE` --- datafusion/physical-expr/src/expressions/case.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/datafusion/physical-expr/src/expressions/case.rs b/datafusion/physical-expr/src/expressions/case.rs index d269adf02144..697abb4c84cc 100644 --- a/datafusion/physical-expr/src/expressions/case.rs +++ b/datafusion/physical-expr/src/expressions/case.rs @@ -21,7 +21,7 @@ use crate::expressions::try_cast; use crate::PhysicalExpr; use arrow::array::{self, *}; use arrow::compute::{and, cast, eq_dyn, is_null, not, or, or_kleene}; -use arrow::datatypes::{DataType, Schema}; +use arrow::datatypes::{DataType, Schema, TimeUnit}; use arrow::record_batch::RecordBatch; use datafusion_common::{DataFusionError, Result}; use datafusion_expr::{binary_rule::coerce_types, ColumnarValue, Operator}; @@ -254,6 +254,13 @@ fn if_then_else( true_values, false_values ), + DataType::Timestamp(TimeUnit::Nanosecond, None) => if_then_else!( + array::TimestampNanosecondBuilder, + array::TimestampNanosecondArray, + bools, + true_values, + false_values + ), other => Err(DataFusionError::Execution(format!( "CASE does not support '{:?}'", other