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/datafusion.git


The following commit(s) were added to refs/heads/main by this push:
     new 98c483eed8 Minor: make unsupported `nanosecond` part a real (not 
internal) error (#13733)
98c483eed8 is described below

commit 98c483eed8681c5f16a8028be64c556191c3687f
Author: Andrew Lamb <[email protected]>
AuthorDate: Thu Dec 12 16:17:36 2024 -0500

    Minor: make unsupported `nanosecond` part a real (not internal) error 
(#13733)
    
    * Minor: make unsupported `nanosecond` part a real (not internal) error
    
    * fmt
    
    * Improve wording to refer to date part
---
 datafusion/functions/src/datetime/date_part.rs       |  9 ++++++---
 .../sqllogictest/test_files/expr/date_part.slt       | 20 ++++++++++----------
 2 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/datafusion/functions/src/datetime/date_part.rs 
b/datafusion/functions/src/datetime/date_part.rs
index b8c58a11d9..6d6adf2a34 100644
--- a/datafusion/functions/src/datetime/date_part.rs
+++ b/datafusion/functions/src/datetime/date_part.rs
@@ -35,7 +35,9 @@ use datafusion_common::cast::{
     as_timestamp_microsecond_array, as_timestamp_millisecond_array,
     as_timestamp_nanosecond_array, as_timestamp_second_array,
 };
-use datafusion_common::{exec_err, internal_err, ExprSchema, Result, 
ScalarValue};
+use datafusion_common::{
+    exec_err, internal_err, not_impl_err, ExprSchema, Result, ScalarValue,
+};
 use datafusion_expr::scalar_doc_sections::DOC_SECTION_DATETIME;
 use datafusion_expr::TypeSignature::Exact;
 use datafusion_expr::{
@@ -290,9 +292,10 @@ fn get_date_part_doc() -> &'static Documentation {
 /// result to a total number of seconds, milliseconds, microseconds or
 /// nanoseconds
 fn seconds_as_i32(array: &dyn Array, unit: TimeUnit) -> Result<ArrayRef> {
-    // Nanosecond is neither supported in Postgres nor DuckDB, to avoid to 
deal with overflow and precision issue we don't support nanosecond
+    // Nanosecond is neither supported in Postgres nor DuckDB, to avoid dealing
+    // with overflow and precision issue we don't support nanosecond
     if unit == Nanosecond {
-        return internal_err!("unit {unit:?} not supported");
+        return not_impl_err!("Date part {unit:?} not supported");
     }
 
     let conversion_factor = match unit {
diff --git a/datafusion/sqllogictest/test_files/expr/date_part.slt 
b/datafusion/sqllogictest/test_files/expr/date_part.slt
index cec80a165f..1d79ac3959 100644
--- a/datafusion/sqllogictest/test_files/expr/date_part.slt
+++ b/datafusion/sqllogictest/test_files/expr/date_part.slt
@@ -225,7 +225,7 @@ SELECT EXTRACT(microsecond FROM timestamp 
'2020-09-08T12:00:12.12345678+00:00')
 ----
 12123456
 
-query error DataFusion error: Internal error: unit Nanosecond not supported
+query error DataFusion error: This feature is not implemented: Date part 
Nanosecond not supported
 SELECT EXTRACT(nanosecond FROM timestamp '2020-09-08T12:00:12.12345678+00:00')
 
 query I
@@ -243,7 +243,7 @@ SELECT EXTRACT("microsecond" FROM timestamp 
'2020-09-08T12:00:12.12345678+00:00'
 ----
 12123456
 
-query error DataFusion error: Internal error: unit Nanosecond not supported
+query error DataFusion error: This feature is not implemented: Date part 
Nanosecond not supported
 SELECT EXTRACT("nanosecond" FROM timestamp 
'2020-09-08T12:00:12.12345678+00:00')
 
 query I
@@ -261,7 +261,7 @@ SELECT EXTRACT('microsecond' FROM timestamp 
'2020-09-08T12:00:12.12345678+00:00'
 ----
 12123456
 
-query error DataFusion error: Internal error: unit Nanosecond not supported
+query error DataFusion error: This feature is not implemented: Date part 
Nanosecond not supported
 SELECT EXTRACT('nanosecond' FROM timestamp 
'2020-09-08T12:00:12.12345678+00:00')
 
 
@@ -281,7 +281,7 @@ SELECT date_part('microsecond', timestamp 
'2020-09-08T12:00:12.12345678+00:00')
 ----
 12123456
 
-query error DataFusion error: Internal error: unit Nanosecond not supported
+query error DataFusion error: This feature is not implemented: Date part 
Nanosecond not supported
 SELECT date_part('nanosecond', timestamp '2020-09-08T12:00:12.12345678+00:00')
 
 
@@ -300,7 +300,7 @@ SELECT date_part('microsecond', 
'2020-09-08T12:00:12.12345678+00:00')
 ----
 12123456
 
-query error DataFusion error: Internal error: unit Nanosecond not supported
+query error DataFusion error: This feature is not implemented: Date part 
Nanosecond not supported
 SELECT date_part('nanosecond', '2020-09-08T12:00:12.12345678+00:00')
 
 # test_date_part_time
@@ -356,7 +356,7 @@ SELECT extract(microsecond from 
arrow_cast('23:32:50'::time, 'Time32(Second)'))
 ----
 50000000
 
-query error DataFusion error: Internal error: unit Nanosecond not supported
+query error DataFusion error: This feature is not implemented: Date part 
Nanosecond not supported
 SELECT extract(nanosecond from arrow_cast('23:32:50'::time, 'Time32(Second)'))
 
 query R
@@ -420,7 +420,7 @@ SELECT extract(microsecond from 
arrow_cast('23:32:50.123'::time, 'Time32(Millise
 ----
 50123000
 
-query error DataFusion error: Internal error: unit Nanosecond not supported
+query error DataFusion error: This feature is not implemented: Date part 
Nanosecond not supported
 SELECT extract(nanosecond from arrow_cast('23:32:50.123'::time, 
'Time32(Millisecond)'))
 
 query R
@@ -484,7 +484,7 @@ SELECT extract(microsecond from 
arrow_cast('23:32:50.123456'::time, 'Time64(Micr
 ----
 50123456
 
-query error DataFusion error: Internal error: unit Nanosecond not supported
+query error DataFusion error: This feature is not implemented: Date part 
Nanosecond not supported
 SELECT extract(nanosecond from arrow_cast('23:32:50.123456'::time, 
'Time64(Microsecond)'))
 
 query R
@@ -564,7 +564,7 @@ SELECT extract(us from 
arrow_cast('23:32:50.123456789'::time, 'Time64(Nanosecond
 ----
 50123456
 
-query error DataFusion error: Internal error: unit Nanosecond not supported
+query error DataFusion error: This feature is not implemented: Date part 
Nanosecond not supported
 SELECT date_part('nanosecond', arrow_cast('23:32:50.123456789'::time, 
'Time64(Nanosecond)'))
 
 query R
@@ -874,5 +874,5 @@ SELECT (date_part('microsecond', now()) = 
EXTRACT(microsecond FROM now()))
 ----
 true
 
-query error DataFusion error: Internal error: unit Nanosecond not supported
+query error DataFusion error: This feature is not implemented: Date part 
Nanosecond not supported
 SELECT (date_part('nanosecond', now()) = EXTRACT(nanosecond FROM now()))


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to