From 9bdbe82c78d25d88cfc6921b6d7e4cf41057db70 Mon Sep 17 00:00:00 2001 From: Bruce Ritchie Date: Tue, 12 Nov 2024 16:33:19 +0000 Subject: [PATCH 1/2] Directly support utf8view in nvl. #13381 --- datafusion/functions/src/core/nvl.rs | 1 + datafusion/sqllogictest/test_files/nvl.slt | 30 +++++++++++++++++++ .../test_files/string/string_view.slt | 8 +++++ 3 files changed, 39 insertions(+) diff --git a/datafusion/functions/src/core/nvl.rs b/datafusion/functions/src/core/nvl.rs index 16438e1b6254..24b6f5fc14fe 100644 --- a/datafusion/functions/src/core/nvl.rs +++ b/datafusion/functions/src/core/nvl.rs @@ -47,6 +47,7 @@ static SUPPORTED_NVL_TYPES: &[DataType] = &[ DataType::Int64, DataType::Float32, DataType::Float64, + DataType::Utf8View, DataType::Utf8, DataType::LargeUtf8, ]; diff --git a/datafusion/sqllogictest/test_files/nvl.slt b/datafusion/sqllogictest/test_files/nvl.slt index 81e79e1eb5b0..daab54307cc2 100644 --- a/datafusion/sqllogictest/test_files/nvl.slt +++ b/datafusion/sqllogictest/test_files/nvl.slt @@ -118,3 +118,33 @@ query I SELECT NVL(NULL, NULL); ---- NULL + +query T +SELECT NVL(arrow_cast(text_field, 'Utf8View'), 'zxb') FROM test; +---- +abc +def +ghij +zxb +zxc +zxb + +query T +SELECT NVL(arrow_cast('a', 'Utf8View'), 'zxb'); +---- +a + +query T +SELECT NVL('zxb', arrow_cast('a', 'Utf8View')); +---- +zxb + +query T +SELECT NVL(NULL, arrow_cast('a', 'Utf8View')); +---- +a + +query T +SELECT NVL(arrow_cast('a', 'Utf8View'), NULL); +---- +a diff --git a/datafusion/sqllogictest/test_files/string/string_view.slt b/datafusion/sqllogictest/test_files/string/string_view.slt index ce8a295373aa..7dadd3a56ecb 100644 --- a/datafusion/sqllogictest/test_files/string/string_view.slt +++ b/datafusion/sqllogictest/test_files/string/string_view.slt @@ -934,6 +934,14 @@ logical_plan 01)Projection: to_timestamp(test.column1_utf8view, Utf8("a,b,c,d")) AS c 02)--TableScan: test projection=[column1_utf8view] +## Ensure no casts for NVL +query TT +EXPLAIN SELECT NVL(column1_utf8view, 'a') as c2 FROM test; +---- +logical_plan +01)Projection: nvl(test.column1_utf8view, Utf8View("a")) AS c2 +02)--TableScan: test projection=[column1_utf8view] + ## Ensure no casts for binary operators # `~` operator (regex match) query TT From fe2bf7061656e4cccbb22dabf2515597c93f2f16 Mon Sep 17 00:00:00 2001 From: Bruce Ritchie Date: Fri, 15 Nov 2024 15:05:40 +0000 Subject: [PATCH 2/2] Fix what looks like a merge error. --- datafusion/sqllogictest/test_files/string/string_view.slt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/datafusion/sqllogictest/test_files/string/string_view.slt b/datafusion/sqllogictest/test_files/string/string_view.slt index 5bb8aa3ba616..12295a01a9f1 100644 --- a/datafusion/sqllogictest/test_files/string/string_view.slt +++ b/datafusion/sqllogictest/test_files/string/string_view.slt @@ -944,10 +944,11 @@ logical_plan 02)--TableScan: test projection=[column1_utf8view] ## Ensure no casts for nullif -query error DataFusion error: SQL error: ParserError\("Expected: an SQL statement, found: logical_plan"\) +query TT EXPLAIN SELECT nullif(column1_utf8view, 'a') as c FROM test; +---- logical_plan 01)Projection: nullif(test.column1_utf8view, Utf8View("a")) AS c 02)--TableScan: test projection=[column1_utf8view]