Skip to content

Commit 393ca48

Browse files
committed
Clear up nullability
Signed-off-by: Adam Gutglick <adam@spiraldb.com>
1 parent 9cfeede commit 393ca48

2 files changed

Lines changed: 6 additions & 14 deletions

File tree

encodings/parquet-variant/src/array.rs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ use vortex_array::arrays::VariantArray;
1515
use vortex_array::arrow::ArrowArrayExecutor;
1616
use vortex_array::arrow::FromArrowArray;
1717
use vortex_array::dtype::DType;
18-
use vortex_array::dtype::Nullability;
1918
use vortex_array::stats::ArrayStats;
2019
use vortex_array::validity::Validity;
2120
use vortex_buffer::BitBuffer;
@@ -148,7 +147,7 @@ impl ParquetVariantArray {
148147
Validity::from(BitBuffer::from(nulls.inner().clone()))
149148
}
150149
})
151-
.unwrap_or(Validity::AllValid);
150+
.unwrap_or(Validity::NonNullable);
152151
let metadata =
153152
ArrayRef::from_arrow(arrow_variant.metadata_field() as &dyn ArrowArray, false)?;
154153

@@ -162,14 +161,9 @@ impl ParquetVariantArray {
162161
.map(|tv| ArrayRef::from_arrow(tv.as_ref(), typed_value_nullable))
163162
.transpose()?;
164163

165-
let nullability = if matches!(validity, Validity::NonNullable | Validity::AllValid) {
166-
Nullability::NonNullable
167-
} else {
168-
Nullability::Nullable
169-
};
170164
let pv =
171165
ParquetVariantArray::try_new_with_validity(validity, metadata, value, typed_value)?;
172-
Ok(VariantArray::new(pv.into_array(), nullability).into_array())
166+
Ok(VariantArray::new(pv.into_array()).into_array())
173167
}
174168

175169
/// Converts this array back to an Arrow [`parquet_variant_compute::VariantArray`].

encodings/parquet-variant/src/vtable.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ impl VTable for ParquetVariant {
270270
);
271271

272272
let (validity, mut child_idx) = if children.len() == expected_children {
273-
(Validity::AllValid, 0)
273+
(Validity::from(dtype.nullability()), 0)
274274
} else {
275275
(Validity::Array(children.get(0, &Validity::DTYPE, len)?), 1)
276276
};
@@ -338,9 +338,8 @@ impl VTable for ParquetVariant {
338338
}
339339

340340
fn execute(array: Arc<Self::Array>, _ctx: &mut ExecutionCtx) -> VortexResult<ExecutionResult> {
341-
let nullability = array.dtype.nullability();
342341
Ok(ExecutionResult::done(
343-
VariantArray::new(array.as_ref().clone().into_array(), nullability).into_array(),
342+
VariantArray::new(array.as_ref().clone().into_array()).into_array(),
344343
))
345344
}
346345
}
@@ -402,8 +401,7 @@ mod tests {
402401
let inner_value = VarBinViewArray::from_iter_bin([b"\x02", b"\x03", b"\x04"]).into_array();
403402
let inner_pv =
404403
ParquetVariantArray::try_new(inner_metadata, Some(inner_value), None).unwrap();
405-
let typed_value =
406-
VariantArray::new(inner_pv.into_array(), Nullability::NonNullable).into_array();
404+
let typed_value = VariantArray::new(inner_pv.into_array()).into_array();
407405

408406
let outer_pv =
409407
ParquetVariantArray::try_new(outer_metadata, None, Some(typed_value)).unwrap();
@@ -413,7 +411,7 @@ mod tests {
413411
assert!(array.array_eq(&decoded, Precision::Value));
414412
let decoded_pv = decoded.as_opt::<ParquetVariant>().unwrap();
415413
let typed = decoded_pv.typed_value_array().unwrap();
416-
assert_eq!(typed.dtype(), &DType::Variant(Nullability::NonNullable));
414+
assert_eq!(typed.dtype(), &DType::Variant(Nullability::Nullable));
417415
}
418416

419417
#[test]

0 commit comments

Comments
 (0)