Skip to content

Commit 7fcd306

Browse files
authored
chore(query): bump jiff crate (#17366)
* update * update * chore(query): bump jiff crate * chore(query): bump jiff crate * chore(query): bump jiff crate * chore(query): bump jiff crate * chore(query): bump jiff crate * chore(query): bump jiff crate * chore(query): bump jiff crate * chore(query): bump jiff crate * support %c %X %x * support %c %X %x
1 parent 9d750a1 commit 7fcd306

File tree

23 files changed

+357
-412
lines changed

23 files changed

+357
-412
lines changed

Cargo.lock

Lines changed: 20 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ jaq-core = "1.5.1"
334334
jaq-interpret = "1.5.0"
335335
jaq-parse = "1.0.3"
336336
jaq-std = "1.6.0"
337-
jiff = { version = "0.1.14", features = ["serde", "tzdb-bundle-always"] }
337+
jiff = { version = "0.1.26", features = ["serde", "tzdb-bundle-always"] }
338338
jsonb = "0.4.4"
339339
jwt-simple = { version = "0.12.10", default-features = false, features = ["pure-rust"] }
340340
lenient_semver = "0.4.2"

src/common/io/src/cursor_ext/cursor_read_datetime_ext.rs

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ pub enum DateTimeResType {
4141
}
4242

4343
pub trait BufferReadDateTimeExt {
44-
fn read_date_text(&mut self, jiff_tz: &TimeZone) -> Result<Date>;
45-
fn read_timestamp_text(&mut self, jiff_tz: &TimeZone) -> Result<DateTimeResType>;
44+
fn read_date_text(&mut self, tz: &TimeZone) -> Result<Date>;
45+
fn read_timestamp_text(&mut self, tz: &TimeZone) -> Result<DateTimeResType>;
4646
fn parse_time_offset(
4747
&mut self,
4848
tz: &TimeZone,
@@ -51,11 +51,7 @@ pub trait BufferReadDateTimeExt {
5151
west_tz: bool,
5252
calc_offset: impl Fn(i64, i64, &Zoned) -> Result<Zoned>,
5353
) -> Result<Zoned>;
54-
fn read_text_to_datetime(
55-
&mut self,
56-
jiff_tz: &TimeZone,
57-
need_date: bool,
58-
) -> Result<DateTimeResType>;
54+
fn read_text_to_datetime(&mut self, tz: &TimeZone, need_date: bool) -> Result<DateTimeResType>;
5955
}
6056

6157
const DATE_LEN: usize = 10;
@@ -75,17 +71,16 @@ fn parse_time_part(buf: &[u8], size: usize) -> Result<u32> {
7571
impl<T> BufferReadDateTimeExt for Cursor<T>
7672
where T: AsRef<[u8]>
7773
{
78-
fn read_date_text(&mut self, jiff_tz: &TimeZone) -> Result<Date> {
74+
fn read_date_text(&mut self, tz: &TimeZone) -> Result<Date> {
7975
// TODO support YYYYMMDD format
80-
self.read_text_to_datetime(jiff_tz, true)
81-
.map(|dt| match dt {
82-
DateTimeResType::Date(nd) => nd,
83-
DateTimeResType::Datetime(dt) => dt.date(),
84-
})
76+
self.read_text_to_datetime(tz, true).map(|dt| match dt {
77+
DateTimeResType::Date(nd) => nd,
78+
DateTimeResType::Datetime(dt) => dt.date(),
79+
})
8580
}
8681

87-
fn read_timestamp_text(&mut self, jiff_tz: &TimeZone) -> Result<DateTimeResType> {
88-
self.read_text_to_datetime(jiff_tz, false)
82+
fn read_timestamp_text(&mut self, tz: &TimeZone) -> Result<DateTimeResType> {
83+
self.read_text_to_datetime(tz, false)
8984
}
9085

9186
// Only support HH:mm format
@@ -199,11 +194,7 @@ where T: AsRef<[u8]>
199194
}
200195
}
201196

202-
fn read_text_to_datetime(
203-
&mut self,
204-
jiff_tz: &TimeZone,
205-
need_date: bool,
206-
) -> Result<DateTimeResType> {
197+
fn read_text_to_datetime(&mut self, tz: &TimeZone, need_date: bool) -> Result<DateTimeResType> {
207198
// Date Part YYYY-MM-DD
208199
let mut buf = vec![0; DATE_LEN];
209200
self.read_exact(buf.as_mut_slice())?;
@@ -251,11 +242,11 @@ where T: AsRef<[u8]>
251242
// Examples: '2022-02-02T', '2022-02-02 ', '2022-02-02T02', '2022-02-02T3:', '2022-02-03T03:13', '2022-02-03T03:13:'
252243
if times.len() < 3 {
253244
times.resize(3, 0);
254-
let dt = get_local_time(jiff_tz, &d, &mut times)?;
245+
let dt = get_local_time(tz, &d, &mut times)?;
255246
return Ok(DateTimeResType::Datetime(dt));
256247
}
257248

258-
let dt = get_local_time(jiff_tz, &d, &mut times)?;
249+
let dt = get_local_time(tz, &d, &mut times)?;
259250

260251
// ms .microseconds
261252
let dt = if self.ignore_byte(b'.') {
@@ -296,7 +287,7 @@ where T: AsRef<[u8]>
296287
.map_err_to_code(ErrorCode::BadBytes, || {
297288
format!("Datetime {} add offset {} with error", dt, offset)
298289
})?
299-
.to_zoned(jiff_tz.clone()))
290+
.to_zoned(tz.clone()))
300291
};
301292
if self.ignore(|b| b == b'z' || b == b'Z') {
302293
// ISO 8601 The Z on the end means UTC (that is, an offset-from-UTC of zero hours-minutes-seconds).
@@ -308,15 +299,15 @@ where T: AsRef<[u8]>
308299
)?))
309300
} else if self.ignore_byte(b'+') {
310301
Ok(DateTimeResType::Datetime(self.parse_time_offset(
311-
jiff_tz,
302+
tz,
312303
&mut buf,
313304
&dt,
314305
false,
315306
calc_offset,
316307
)?))
317308
} else if self.ignore_byte(b'-') {
318309
Ok(DateTimeResType::Datetime(self.parse_time_offset(
319-
jiff_tz,
310+
tz,
320311
&mut buf,
321312
&dt,
322313
true,
@@ -332,7 +323,7 @@ where T: AsRef<[u8]>
332323
Ok(DateTimeResType::Date(d))
333324
} else {
334325
Ok(DateTimeResType::Datetime(
335-
d.to_zoned(jiff_tz.clone())
326+
d.to_zoned(tz.clone())
336327
.map_err_to_code(ErrorCode::BadBytes, || {
337328
format!("Failed to parse date {} as timestamp.", d)
338329
})?,

src/common/io/tests/it/cursor_ext/read_datetime_ext.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ fn test_read_timestamp_text() -> Result<()> {
2323
let mut reader = Cursor::new(
2424
"2023-12-25T02:31:07.485281+0545,2023-12-25T02:31:07.485281-0545,2023-12-25T02:31:07.485281+05,2023-12-25T02:31:07.485281-05,2009-01-01 00:00:00.12,2009-01-01 00:00:00.1234,2009-01-01 00:00:00.1234567891,2022-02-02T,2022-02-02 12,2022-02-02T13:4:,2022-02-02 12:03,2023-03-03,2022-02-02,2009-01-01 3:2:1.123,2009-01-01 0:00:00,2009-01-01 00:00:00.123,2009-01-01 00:00:00.123456,0002-03-03T00:01:02,2022-03-04T00:01:02+08:00,2022-03-04T00:01:02-08:00,0000-00-00,0000-00-00 00:00:00,0001-01-01 00:00:00,2020-01-01T11:11:11Z,2009-01-03 00:00:00,2020-01-01T11:11:11.123Z,2055-02-03 10:00:20.234+08:00,2055-02-03 10:00:20.234-08:00,1022-05-16T03:25:02.000000+08:00".as_bytes(),
2525
);
26-
let jiff_tz = TimeZone::UTC;
26+
let tz = TimeZone::UTC;
2727
let expected = [
2828
"2023-12-24T20:46:07.485281+00:00[UTC]",
2929
"2023-12-25T08:16:07.485281+00:00[UTC]",
@@ -57,7 +57,7 @@ fn test_read_timestamp_text() -> Result<()> {
5757
];
5858
let mut res = vec![];
5959
for _ in 0..expected.len() {
60-
let time = reader.read_timestamp_text(&jiff_tz)?;
60+
let time = reader.read_timestamp_text(&tz)?;
6161
if let DateTimeResType::Datetime(time) = time {
6262
res.push(format!("{:?}", time));
6363
reader.ignore_byte(b',');
@@ -70,14 +70,14 @@ fn test_read_timestamp_text() -> Result<()> {
7070
#[test]
7171
fn test_read_dst_timestamp_text() -> Result<()> {
7272
let mut reader = Cursor::new("1947-04-15 01:00:00,1990-09-16 01:00:00".as_bytes());
73-
let jiff_tz = TimeZone::get("Asia/Shanghai").unwrap();
73+
let tz = TimeZone::get("Asia/Shanghai").unwrap();
7474
let expected = [
7575
"\"1947-04-15T01:00:00+09:00[Asia/Shanghai]\"",
7676
"\"1990-09-16T01:00:00+09:00[Asia/Shanghai]\"",
7777
];
7878
let mut res = vec![];
7979
for _ in 0..expected.len() {
80-
let time = reader.read_timestamp_text(&jiff_tz)?;
80+
let time = reader.read_timestamp_text(&tz)?;
8181
if let DateTimeResType::Datetime(time) = time {
8282
res.push(format!("{:?}", time.to_string()));
8383
reader.ignore_byte(b',');
@@ -89,7 +89,7 @@ fn test_read_dst_timestamp_text() -> Result<()> {
8989
let expected2 = ["\"1990-09-16T01:00:00+09:00[Asia/Shanghai]\""];
9090
let mut res = vec![];
9191
for _ in 0..expected2.len() {
92-
let time = reader.read_timestamp_text(&jiff_tz)?;
92+
let time = reader.read_timestamp_text(&tz)?;
9393
if let DateTimeResType::Datetime(time) = time {
9494
res.push(format!("{:?}", time.to_string()));
9595
reader.ignore_byte(b',');
@@ -102,7 +102,7 @@ fn test_read_dst_timestamp_text() -> Result<()> {
102102
#[test]
103103
fn test_read_date_text() -> Result<()> {
104104
let mut reader = Cursor::new("2009-01-01,1000-01-01,2023-03-03,2022-02-02,2009-01-01 3:2:1.123,2009-01-01 0:00:00,2009-01-01 00:00:00.123,2009-01-01 00:00:00.123456,0002-03-03T00:01:02,2022-03-04T00:01:02+08:00,2022-03-04T00:01:02-08:00,0000-00-00,0000-00-00 00:00:00,0001-01-01 00:00:00,2020-01-01T11:11:11Z,2009-01-03 00:00:00,2020-01-01T11:11:11.123Z,2055-02-03 10:00:20.234+08:00,2055-02-03 10:00:20.234-08:00,1022-05-16T03:25:02.000000+08:00,2055-01-01".as_bytes());
105-
let jiff_tz = TimeZone::get("UTC").unwrap();
105+
let tz = TimeZone::get("UTC").unwrap();
106106
let expected = [
107107
"2009-01-01",
108108
"1000-01-01",
@@ -129,7 +129,7 @@ fn test_read_date_text() -> Result<()> {
129129

130130
let mut res = vec![];
131131
for _ in 0..expected.len() {
132-
let date = reader.read_date_text(&jiff_tz)?;
132+
let date = reader.read_date_text(&tz)?;
133133
res.push(format!("{:?}", date));
134134
let _ = reader.ignore_byte(b',');
135135
}

src/query/expression/Cargo.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ async-backtrace = { workspace = true }
2222
base64 = { workspace = true }
2323
borsh = { workspace = true, features = ["derive"] }
2424
bumpalo = { workspace = true }
25-
chrono = { workspace = true }
26-
chrono-tz = { workspace = true }
2725
comfy-table = { workspace = true }
2826
databend-common-ast = { workspace = true }
2927
databend-common-base = { workspace = true }

src/query/expression/src/function.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ use std::ops::BitOr;
1919
use std::ops::Not;
2020
use std::sync::Arc;
2121

22-
use chrono_tz::Tz;
2322
use databend_common_ast::Span;
2423
use databend_common_column::bitmap::Bitmap;
2524
use databend_common_column::bitmap::MutableBitmap;
@@ -96,8 +95,7 @@ pub enum FunctionEval {
9695

9796
#[derive(Clone)]
9897
pub struct FunctionContext {
99-
pub tz: Tz,
100-
pub jiff_tz: TimeZone,
98+
pub tz: TimeZone,
10199
pub now: Zoned,
102100
pub rounding_mode: bool,
103101
pub disable_variant_check: bool,
@@ -118,8 +116,7 @@ pub struct FunctionContext {
118116
impl Default for FunctionContext {
119117
fn default() -> Self {
120118
FunctionContext {
121-
tz: Tz::UTC,
122-
jiff_tz: TimeZone::UTC,
119+
tz: TimeZone::UTC,
123120
now: Default::default(),
124121
rounding_mode: false,
125122
disable_variant_check: false,

src/query/expression/src/types/date.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,10 +261,10 @@ impl ArgType for DateType {
261261
#[inline]
262262
pub fn string_to_date(
263263
date_str: impl AsRef<[u8]>,
264-
jiff_tz: &TimeZone,
264+
tz: &TimeZone,
265265
) -> databend_common_exception::Result<Date> {
266266
let mut reader = Cursor::new(std::str::from_utf8(date_str.as_ref()).unwrap().as_bytes());
267-
match reader.read_date_text(jiff_tz) {
267+
match reader.read_date_text(tz) {
268268
Ok(d) => match reader.must_eof() {
269269
Ok(..) => Ok(d),
270270
Err(_) => Err(ErrorCode::BadArguments("unexpected argument")),

src/query/expression/src/types/timestamp.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -274,10 +274,10 @@ pub fn microseconds_to_days(micros: i64) -> i32 {
274274
#[inline]
275275
pub fn string_to_timestamp(
276276
ts_str: impl AsRef<[u8]>,
277-
jiff_tz: &TimeZone,
277+
tz: &TimeZone,
278278
) -> databend_common_exception::Result<Zoned> {
279279
let mut reader = Cursor::new(std::str::from_utf8(ts_str.as_ref()).unwrap().as_bytes());
280-
match reader.read_timestamp_text(jiff_tz) {
280+
match reader.read_timestamp_text(tz) {
281281
Ok(dt) => match dt {
282282
DateTimeResType::Datetime(dt) => match reader.must_eof() {
283283
Ok(..) => Ok(dt),

0 commit comments

Comments
 (0)