diff --git a/encodings/dict/src/array.rs b/encodings/dict/src/array.rs index 255355f198..1427921c35 100644 --- a/encodings/dict/src/array.rs +++ b/encodings/dict/src/array.rs @@ -214,8 +214,8 @@ impl ValidityVTable for DictEncoding { impl VisitorVTable for DictEncoding { fn accept(&self, array: &DictArray, visitor: &mut dyn ArrayVisitor) -> VortexResult<()> { - visitor.visit_child("values", &array.values())?; - visitor.visit_child("codes", &array.codes()) + visitor.visit_child("codes", &array.codes())?; + visitor.visit_child("values", &array.values()) } } diff --git a/vortex-array/src/data/mod.rs b/vortex-array/src/data/mod.rs index 11918ca8b1..8c6a0e999b 100644 --- a/vortex-array/src/data/mod.rs +++ b/vortex-array/src/data/mod.rs @@ -185,13 +185,19 @@ impl Array { InnerArray::Owned(_) => self, InnerArray::Viewed(v) => Array::try_new_owned( self.vtable().clone(), - v.dtype.clone(), + self.dtype().clone(), v.len, - v.flatbuffer() - .metadata() - .map(|bytes| v.flatbuffer.clone().into_inner().slice_ref(bytes.bytes())), - Some(v.buffers.iter().cloned().collect()), - Some(self.children().into()), + // v.flatbuffer() + // .metadata() + // .map(|bytes| v.flatbuffer.clone().into_inner().slice_ref(bytes.bytes())), + self.metadata_bytes().map(|b| ByteBuffer::copy_from(b)), + Some(self.byte_buffers().collect()), + Some( + self.children() + .into_iter() + .map(|a| a.into_owned_array()) + .collect(), + ), self.statistics().stats_set(), ) .vortex_expect("Failed to create owned array"), diff --git a/vortex-array/src/data/owned.rs b/vortex-array/src/data/owned.rs index 4b6ccf9d79..26e7383ee6 100644 --- a/vortex-array/src/data/owned.rs +++ b/vortex-array/src/data/owned.rs @@ -1,5 +1,6 @@ use std::sync::RwLock; +use itertools::Itertools; use vortex_buffer::ByteBuffer; use vortex_dtype::DType; use vortex_error::{vortex_bail, VortexResult};