From f19de180087879e1748280d0d4f12d8bf54592bc Mon Sep 17 00:00:00 2001 From: Mikhail Cheshkov Date: Tue, 4 Feb 2025 15:29:27 +0200 Subject: [PATCH] chore(cubesql): Bump chrono and fix deprecation warnings --- packages/cubejs-backend-native/Cargo.lock | 6 +++--- rust/cubenativeutils/Cargo.lock | 4 ++-- rust/cubesql/Cargo.lock | 6 +++--- rust/cubesql/cubesql/Cargo.toml | 2 +- rust/cubesql/cubesql/src/compile/engine/df/scan.rs | 2 +- rust/cubesql/cubesql/src/compile/engine/udf/common.rs | 11 +++++++---- .../cubesql/src/compile/rewrite/rules/filters.rs | 4 ++-- .../cubesql/src/compile/rewrite/rules/utils.rs | 6 +++--- rust/cubesqlplanner/Cargo.lock | 4 ++-- 9 files changed, 24 insertions(+), 21 deletions(-) diff --git a/packages/cubejs-backend-native/Cargo.lock b/packages/cubejs-backend-native/Cargo.lock index 965c9b834449b..975957f1653cc 100644 --- a/packages/cubejs-backend-native/Cargo.lock +++ b/packages/cubejs-backend-native/Cargo.lock @@ -621,9 +621,9 @@ checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone", @@ -631,7 +631,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.48.5", + "windows-targets 0.52.0", ] [[package]] diff --git a/rust/cubenativeutils/Cargo.lock b/rust/cubenativeutils/Cargo.lock index ea0fc681e8e41..611728df97970 100644 --- a/rust/cubenativeutils/Cargo.lock +++ b/rust/cubenativeutils/Cargo.lock @@ -426,9 +426,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone", diff --git a/rust/cubesql/Cargo.lock b/rust/cubesql/Cargo.lock index b31652274001e..2923aa403125a 100644 --- a/rust/cubesql/Cargo.lock +++ b/rust/cubesql/Cargo.lock @@ -398,16 +398,16 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.48.1", + "windows-targets 0.52.6", ] [[package]] diff --git a/rust/cubesql/cubesql/Cargo.toml b/rust/cubesql/cubesql/Cargo.toml index cdb2cb7ea23e2..d30db3f4c0e4d 100644 --- a/rust/cubesql/cubesql/Cargo.toml +++ b/rust/cubesql/cubesql/Cargo.toml @@ -39,7 +39,7 @@ async-trait = "0.1.36" regex = "1.5" uuid = { version = "1", features = ["serde", "v4"] } bincode = "1.3.1" -chrono = "0.4.31" +chrono = "0.4.39" chrono-tz = "0.6" tokio-util = { version = "0.7", features = ["compat"] } comfy-table = "7.1.0" diff --git a/rust/cubesql/cubesql/src/compile/engine/df/scan.rs b/rust/cubesql/cubesql/src/compile/engine/df/scan.rs index afd410898b25c..bd88f6716f77a 100644 --- a/rust/cubesql/cubesql/src/compile/engine/df/scan.rs +++ b/rust/cubesql/cubesql/src/compile/engine/df/scan.rs @@ -1129,7 +1129,7 @@ pub fn transform_response( // TODO switch parsing to microseconds if timestamp.and_utc().timestamp_millis() > (((1i64) << 62) / 1_000_000) { builder.append_null()?; - } else if let Some(nanos) = timestamp.timestamp_nanos_opt() { + } else if let Some(nanos) = timestamp.and_utc().timestamp_nanos_opt() { builder.append_value(nanos)?; } else { log::error!( diff --git a/rust/cubesql/cubesql/src/compile/engine/udf/common.rs b/rust/cubesql/cubesql/src/compile/engine/udf/common.rs index 20f57f81379bb..d957ec36235d2 100644 --- a/rust/cubesql/cubesql/src/compile/engine/udf/common.rs +++ b/rust/cubesql/cubesql/src/compile/engine/udf/common.rs @@ -1669,7 +1669,8 @@ pub fn create_to_char_udf() -> ScalarUDF { let secs = duration.num_seconds(); let nanosecs = duration.num_nanoseconds().unwrap_or(0) - secs * 1_000_000_000; - let timestamp = NaiveDateTime::from_timestamp_opt(secs, nanosecs as u32) + let timestamp = ::chrono::DateTime::from_timestamp(secs, nanosecs as u32) + .map(|dt| dt.naive_utc()) .unwrap_or_else(|| panic!("Invalid secs {} nanosecs {}", secs, nanosecs)); // chrono's strftime is missing quarter format, as such a workaround is required @@ -2316,7 +2317,8 @@ macro_rules! generate_series_udtf { macro_rules! generate_series_helper_date32 { ($CURRENT:ident, $STEP:ident, $PRIMITIVE_TYPE: ident) => { - let current_dt = NaiveDateTime::from_timestamp_opt(($CURRENT as i64) * 86400, 0) + let current_dt = ::chrono::DateTime::from_timestamp(($CURRENT as i64) * 86400, 0) + .map(|dt| dt.naive_utc()) .ok_or_else(|| { DataFusionError::Execution(format!( "Cannot convert date to NaiveDateTime: {}", @@ -2324,16 +2326,17 @@ macro_rules! generate_series_helper_date32 { )) })?; let res = date_addsub_month_day_nano(current_dt, $STEP, true)?; - $CURRENT = (res.timestamp() / 86400) as $PRIMITIVE_TYPE; + $CURRENT = (res.and_utc().timestamp() / 86400) as $PRIMITIVE_TYPE; }; } macro_rules! generate_series_helper_timestamp { ($CURRENT:ident, $STEP:ident, $PRIMITIVE_TYPE: ident) => { - let current_dt = NaiveDateTime::from_timestamp_opt( + let current_dt = ::chrono::DateTime::from_timestamp( ($CURRENT as i64) / 1_000_000_000, ($CURRENT % 1_000_000_000) as u32, ) + .map(|dt| dt.naive_utc()) .ok_or_else(|| { DataFusionError::Execution(format!( "Cannot convert timestamp to NaiveDateTime: {}", diff --git a/rust/cubesql/cubesql/src/compile/rewrite/rules/filters.rs b/rust/cubesql/cubesql/src/compile/rewrite/rules/filters.rs index 39774ce7458ca..09e87492fe7ba 100644 --- a/rust/cubesql/cubesql/src/compile/rewrite/rules/filters.rs +++ b/rust/cubesql/cubesql/src/compile/rewrite/rules/filters.rs @@ -34,7 +34,7 @@ use chrono::{ Numeric::{Day, Hour, Minute, Month, Second, Year}, Pad::Zero, }, - Datelike, Days, Duration, Months, NaiveDate, NaiveDateTime, Timelike, Weekday, + DateTime, Datelike, Days, Duration, Months, NaiveDate, NaiveDateTime, Timelike, Weekday, }; use cubeclient::models::V1CubeMeta; use datafusion::{ @@ -4836,7 +4836,7 @@ impl FilterRules { }; let ts_seconds = *ts / 1_000_000_000; let ts_nanos = (*ts % 1_000_000_000) as u32; - let dt = NaiveDateTime::from_timestamp_opt(ts_seconds, ts_nanos).map(|dt| Some(dt)); + let dt = DateTime::from_timestamp(ts_seconds, ts_nanos).map(|dt| Some(dt.naive_utc())); return dt; }; diff --git a/rust/cubesql/cubesql/src/compile/rewrite/rules/utils.rs b/rust/cubesql/cubesql/src/compile/rewrite/rules/utils.rs index a941bc7cdc6ca..66eed50dc226d 100644 --- a/rust/cubesql/cubesql/src/compile/rewrite/rules/utils.rs +++ b/rust/cubesql/cubesql/src/compile/rewrite/rules/utils.rs @@ -4,7 +4,7 @@ use std::{ sync::Arc, }; -use chrono::{Datelike, NaiveDateTime, Timelike}; +use chrono::{DateTime, Datelike, Timelike, Utc}; use datafusion::{ arrow::datatypes::{ArrowPrimitiveType, IntervalDayTimeType, IntervalMonthDayNanoType}, error::DataFusionError, @@ -457,9 +457,9 @@ pub fn is_literal_date_trunced(ns: i64, granularity: &str) -> Option { return Some(false); } let seconds = ns / ns_in_seconds; - let dt = NaiveDateTime::from_timestamp_opt(seconds, 0)?; + let dt = DateTime::from_timestamp(seconds, 0)?; - let is_minute_trunced = |dt: NaiveDateTime| dt.second() == 0; + let is_minute_trunced = |dt: DateTime| dt.second() == 0; let is_hour_trunced = |dt| is_minute_trunced(dt) && dt.minute() == 0; let is_day_trunced = |dt| is_hour_trunced(dt) && dt.hour() == 0; let is_week_trunced = |dt| is_day_trunced(dt) && dt.weekday().num_days_from_monday() == 0; diff --git a/rust/cubesqlplanner/Cargo.lock b/rust/cubesqlplanner/Cargo.lock index c57ded0ad36e7..0216f885ba32b 100644 --- a/rust/cubesqlplanner/Cargo.lock +++ b/rust/cubesqlplanner/Cargo.lock @@ -436,9 +436,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone",