Skip to content

Commit 87f6283

Browse files
committed
Move SpareBufferWriter back into vortex-array
The writer only exists to serve the PiecewiseSequence gather loops, so keep it pub(crate) in arrays::piecewise_sequence as its own submodule rather than growing vortex-buffer's public API. It only uses BufferMut's public surface, so nothing in vortex-buffer changes behavior. Signed-off-by: "Robert" <robert@spiraldb.com> Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GUSY34eRKq9du5zQK1FuZq
1 parent 21f4581 commit 87f6283

7 files changed

Lines changed: 12 additions & 13 deletions

File tree

vortex-array/src/arrays/decimal/compute/take.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
use itertools::Itertools as _;
55
use vortex_buffer::Buffer;
66
use vortex_buffer::BufferMut;
7-
use vortex_buffer::SpareBufferWriter;
87
use vortex_error::VortexResult;
98
use vortex_error::vortex_ensure;
109
use vortex_error::vortex_err;
@@ -18,6 +17,7 @@ use crate::arrays::DecimalArray;
1817
use crate::arrays::PiecewiseSequence;
1918
use crate::arrays::PrimitiveArray;
2019
use crate::arrays::dict::TakeExecute;
20+
use crate::arrays::piecewise_sequence::SpareBufferWriter;
2121
use crate::arrays::piecewise_sequence::constant_unsigned_usize;
2222
use crate::arrays::piecewise_sequence::maybe_contiguous_slices;
2323
use crate::dtype::IntegerPType;

vortex-array/src/arrays/piecewise_sequence/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,14 @@ use crate::executor::ExecutionCtx;
2828
use crate::scalar::PValue;
2929

3030
pub mod array;
31+
mod spare_buffer_writer;
3132
mod vtable;
3233

3334
#[cfg(test)]
3435
mod tests;
3536

3637
pub use array::PiecewiseSequenceArrayExt;
38+
pub(crate) use spare_buffer_writer::SpareBufferWriter;
3739
pub use vtable::*;
3840

