Skip to content

Commit fb9a332

Browse files
authored
Inline visitor vtable to ArrayVTable (#6700)
This PR moves the functions from VisitorVTable to ArrayVTable See #6544 --------- Signed-off-by: Nicholas Gates <nick@nickgates.com>
1 parent 8cafbfe commit fb9a332

75 files changed

Lines changed: 2158 additions & 2461 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/developer-guide/internals/vtables.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,9 @@ trait doubling as public API), `ArrayRef`, and `DynVTable`. In addition to renam
160160
1. **Standardize data storage.** Replace per-encoding array structs with a common inner
161161
struct holding `(dtype, len, V::Metadata, buffers, children, stats)`. Per-encoding typed
162162
accessors (e.g. `DictArray::codes()`) become methods on `Array<DictVTable>`.
163-
2. **Collapse sub-vtables.** Fold `BaseArrayVTable`, `OperationsVTable`, `ValidityVTable`, and
164-
`VisitorVTable` into `ArrayVTable`. Many methods become trivial or generic once data
165-
storage is standardized.
163+
2. **Collapse sub-vtables.** Fold `BaseArrayVTable`, `OperationsVTable`, and `ValidityVTable`
164+
into `ArrayVTable`. Many methods become trivial or generic once data
165+
storage is standardized. (`VisitorVTable` has already been replaced with index-based
166+
`nbuffers`/`buffer`/`nchildren`/`child` methods on the main `VTable` trait.)
166167
3. **Introduce typed wrapper.** Add `Array<V>` analogous to `ExtDType<V>`, replacing the
167168
current `type Array` associated type on the vtable.

encodings/alp/public-api.lock

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -178,14 +178,20 @@ pub type vortex_alp::ALPRDVTable::OperationsVTable = vortex_alp::ALPRDVTable
178178

179179
pub type vortex_alp::ALPRDVTable::ValidityVTable = vortex_array::vtable::validity::ValidityVTableFromChild
180180

181-
pub type vortex_alp::ALPRDVTable::VisitorVTable = vortex_alp::ALPRDVTable
182-
183181
pub fn vortex_alp::ALPRDVTable::array_eq(array: &vortex_alp::ALPRDArray, other: &vortex_alp::ALPRDArray, precision: vortex_array::hash::Precision) -> bool
184182

185183
pub fn vortex_alp::ALPRDVTable::array_hash<H: core::hash::Hasher>(array: &vortex_alp::ALPRDArray, state: &mut H, precision: vortex_array::hash::Precision)
186184

185+
pub fn vortex_alp::ALPRDVTable::buffer(_array: &vortex_alp::ALPRDArray, idx: usize) -> vortex_array::buffer::BufferHandle
186+
187+
pub fn vortex_alp::ALPRDVTable::buffer_name(_array: &vortex_alp::ALPRDArray, _idx: usize) -> core::option::Option<alloc::string::String>
188+
187189
pub fn vortex_alp::ALPRDVTable::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult<vortex_alp::ALPRDArray>
188190

191+
pub fn vortex_alp::ALPRDVTable::child(array: &vortex_alp::ALPRDArray, idx: usize) -> vortex_array::array::ArrayRef
192+
193+
pub fn vortex_alp::ALPRDVTable::child_name(array: &vortex_alp::ALPRDArray, idx: usize) -> alloc::string::String
194+
189195
pub fn vortex_alp::ALPRDVTable::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult<Self::Metadata>
190196

191197
pub fn vortex_alp::ALPRDVTable::dtype(array: &vortex_alp::ALPRDArray) -> &vortex_array::dtype::DType
@@ -200,6 +206,10 @@ pub fn vortex_alp::ALPRDVTable::len(array: &vortex_alp::ALPRDArray) -> usize
200206

201207
pub fn vortex_alp::ALPRDVTable::metadata(array: &vortex_alp::ALPRDArray) -> vortex_error::VortexResult<Self::Metadata>
202208

