bug fixes

This commit is contained in:
Cam Zalewski 2026-05-20 18:29:19 +01:00
parent a1a621ddfd
commit a1ec8ba292
6 changed files with 51 additions and 23 deletions

View file

@ -1,6 +1,5 @@
//! Arrow projection: converts decoded q `Value` trees into Arrow arrays.
use std::mem::size_of;
use std::ptr::NonNull;
use std::sync::Arc;
@ -601,9 +600,9 @@ fn project_vector(vector: &Vector, opts: &ProjectionOptions) -> ProjectionResult
validity = merge_infinity_i64(src, Q_INF_TIMESTAMP, Q_NINF_TIMESTAMP, validity);
}
let nulls = to_null_buffer(validity);
let mut bytes_buf = vec![0u8; src.len() * size_of::<i64>()];
copy_and_offset_timestamps(src, bytemuck::cast_slice_mut(&mut bytes_buf));
let buf = Buffer::from_vec(bytes_buf);
let mut typed_buf = vec![0i64; src.len()];
copy_and_offset_timestamps(src, &mut typed_buf);
let buf = Buffer::from_vec(typed_buf);
let arr: ArrayRef = Arc::new(TimestampNanosecondArray::new(
ScalarBuffer::new(buf, 0, src.len()),
nulls,
@ -625,9 +624,9 @@ fn project_vector(vector: &Vector, opts: &ProjectionOptions) -> ProjectionResult
validity = merge_infinity_i32(src, Q_INF_DATE, Q_NINF_DATE, validity);
}
let nulls = to_null_buffer(validity);
let mut bytes_buf = vec![0u8; src.len() * size_of::<i32>()];
copy_and_offset_dates(src, bytemuck::cast_slice_mut(&mut bytes_buf));
let buf = Buffer::from_vec(bytes_buf);
let mut typed_buf = vec![0i32; src.len()];
copy_and_offset_dates(src, &mut typed_buf);
let buf = Buffer::from_vec(typed_buf);
let arr: ArrayRef =
Arc::new(Date32Array::new(ScalarBuffer::new(buf, 0, src.len()), nulls));
(arr, DataType::Date32)
@ -667,9 +666,9 @@ fn project_vector(vector: &Vector, opts: &ProjectionOptions) -> ProjectionResult
validity = merge_infinity_i32(src, Q_INF_MINUTE, Q_NINF_MINUTE, validity);
}
let nulls = to_null_buffer(validity);
let mut bytes_buf = vec![0u8; src.len() * size_of::<i32>()];
copy_and_minutes_to_seconds(src, bytemuck::cast_slice_mut(&mut bytes_buf));
let buf = Buffer::from_vec(bytes_buf);
let mut typed_buf = vec![0i32; src.len()];
copy_and_minutes_to_seconds(src, &mut typed_buf);
let buf = Buffer::from_vec(typed_buf);
let arr: ArrayRef = Arc::new(Time32SecondArray::new(
ScalarBuffer::new(buf, 0, src.len()),
nulls,