3941
pub(crate) fn check_index_arrays(

vortex-buffer/src/spare_buffer_writer.rs renamed to vortex-array/src/arrays/piecewise_sequence/spare_buffer_writer.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@
33

44
use std::ptr;
55

6+
use vortex_buffer::BufferMut;
67
use vortex_error::VortexResult;
78
use vortex_error::vortex_ensure;
89

9-
use crate::BufferMut;
10-
1110
/// Writes slices sequentially into the spare capacity of an empty [`BufferMut`].
1211
///
1312
/// This is useful when the caller knows the final output length up front and wants to avoid
@@ -22,7 +21,7 @@ use crate::BufferMut;
2221
/// [`set_len`]: BufferMut::set_len
2322
/// [`finish`]: SpareBufferWriter::finish
2423
#[must_use = "call `finish` to set the buffer length after writing"]
25-
pub struct SpareBufferWriter<'a, T> {
24+
pub(crate) struct SpareBufferWriter<'a, T> {
2625
buffer: &'a mut BufferMut<T>,
2726
written: usize,
2827
output_len: usize,
@@ -32,7 +31,7 @@ impl<'a, T: Copy> SpareBufferWriter<'a, T> {
3231
/// Creates a writer for `output_len` values in `buffer`'s spare capacity.
3332
///
3433
/// The target buffer must be empty and have capacity for at least `output_len` values.
35-
pub fn new(buffer: &'a mut BufferMut<T>, output_len: usize) -> VortexResult<Self> {
34+
pub(crate) fn new(buffer: &'a mut BufferMut<T>, output_len: usize) -> VortexResult<Self> {
3635
vortex_ensure!(
3736
buffer.is_empty(),
3837
"slice copy buffer already has {} initialized values",
@@ -53,7 +52,7 @@ impl<'a, T: Copy> SpareBufferWriter<'a, T> {
5352

5453
/// Copies `source` into the next output slots.
5554
#[inline]
56-
pub fn copy_slice(&mut self, source: &[T]) -> VortexResult<()> {
55+
pub(crate) fn copy_slice(&mut self, source: &[T]) -> VortexResult<()> {
5756
vortex_ensure!(
5857
source.len() <= self.output_len - self.written,
5958
"slice copy length {} exceeds remaining output length {}",
@@ -73,7 +72,7 @@ impl<'a, T: Copy> SpareBufferWriter<'a, T> {
7372
}
7473

7574
/// Sets the target buffer length after exactly `output_len` values have been written.
76-
pub fn finish(self) -> VortexResult<()> {
75+
pub(crate) fn finish(self) -> VortexResult<()> {
7776
vortex_ensure!(
7877
self.written == self.output_len,
7978
"slice copy length {} does not match declared output length {}",
@@ -91,10 +90,10 @@ impl<'a, T: Copy> SpareBufferWriter<'a, T> {
9190

9291
#[cfg(test)]
9392
mod tests {
93+
use vortex_buffer::BufferMut;
9494
use vortex_error::VortexResult;
9595

9696
use super::SpareBufferWriter;
97-
use crate::BufferMut;
9897

9998
#[test]
10099
fn writes_slices_into_spare_capacity() -> VortexResult<()> {

vortex-array/src/arrays/primitive/compute/take/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ use std::sync::LazyLock;
99
use itertools::Itertools as _;
1010
use vortex_buffer::Buffer;
1111
use vortex_buffer::BufferMut;
12-
use vortex_buffer::SpareBufferWriter;
1312
use vortex_error::VortexResult;
1413
use vortex_error::vortex_bail;
1514
use vortex_error::vortex_ensure;
@@ -25,6 +24,7 @@ use crate::arrays::PiecewiseSequence;
2524
use crate::arrays::Primitive;
2625
use crate::arrays::PrimitiveArray;
2726
use crate::arrays::dict::TakeExecute;
27+
use crate::arrays::piecewise_sequence::SpareBufferWriter;
2828
use crate::arrays::piecewise_sequence::constant_unsigned_usize;
2929
use crate::arrays::piecewise_sequence::maybe_contiguous_slices;
3030
use crate::builtins::ArrayBuiltins;

vortex-array/src/arrays/varbin/compute/take.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ use itertools::Itertools as _;
55
use vortex_buffer::BitBufferMut;
66
use vortex_buffer::BufferMut;
77
use vortex_buffer::ByteBufferMut;
8-
use vortex_buffer::SpareBufferWriter;
98
use vortex_error::VortexExpect;
109
use vortex_error::VortexResult;
1110
use vortex_error::vortex_ensure;
@@ -22,6 +21,7 @@ use crate::arrays::PrimitiveArray;
2221
use crate::arrays::VarBin;
2322
use crate::arrays::VarBinArray;
2423
use crate::arrays::dict::TakeExecute;
24+
use crate::arrays::piecewise_sequence::SpareBufferWriter;
2525
use crate::arrays::piecewise_sequence::constant_unsigned_usize;
2626
use crate::arrays::piecewise_sequence::maybe_contiguous_slices;
2727
use crate::arrays::primitive::PrimitiveArrayExt;

vortex-array/src/arrays/varbinview/compute/take.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ use itertools::Itertools as _;
88
use num_traits::AsPrimitive;
99
use vortex_buffer::Buffer;
1010
use vortex_buffer::BufferMut;
11-
use vortex_buffer::SpareBufferWriter;
1211
use vortex_error::VortexResult;
1312
use vortex_error::vortex_ensure;
1413
use vortex_error::vortex_err;
@@ -24,6 +23,7 @@ use crate::arrays::PrimitiveArray;
2423
use crate::arrays::VarBinView;
2524
use crate::arrays::VarBinViewArray;
2625
use crate::arrays::dict::TakeExecute;
26+
use crate::arrays::piecewise_sequence::SpareBufferWriter;
2727
use crate::arrays::piecewise_sequence::constant_unsigned_usize;
2828
use crate::arrays::piecewise_sequence::maybe_contiguous_slices;
2929
use crate::arrays::varbinview::BinaryView;

vortex-buffer/src/lib.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ pub use buffer_mut::*;
5353
pub use bytes::*;
5454
pub use r#const::*;
5555
pub use dispatch::*;
56-
pub use spare_buffer_writer::*;
5756
pub use string::*;
5857
mod alignment;
5958
#[cfg(feature = "arrow")]
@@ -70,7 +69,6 @@ mod macros;
7069
mod memmap2;
7170
#[cfg(feature = "serde")]
7271
mod serde;
73-
mod spare_buffer_writer;
7472
mod string;
7573
/// Trusted-length iterator trait and adapters for safe pre-allocation.
7674
pub mod trusted_len;

0 commit comments

Comments
 (0)