From 10fe8d97642b9e730c7f400eff326a26e79d187c Mon Sep 17 00:00:00 2001 From: Solomon Date: Thu, 16 Nov 2023 19:03:24 +0100 Subject: [PATCH] fix: deprecations flaged by clippy --- dozer-ingestion/grpc/src/adapter/default.rs | 6 +++++- dozer-ingestion/mysql/src/conversion.rs | 4 ++-- dozer-ingestion/postgres/src/helper.rs | 11 +++++++---- dozer-ingestion/tests/test_suite/connectors/arrow.rs | 5 ++++- dozer-sql/expression/src/datetime.rs | 5 ++++- dozer-sql/expression/src/lib.rs | 2 +- dozer-tests/src/sql_tests/helper/mapper.rs | 5 ++++- dozer-types/src/arrow_types/to_arrow.rs | 8 +++++--- dozer-types/src/field_type.rs | 2 +- 9 files changed, 33 insertions(+), 15 deletions(-) diff --git a/dozer-ingestion/grpc/src/adapter/default.rs b/dozer-ingestion/grpc/src/adapter/default.rs index 6228c8c3ec..1614ffb79b 100644 --- a/dozer-ingestion/grpc/src/adapter/default.rs +++ b/dozer-ingestion/grpc/src/adapter/default.rs @@ -152,7 +152,11 @@ fn map_record(rec: Vec, schema: &Schema) -> Result::from_utc(t, chrono::Utc).into(), + chrono::DateTime::::from_naive_utc_and_offset( + t, + chrono::Utc, + ) + .into(), ) }) .unwrap_or(dozer_types::types::Field::Null), diff --git a/dozer-ingestion/mysql/src/conversion.rs b/dozer-ingestion/mysql/src/conversion.rs index 247e91e8b3..9f08dd114e 100644 --- a/dozer-ingestion/mysql/src/conversion.rs +++ b/dozer-ingestion/mysql/src/conversion.rs @@ -137,7 +137,7 @@ impl<'a> IntoField<'a> for Value { FieldType::Decimal => Field::Decimal(from_value_opt::(value)?), FieldType::Timestamp => { let date_time = from_value_opt::(value)?; - Field::Timestamp(DateTime::from_utc(date_time, Utc.fix())) + Field::Timestamp(DateTime::from_naive_utc_and_offset(date_time, Utc.fix())) } FieldType::Date => Field::Date(from_value_opt::(value)?), FieldType::Json => { @@ -311,7 +311,7 @@ mod tests { Value::Int(9).into_field(&FieldType::Decimal).unwrap() ); assert_eq!( - Field::Timestamp(DateTime::from_utc( + Field::Timestamp(DateTime::from_naive_utc_and_offset( NaiveDateTime::new( NaiveDate::from_ymd_opt(2023, 8, 17).unwrap(), NaiveTime::from_hms_micro_opt(10, 30, 0, 0).unwrap(), diff --git a/dozer-ingestion/postgres/src/helper.rs b/dozer-ingestion/postgres/src/helper.rs index 38995f04a7..b3fabe00d4 100644 --- a/dozer-ingestion/postgres/src/helper.rs +++ b/dozer-ingestion/postgres/src/helper.rs @@ -55,7 +55,10 @@ pub fn postgres_type_to_field( "%Y-%m-%d %H:%M:%S%.f" }; let date = NaiveDateTime::parse_from_str(date_string.as_str(), format)?; - Ok(Field::Timestamp(DateTime::from_utc(date, Utc.fix()))) + Ok(Field::Timestamp(DateTime::from_naive_utc_and_offset( + date, + Utc.fix(), + ))) } Type::TIMESTAMPTZ => { let date: DateTime = DateTime::parse_from_str( @@ -312,7 +315,7 @@ mod tests { let value = rust_decimal::Decimal::from_f64(8.28).unwrap(); test_conversion!("8.28", Type::NUMERIC, Field::Decimal(value)); - let value = DateTime::from_utc( + let value = DateTime::from_naive_utc_and_offset( NaiveDate::from_ymd_opt(2022, 9, 16) .unwrap() .and_hms_opt(5, 56, 29) @@ -325,7 +328,7 @@ mod tests { Field::Timestamp(value) ); - let value = DateTime::from_utc( + let value = DateTime::from_naive_utc_and_offset( NaiveDate::from_ymd_opt(2022, 9, 16) .unwrap() .and_hms_milli_opt(7, 59, 29, 321) @@ -338,7 +341,7 @@ mod tests { Field::Timestamp(value) ); - let value = DateTime::from_utc( + let value = DateTime::from_naive_utc_and_offset( NaiveDate::from_ymd_opt(2022, 9, 16) .unwrap() .and_hms_micro_opt(3, 56, 30, 959787) diff --git a/dozer-ingestion/tests/test_suite/connectors/arrow.rs b/dozer-ingestion/tests/test_suite/connectors/arrow.rs index a118916a2e..c3bc3ec4f1 100644 --- a/dozer-ingestion/tests/test_suite/connectors/arrow.rs +++ b/dozer-ingestion/tests/test_suite/connectors/arrow.rs @@ -410,7 +410,10 @@ fn fields_to_arrow<'a, F: IntoIterator>( let mut builder = arrow::array::TimestampNanosecondArray::builder(count); for field in fields { match field { - Field::Timestamp(value) => builder.append_value(value.timestamp_nanos()), + Field::Timestamp(value) => builder + .append_value(value.timestamp_nanos_opt().expect( + "value can not be represented in a timestamp with nanosecond precision.", + )), Field::Null => builder.append_null(), _ => panic!("Unexpected field type"), } diff --git a/dozer-sql/expression/src/datetime.rs b/dozer-sql/expression/src/datetime.rs index 7fc4fa688a..2c619a63ab 100644 --- a/dozer-sql/expression/src/datetime.rs +++ b/dozer-sql/expression/src/datetime.rs @@ -124,7 +124,10 @@ pub(crate) fn evaluate_date_part( DateTimeField::Second => ts.second().to_i64(), DateTimeField::Millisecond | DateTimeField::Milliseconds => ts.timestamp_millis().to_i64(), DateTimeField::Microsecond | DateTimeField::Microseconds => ts.timestamp_micros().to_i64(), - DateTimeField::Nanoseconds | DateTimeField::Nanosecond => ts.timestamp_nanos().to_i64(), + DateTimeField::Nanoseconds | DateTimeField::Nanosecond => ts + .timestamp_nanos_opt() + .expect("value can not be represented in a timestamp with nanosecond precision.") + .to_i64(), DateTimeField::Quarter => ts.month0().to_i64().map(|m| m / 3 + 1), DateTimeField::Epoch => ts.timestamp().to_i64(), DateTimeField::Week => ts.iso_week().week().to_i64(), diff --git a/dozer-sql/expression/src/lib.rs b/dozer-sql/expression/src/lib.rs index 8a2895779b..4b9ae119bd 100644 --- a/dozer-sql/expression/src/lib.rs +++ b/dozer-sql/expression/src/lib.rs @@ -72,7 +72,7 @@ mod tests { return ArbitraryDateTime(DateTime::default()); } let time = NaiveTime::from_num_seconds_from_midnight_opt(secs, nano).unwrap(); - let datetime = DateTime::::from_local( + let datetime = DateTime::::from_naive_utc_and_offset( NaiveDateTime::new(date.unwrap(), time), timezone_east, ); diff --git a/dozer-tests/src/sql_tests/helper/mapper.rs b/dozer-tests/src/sql_tests/helper/mapper.rs index 36b9a16f92..21ce4cf6d0 100644 --- a/dozer-tests/src/sql_tests/helper/mapper.rs +++ b/dozer-tests/src/sql_tests/helper/mapper.rs @@ -230,7 +230,10 @@ fn get_record_from_json(data: String, schema: &Schema) -> Record { ) .unwrap(); - Field::Timestamp(DateTime::from_utc(naive_date_time, Utc.fix())) + Field::Timestamp(DateTime::from_naive_utc_and_offset( + naive_date_time, + Utc.fix(), + )) } _ => panic!("Unsupported field type: {field_type:?}"), }; diff --git a/dozer-types/src/arrow_types/to_arrow.rs b/dozer-types/src/arrow_types/to_arrow.rs index c740ab4a9e..b19b926a02 100644 --- a/dozer-types/src/arrow_types/to_arrow.rs +++ b/dozer-types/src/arrow_types/to_arrow.rs @@ -87,9 +87,11 @@ pub fn map_record_to_arrow( None as Option, ])) as ArrayRef, (Field::Timestamp(v), FieldType::Timestamp) => { - Arc::new(arrow_array::TimestampNanosecondArray::from_iter_values([ - v.timestamp_nanos() - ])) as ArrayRef + Arc::new(arrow_array::TimestampNanosecondArray::from_iter_values([{ + v.timestamp_nanos_opt().expect( + "value can not be represented in a timestamp with nanosecond precision.", + ) + }])) as ArrayRef } (Field::Null, FieldType::Timestamp) => { Arc::new(arrow_array::TimestampNanosecondArray::from(vec![ diff --git a/dozer-types/src/field_type.rs b/dozer-types/src/field_type.rs index 554c152e77..1f3e7edc2e 100644 --- a/dozer-types/src/field_type.rs +++ b/dozer-types/src/field_type.rs @@ -90,7 +90,7 @@ impl From for Field { impl From for Field { fn from(value: NaiveDateTime) -> Self { - Field::Timestamp(DateTime::from_utc(value, Utc.fix())) + Field::Timestamp(DateTime::from_naive_utc_and_offset(value, Utc.fix())) } }