From 55bf1e3579550ca5cb8b4cd51cdc59f9bf5920f1 Mon Sep 17 00:00:00 2001 From: Ran Reichman Date: Wed, 7 Oct 2026 15:23:34 -0400 Subject: [PATCH] Return NULL from Spark char for a NULL scalar input --- datafusion/spark/src/function/string/char.rs | 3 +++ datafusion/sqllogictest/test_files/spark/string/char.slt | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/datafusion/spark/src/function/string/char.rs b/datafusion/spark/src/function/string/char.rs index 5d6de3ae368e3..6e8666f0b89f4 100644 --- a/datafusion/spark/src/function/string/char.rs +++ b/datafusion/spark/src/function/string/char.rs @@ -100,6 +100,9 @@ fn spark_chr(args: &[ColumnarValue]) -> Result { } } } + ColumnarValue::Scalar(ScalarValue::Int64(None)) => { + Ok(ColumnarValue::Scalar(ScalarValue::Utf8(None))) + } _ => exec_err!("The argument must be an Int64 array or scalar."), } } diff --git a/datafusion/sqllogictest/test_files/spark/string/char.slt b/datafusion/sqllogictest/test_files/spark/string/char.slt index 152ebfe8053e8..47aa1dc844e05 100644 --- a/datafusion/sqllogictest/test_files/spark/string/char.slt +++ b/datafusion/sqllogictest/test_files/spark/string/char.slt @@ -25,6 +25,11 @@ SELECT char(321::INT); ---- A +query T +SELECT char(NULL::INT); +---- +NULL + query T SELECT char(a) FROM (VALUES (-1::INT), (0::INT), (65::INT), (321::INT)) AS t(a); ----