209+
pub fn vortex_alp::ALPRDVTable::nbuffers(_array: &vortex_alp::ALPRDArray) -> usize
210+
211+
pub fn vortex_alp::ALPRDVTable::nchildren(array: &vortex_alp::ALPRDArray) -> usize
212+
203213
pub fn vortex_alp::ALPRDVTable::reduce_parent(array: &Self::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult<core::option::Option<vortex_array::array::ArrayRef>>
204214

205215
pub fn vortex_alp::ALPRDVTable::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult<core::option::Option<alloc::vec::Vec<u8>>>
@@ -216,16 +226,6 @@ impl vortex_array::vtable::validity::ValidityChild<vortex_alp::ALPRDVTable> for
216226

217227
pub fn vortex_alp::ALPRDVTable::validity_child(array: &vortex_alp::ALPRDArray) -> &vortex_array::array::ArrayRef
218228

219-
impl vortex_array::vtable::visitor::VisitorVTable<vortex_alp::ALPRDVTable> for vortex_alp::ALPRDVTable
220-
221-
pub fn vortex_alp::ALPRDVTable::nbuffers(_array: &vortex_alp::ALPRDArray) -> usize
222-
223-
pub fn vortex_alp::ALPRDVTable::nchildren(array: &vortex_alp::ALPRDArray) -> usize
224-
225-
pub fn vortex_alp::ALPRDVTable::visit_buffers(_array: &vortex_alp::ALPRDArray, _visitor: &mut dyn vortex_array::array::visitor::ArrayBufferVisitor)
226-
227-
pub fn vortex_alp::ALPRDVTable::visit_children(array: &vortex_alp::ALPRDArray, visitor: &mut dyn vortex_array::array::visitor::ArrayChildVisitor)
228-
229229
pub struct vortex_alp::ALPVTable
230230

231231
impl vortex_alp::ALPVTable
@@ -282,14 +282,20 @@ pub type vortex_alp::ALPVTable::OperationsVTable = vortex_alp::ALPVTable
282282

283283
pub type vortex_alp::ALPVTable::ValidityVTable = vortex_array::vtable::validity::ValidityVTableFromChild
284284

285-
pub type vortex_alp::ALPVTable::VisitorVTable = vortex_alp::ALPVTable
286-
287285
pub fn vortex_alp::ALPVTable::array_eq(array: &vortex_alp::ALPArray, other: &vortex_alp::ALPArray, precision: vortex_array::hash::Precision) -> bool
288286

289287
pub fn vortex_alp::ALPVTable::array_hash<H: core::hash::Hasher>(array: &vortex_alp::ALPArray, state: &mut H, precision: vortex_array::hash::Precision)
290288

289+
pub fn vortex_alp::ALPVTable::buffer(_array: &vortex_alp::ALPArray, idx: usize) -> vortex_array::buffer::BufferHandle
290+
291+
pub fn vortex_alp::ALPVTable::buffer_name(_array: &vortex_alp::ALPArray, _idx: usize) -> core::option::Option<alloc::string::String>
292+
291293
pub fn vortex_alp::ALPVTable::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult<vortex_alp::ALPArray>
292294

295+
pub fn vortex_alp::ALPVTable::child(array: &vortex_alp::ALPArray, idx: usize) -> vortex_array::array::ArrayRef
296+
297+
pub fn vortex_alp::ALPVTable::child_name(array: &vortex_alp::ALPArray, idx: usize) -> alloc::string::String
298+
293299
pub fn vortex_alp::ALPVTable::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult<Self::Metadata>
294300

295301
pub fn vortex_alp::ALPVTable::dtype(array: &vortex_alp::ALPArray) -> &vortex_array::dtype::DType
@@ -304,6 +310,10 @@ pub fn vortex_alp::ALPVTable::len(array: &vortex_alp::ALPArray) -> usize
304310

305311
pub fn vortex_alp::ALPVTable::metadata(array: &vortex_alp::ALPArray) -> vortex_error::VortexResult<Self::Metadata>
306312

313+
pub fn vortex_alp::ALPVTable::nbuffers(_array: &vortex_alp::ALPArray) -> usize
314+
315+
pub fn vortex_alp::ALPVTable::nchildren(array: &vortex_alp::ALPArray) -> usize
316+
307317
pub fn vortex_alp::ALPVTable::reduce_parent(array: &Self::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult<core::option::Option<vortex_array::array::ArrayRef>>
308318

309319
pub fn vortex_alp::ALPVTable::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult<core::option::Option<alloc::vec::Vec<u8>>>
@@ -320,16 +330,6 @@ impl vortex_array::vtable::validity::ValidityChild<vortex_alp::ALPVTable> for vo
320330

321331
pub fn vortex_alp::ALPVTable::validity_child(array: &vortex_alp::ALPArray) -> &vortex_array::array::ArrayRef
322332

323-
impl vortex_array::vtable::visitor::VisitorVTable<vortex_alp::ALPVTable> for vortex_alp::ALPVTable
324-
325-
pub fn vortex_alp::ALPVTable::nbuffers(_array: &vortex_alp::ALPArray) -> usize
326-
327-
pub fn vortex_alp::ALPVTable::nchildren(array: &vortex_alp::ALPArray) -> usize
328-
329-
pub fn vortex_alp::ALPVTable::visit_buffers(_array: &vortex_alp::ALPArray, _visitor: &mut dyn vortex_array::array::visitor::ArrayBufferVisitor)
330-
331-
pub fn vortex_alp::ALPVTable::visit_children(array: &vortex_alp::ALPArray, visitor: &mut dyn vortex_array::array::visitor::ArrayChildVisitor)
332-
333333
pub struct vortex_alp::Exponents
334334

335335
pub vortex_alp::Exponents::e: u8

encodings/alp/src/alp/array.rs

Lines changed: 44 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ use std::fmt::Debug;
55
use std::hash::Hash;
66

77
use vortex_array::Array;
8-
use vortex_array::ArrayBufferVisitor;
9-
use vortex_array::ArrayChildVisitor;
108
use vortex_array::ArrayEq;
119
use vortex_array::ArrayHash;
1210
use vortex_array::ArrayRef;
@@ -29,12 +27,15 @@ use vortex_array::vtable::ArrayId;
2927
use vortex_array::vtable::VTable;
3028
use vortex_array::vtable::ValidityChild;
3129
use vortex_array::vtable::ValidityVTableFromChild;
32-
use vortex_array::vtable::VisitorVTable;
30+
use vortex_array::vtable::patches_child;
31+
use vortex_array::vtable::patches_child_name;
32+
use vortex_array::vtable::patches_nchildren;
3333
use vortex_error::VortexExpect;
3434
use vortex_error::VortexResult;
3535
use vortex_error::vortex_bail;
3636
use vortex_error::vortex_ensure;
3737
use vortex_error::vortex_err;
38+
use vortex_error::vortex_panic;
3839
use vortex_session::VortexSession;
3940

4041
use crate::ALPFloat;
@@ -51,7 +52,6 @@ impl VTable for ALPVTable {
5152
type Metadata = ProstMetadata<ALPMetadata>;
5253
type OperationsVTable = Self;
5354
type ValidityVTable = ValidityVTableFromChild;
54-
type VisitorVTable = Self;
5555

5656
fn id(_array: &Self::Array) -> ArrayId {
5757
Self::ID
@@ -83,6 +83,46 @@ impl VTable for ALPVTable {
8383
&& array.patches.array_eq(&other.patches, precision)
8484
}
8585

86+
fn nbuffers(_array: &ALPArray) -> usize {
87+
0
88+
}
89+
90+
fn buffer(_array: &ALPArray, idx: usize) -> BufferHandle {
91+
vortex_panic!("ALPArray buffer index {idx} out of bounds")
92+
}
93+
94+
fn buffer_name(_array: &ALPArray, _idx: usize) -> Option<String> {
95+
None
96+
}
97+
98+
fn nchildren(array: &ALPArray) -> usize {
99+
1 + array.patches().map_or(0, patches_nchildren)
100+
}
101+
102+
fn child(array: &ALPArray, idx: usize) -> ArrayRef {
103+
match idx {
104+
0 => array.encoded().clone(),
105+
_ => {
106+
let patches = array
107+
.patches()
108+
.unwrap_or_else(|| vortex_panic!("ALPArray child index {idx} out of bounds"));
109+
patches_child(patches, idx - 1)
110+
}
111+
}
112+
}
113+
114+
fn child_name(array: &ALPArray, idx: usize) -> String {
115+
match idx {
116+
0 => "encoded".to_string(),
117+
_ => {
118+
if array.patches().is_none() {
119+
vortex_panic!("ALPArray child_name index {idx} out of bounds");
120+
}
121+
patches_child_name(idx - 1).to_string()
122+
}
123+
}
124+
}
125+
86126
fn metadata(array: &ALPArray) -> VortexResult<Self::Metadata> {
87127
let exponents = array.exponents();
88128
Ok(ProstMetadata(ALPMetadata {
@@ -446,28 +486,6 @@ impl ValidityChild<ALPVTable> for ALPVTable {
446486
}
447487
}
448488

449-
impl VisitorVTable<ALPVTable> for ALPVTable {
450-
fn visit_buffers(_array: &ALPArray, _visitor: &mut dyn ArrayBufferVisitor) {}
451-
452-
fn nbuffers(_array: &ALPArray) -> usize {
453-
0
454-
}
455-
456-
fn visit_children(array: &ALPArray, visitor: &mut dyn ArrayChildVisitor) {
457-
visitor.visit_child("encoded", array.encoded());
458-
if let Some(patches) = array.patches() {
459-
visitor.visit_patches(patches);
460-
}
461-
}
462-
463-
fn nchildren(array: &ALPArray) -> usize {
464-
// encoded + optional patches (indices + values + optional chunk_offsets)
465-
1 + array
466-
.patches()
467-
.map_or(0, |p| 2 + p.chunk_offsets().is_some() as usize)
468-
}
469-
}
470-
471489
#[cfg(test)]
472490
mod tests {
473491
use std::f64::consts::PI;

encodings/alp/src/alp_rd/array.rs

Lines changed: 46 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ use std::hash::Hash;
66

77
use itertools::Itertools;
88
use vortex_array::Array;
9-
use vortex_array::ArrayBufferVisitor;
10-
use vortex_array::ArrayChildVisitor;
119
use vortex_array::ArrayEq;
1210
use vortex_array::ArrayHash;
1311
use vortex_array::ArrayRef;
@@ -33,12 +31,15 @@ use vortex_array::vtable::ArrayId;
3331
use vortex_array::vtable::VTable;
3432
use vortex_array::vtable::ValidityChild;
3533
use vortex_array::vtable::ValidityVTableFromChild;
36-
use vortex_array::vtable::VisitorVTable;
34+
use vortex_array::vtable::patches_child;
35+
use vortex_array::vtable::patches_child_name;
36+
use vortex_array::vtable::patches_nchildren;
3737
use vortex_buffer::Buffer;
3838
use vortex_error::VortexResult;
3939
use vortex_error::vortex_bail;
4040
use vortex_error::vortex_ensure;
4141
use vortex_error::vortex_err;
42+
use vortex_error::vortex_panic;
4243
use vortex_mask::Mask;
4344
use vortex_session::VortexSession;
4445

@@ -68,7 +69,6 @@ impl VTable for ALPRDVTable {
6869
type Metadata = ProstMetadata<ALPRDMetadata>;
6970
type OperationsVTable = Self;
7071
type ValidityVTable = ValidityVTableFromChild;
71-
type VisitorVTable = Self;
7272

7373
fn id(_array: &Self::Array) -> ArrayId {
7474
Self::ID
@@ -108,6 +108,48 @@ impl VTable for ALPRDVTable {
108108
.array_eq(&other.left_parts_patches, precision)
109109
}
110110

111+
fn nbuffers(_array: &ALPRDArray) -> usize {
112+
0
113+
}
114+
115+
fn buffer(_array: &ALPRDArray, idx: usize) -> BufferHandle {
116+
vortex_panic!("ALPRDArray buffer index {idx} out of bounds")
117+
}
118+
119+
fn buffer_name(_array: &ALPRDArray, _idx: usize) -> Option<String> {
120+
None
121+
}
122+
123+
fn nchildren(array: &ALPRDArray) -> usize {
124+
2 + array.left_parts_patches().map_or(0, patches_nchildren)
125+
}
126+
127+
fn child(array: &ALPRDArray, idx: usize) -> ArrayRef {
128+
match idx {
129+
0 => array.left_parts().clone(),
130+
1 => array.right_parts().clone(),
131+
_ => {
132+
let patches = array
133+
.left_parts_patches()
134+
.unwrap_or_else(|| vortex_panic!("ALPRDArray child index {idx} out of bounds"));
135+
patches_child(patches, idx - 2)
136+
}
137+
}
138+
}
139+
140+
fn child_name(array: &ALPRDArray, idx: usize) -> String {
141+
match idx {
142+
0 => "left_parts".to_string(),
143+
1 => "right_parts".to_string(),
144+
_ => {
145+
if array.left_parts_patches().is_none() {
146+
vortex_panic!("ALPRDArray child_name index {idx} out of bounds");
147+
}
148+
patches_child_name(idx - 2).to_string()
149+
}
150+
}
151+
}
152+
111153
fn metadata(array: &ALPRDArray) -> VortexResult<Self::Metadata> {
112154
let dict = array
113155
.left_parts_dictionary()
@@ -466,29 +508,6 @@ impl ValidityChild<ALPRDVTable> for ALPRDVTable {
466508
}
467509
}
468510

469-
impl VisitorVTable<ALPRDVTable> for ALPRDVTable {
470-
fn visit_buffers(_array: &ALPRDArray, _visitor: &mut dyn ArrayBufferVisitor) {}
471-
472-
fn nbuffers(_array: &ALPRDArray) -> usize {
473-
0
474-
}
475-
476-
fn visit_children(array: &ALPRDArray, visitor: &mut dyn ArrayChildVisitor) {
477-
visitor.visit_child("left_parts", array.left_parts());
478-
visitor.visit_child("right_parts", array.right_parts());
479-
if let Some(patches) = array.left_parts_patches() {
480-
visitor.visit_patches(patches);
481-
}
482-
}
483-
484-
fn nchildren(array: &ALPRDArray) -> usize {
485-
// left_parts + right_parts + optional patches (indices + values)
486-
2 + array
487-
.left_parts_patches()
488-
.map_or(0, |p| 2 + p.chunk_offsets().is_some() as usize)
489-
}
490-
}
491-
492511
#[cfg(test)]
493512
mod test {
494513
use rstest::rstest;

encodings/bytebool/public-api.lock

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,20 @@ pub type vortex_bytebool::ByteBoolVTable::OperationsVTable = vortex_bytebool::By
8686

8787
pub type vortex_bytebool::ByteBoolVTable::ValidityVTable = vortex_array::vtable::validity::ValidityVTableFromValidityHelper
8888

89-
pub type vortex_bytebool::ByteBoolVTable::VisitorVTable = vortex_bytebool::ByteBoolVTable
90-
9189
pub fn vortex_bytebool::ByteBoolVTable::array_eq(array: &vortex_bytebool::ByteBoolArray, other: &vortex_bytebool::ByteBoolArray, precision: vortex_array::hash::Precision) -> bool
9290

9391
pub fn vortex_bytebool::ByteBoolVTable::array_hash<H: core::hash::Hasher>(array: &vortex_bytebool::ByteBoolArray, state: &mut H, precision: vortex_array::hash::Precision)
9492

93+
pub fn vortex_bytebool::ByteBoolVTable::buffer(array: &vortex_bytebool::ByteBoolArray, idx: usize) -> vortex_array::buffer::BufferHandle
94+
95+
pub fn vortex_bytebool::ByteBoolVTable::buffer_name(_array: &vortex_bytebool::ByteBoolArray, idx: usize) -> core::option::Option<alloc::string::String>
96+
9597
pub fn vortex_bytebool::ByteBoolVTable::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult<vortex_bytebool::ByteBoolArray>
9698

99+
pub fn vortex_bytebool::ByteBoolVTable::child(array: &vortex_bytebool::ByteBoolArray, idx: usize) -> vortex_array::array::ArrayRef
100+
101+
pub fn vortex_bytebool::ByteBoolVTable::child_name(_array: &vortex_bytebool::ByteBoolArray, idx: usize) -> alloc::string::String
102+
97103
pub fn vortex_bytebool::ByteBoolVTable::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult<Self::Metadata>
98104

99105
pub fn vortex_bytebool::ByteBoolVTable::dtype(array: &vortex_bytebool::ByteBoolArray) -> &vortex_array::dtype::DType
@@ -108,6 +114,10 @@ pub fn vortex_bytebool::ByteBoolVTable::len(array: &vortex_bytebool::ByteBoolArr
108114

109115
pub fn vortex_bytebool::ByteBoolVTable::metadata(_array: &vortex_bytebool::ByteBoolArray) -> vortex_error::VortexResult<Self::Metadata>
110116

117+
pub fn vortex_bytebool::ByteBoolVTable::nbuffers(_array: &vortex_bytebool::ByteBoolArray) -> usize
118+
119+
pub fn vortex_bytebool::ByteBoolVTable::nchildren(array: &vortex_bytebool::ByteBoolArray) -> usize
120+
111121
pub fn vortex_bytebool::ByteBoolVTable::reduce_parent(array: &Self::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult<core::option::Option<vortex_array::array::ArrayRef>>
112122

113123
pub fn vortex_bytebool::ByteBoolVTable::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult<core::option::Option<alloc::vec::Vec<u8>>>
@@ -119,13 +129,3 @@ pub fn vortex_bytebool::ByteBoolVTable::with_children(array: &mut Self::Array, c
119129
impl vortex_array::vtable::operations::OperationsVTable<vortex_bytebool::ByteBoolVTable> for vortex_bytebool::ByteBoolVTable
120130

121131
pub fn vortex_bytebool::ByteBoolVTable::scalar_at(array: &vortex_bytebool::ByteBoolArray, index: usize) -> vortex_error::VortexResult<vortex_array::scalar::Scalar>
122-
123-
impl vortex_array::vtable::visitor::VisitorVTable<vortex_bytebool::ByteBoolVTable> for vortex_bytebool::ByteBoolVTable
124-
125-
pub fn vortex_bytebool::ByteBoolVTable::nbuffers(_array: &vortex_bytebool::ByteBoolArray) -> usize
126-
127-
pub fn vortex_bytebool::ByteBoolVTable::nchildren(array: &vortex_bytebool::ByteBoolArray) -> usize
128-
129-
pub fn vortex_bytebool::ByteBoolVTable::visit_buffers(array: &vortex_bytebool::ByteBoolArray, visitor: &mut dyn vortex_array::array::visitor::ArrayBufferVisitor)
130-
131-
pub fn vortex_bytebool::ByteBoolVTable::visit_children(array: &vortex_bytebool::ByteBoolArray, visitor: &mut dyn vortex_array::array::visitor::ArrayChildVisitor)

0 commit comments

Comments
 (0)