diff --git a/vortex-array/src/arrays/decimal/compute/fill_null.rs b/vortex-array/src/arrays/decimal/compute/fill_null.rs index 0f17b9aa5c5..8d8016886b6 100644 --- a/vortex-array/src/arrays/decimal/compute/fill_null.rs +++ b/vortex-array/src/arrays/decimal/compute/fill_null.rs @@ -28,11 +28,13 @@ impl FillNullKernel for DecimalVTable { let is_invalid = is_valid.to_bool().bit_buffer().not(); match_each_decimal_value_type!(array.values_type(), |T| { let mut buffer = array.buffer::().into_mut(); - let fill_value = fill_value - .as_decimal() + let decimal_scalar = fill_value.as_decimal(); + let decimal_value = decimal_scalar .decimal_value() - .and_then(|v| v.cast::()) - .vortex_expect("top-level fill_null ensure non-null fill value"); + .vortex_expect("fill_null requires a non-null fill value"); + let fill_value = decimal_value + .cast::() + .vortex_expect("fill value does not fit in array's decimal storage type"); for invalid_index in is_invalid.set_indices() { buffer[invalid_index] = fill_value; } diff --git a/vortex-array/src/compute/fill_null.rs b/vortex-array/src/compute/fill_null.rs index 3c5379116d3..edbfd755d36 100644 --- a/vortex-array/src/compute/fill_null.rs +++ b/vortex-array/src/compute/fill_null.rs @@ -59,6 +59,14 @@ pub fn fill_null(array: &dyn Array, fill_value: &Scalar) -> VortexResult VortexResult; }