Skip to content

Commit 54d001b

Browse files
committed
add test
1 parent 701394b commit 54d001b

File tree

1 file changed

+29
-2
lines changed

1 file changed

+29
-2
lines changed

crates/iceberg/src/transform/bucket.rs

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,12 +171,12 @@ impl TransformFunction for Bucket {
171171
.as_any()
172172
.downcast_ref::<arrow_array::Time64NanosecondArray>()
173173
.unwrap()
174-
.unary(|v| self.bucket_time(v)),
174+
.unary(|v| self.bucket_time(v / 1000)),
175175
DataType::Timestamp(TimeUnit::Nanosecond, _) => input
176176
.as_any()
177177
.downcast_ref::<arrow_array::TimestampNanosecondArray>()
178178
.unwrap()
179-
.unary(|v| self.bucket_timestamp(v)),
179+
.unary(|v| self.bucket_timestamp(v / 1000)),
180180
DataType::Utf8 => arrow_array::Int32Array::from_iter(
181181
input
182182
.as_any()
@@ -263,6 +263,9 @@ impl TransformFunction for Bucket {
263263

264264
#[cfg(test)]
265265
mod test {
266+
use std::sync::Arc;
267+
268+
use arrow_array::{ArrayRef, Int32Array, TimestampMicrosecondArray, TimestampNanosecondArray};
266269
use chrono::{DateTime, NaiveDate, NaiveDateTime, NaiveTime};
267270

268271
use super::Bucket;
@@ -939,4 +942,28 @@ mod test {
939942
Datum::int(79)
940943
);
941944
}
945+
946+
#[test]
947+
fn test_transform_timestamp_nanos_and_micros_array_equivalence() {
948+
let bucket = Bucket::new(100);
949+
let micros_value = 1510871468000000;
950+
let nanos_value = micros_value * 1000;
951+
952+
let micro_array = TimestampMicrosecondArray::from_iter_values(vec![micros_value]);
953+
let nano_array = TimestampNanosecondArray::from_iter_values(vec![nanos_value]);
954+
955+
let transformed_micro: ArrayRef = bucket.transform(Arc::new(micro_array)).unwrap();
956+
let transformed_nano: ArrayRef = bucket.transform(Arc::new(nano_array)).unwrap();
957+
958+
let micro_result = transformed_micro
959+
.as_any()
960+
.downcast_ref::<Int32Array>()
961+
.unwrap();
962+
let nano_result = transformed_nano
963+
.as_any()
964+
.downcast_ref::<Int32Array>()
965+
.unwrap();
966+
967+
assert_eq!(micro_result.value(0), nano_result.value(0));
968+
}
942969
}

0 commit comments

Comments
 (0)