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]