Skip to content

Commit e0367fe

Browse files
committed
Merge develop
Signed-off-by: Nicholas Gates <[email protected]>
1 parent 1d668f6 commit e0367fe

File tree

4 files changed

+29
-7
lines changed

4 files changed

+29
-7
lines changed

vortex-array/src/expr/exprs/list_contains.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ fn constant_list_scalar_contains(list: ListViewScalar, values: Vector) -> Vortex
295295
// the results together.
296296
let mut result: BoolVector = BoolVector::new(
297297
BitBuffer::new_unset(values.len()),
298-
Mask::new(values.len(), false),
298+
Mask::new(values.len(), true),
299299
);
300300
for i in 0..elements.len() {
301301
let element = Datum::Scalar(elements.scalar_at(i));

vortex-layout/src/layouts/flat/reader.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,13 +142,13 @@ impl LayoutReader for FlatReader {
142142

143143
log::info!("Filter Array:\n{}", array.display_tree());
144144
let array = optimizer.optimize_array(array)?;
145-
log::info!("Optimized Filter Array:\n{}", array.display_tree());
145+
log::warn!("Optimized Filter Array:\n{}", array.display_tree());
146146

147147
// Evaluate the array into a mask.
148148
let array_mask = array.execute_mask(&session)?;
149149
let array_mask = mask.bitand(&array_mask);
150150

151-
log::debug!(
151+
log::warn!(
152152
"Flat mask evaluation {} - {} (mask = {}) => {}",
153153
name,
154154
expr,

vortex-vector/src/struct_/scalar.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ use crate::ScalarOps;
66
use crate::VectorMut;
77
use crate::VectorOps;
88
use crate::struct_::StructVector;
9+
use crate::struct_::StructVectorMut;
910
use vortex_mask::Mask;
11+
use vortex_mask::MaskMut;
1012

1113
/// Represents a struct scalar value.
1214
///
@@ -47,8 +49,15 @@ impl ScalarOps for StructScalar {
4749
}
4850
}
4951

50-
fn repeat(&self, _n: usize) -> VectorMut {
51-
todo!()
52+
fn repeat(&self, n: usize) -> VectorMut {
53+
let fields = self
54+
.0
55+
.fields()
56+
.iter()
57+
.map(|f| f.scalar_at(0).repeat(n))
58+
.collect();
59+
let validity = MaskMut::new(n, self.is_valid());
60+
VectorMut::Struct(StructVectorMut::new(fields, validity))
5261
}
5362
}
5463

vortex-vector/src/struct_/vector.rs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,21 @@ impl VectorOps for StructVector {
149149
StructScalar::new(self.slice(index..index + 1))
150150
}
151151

152-
fn slice(&self, _range: impl RangeBounds<usize> + Clone + Debug) -> Self {
153-
todo!()
152+
fn slice(&self, range: impl RangeBounds<usize> + Clone + Debug) -> Self {
153+
let sliced_fields: Box<[_]> = self
154+
.fields
155+
.iter()
156+
.map(|field| field.slice(range.clone()))
157+
.collect();
158+
159+
let sliced_validity = self.validity.slice(range);
160+
let len = sliced_validity.len();
161+
162+
StructVector {
163+
fields: Arc::new(sliced_fields),
164+
validity: sliced_validity,
165+
len,
166+
}
154167
}
155168

156169
fn clear(&mut self) {

0 commit comments

Comments
 (0)