Skip to content

Commit d2904cb

Browse files
authored
Remove as_primitive (#1376)
It hides a hidden clone as well as panicking 👍
1 parent e11d4ff commit d2904cb

File tree

14 files changed

+70
-41
lines changed

14 files changed

+70
-41
lines changed

encodings/alp/src/alp/compress.rs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,11 @@ mod tests {
124124
let encoded = alp_encode(&array).unwrap();
125125
assert!(encoded.patches().is_none());
126126
assert_eq!(
127-
encoded.encoded().as_primitive().maybe_null_slice::<i32>(),
127+
encoded
128+
.encoded()
129+
.into_primitive()
130+
.unwrap()
131+
.maybe_null_slice::<i32>(),
128132
vec![1234; 1025]
129133
);
130134
assert_eq!(encoded.exponents(), Exponents { e: 9, f: 6 });
@@ -142,7 +146,11 @@ mod tests {
142146
let encoded = alp_encode(&array).unwrap();
143147
assert!(encoded.patches().is_none());
144148
assert_eq!(
145-
encoded.encoded().as_primitive().maybe_null_slice::<i32>(),
149+
encoded
150+
.encoded()
151+
.into_primitive()
152+
.unwrap()
153+
.maybe_null_slice::<i32>(),
146154
vec![0, 1234, 0]
147155
);
148156
assert_eq!(encoded.exponents(), Exponents { e: 9, f: 6 });
@@ -160,7 +168,11 @@ mod tests {
160168
let encoded = alp_encode(&array).unwrap();
161169
assert!(encoded.patches().is_some());
162170
assert_eq!(
163-
encoded.encoded().as_primitive().maybe_null_slice::<i64>(),
171+
encoded
172+
.encoded()
173+
.into_primitive()
174+
.unwrap()
175+
.maybe_null_slice::<i64>(),
164176
vec![1234i64, 2718, 1234, 4000] // fill forward
165177
);
166178
assert_eq!(encoded.exponents(), Exponents { e: 16, f: 13 });

encodings/alp/src/alp/compute.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,11 @@ mod tests {
172172
let encoded = alp_encode(&array).unwrap();
173173
assert!(encoded.patches().is_none());
174174
assert_eq!(
175-
encoded.encoded().as_primitive().maybe_null_slice::<i32>(),
175+
encoded
176+
.encoded()
177+
.into_primitive()
178+
.unwrap()
179+
.maybe_null_slice::<i32>(),
176180
vec![1234; 1025]
177181
);
178182

encodings/bytebool/src/compute.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use vortex_array::compute::unary::{FillForwardFn, ScalarAtFn};
33
use vortex_array::compute::{ArrayCompute, SliceFn, TakeFn, TakeOptions};
44
use vortex_array::validity::{ArrayValidity, Validity};
55
use vortex_array::variants::PrimitiveArrayTrait;
6-
use vortex_array::{ArrayDType, ArrayData, IntoArrayData};
6+
use vortex_array::{ArrayDType, ArrayData, IntoArrayData, IntoArrayVariant};
77
use vortex_dtype::{match_each_integer_ptype, Nullability};
88
use vortex_error::{vortex_err, VortexResult};
99
use vortex_scalar::Scalar;
@@ -51,7 +51,7 @@ impl SliceFn for ByteBoolArray {
5151
impl TakeFn for ByteBoolArray {
5252
fn take(&self, indices: &ArrayData, _options: TakeOptions) -> VortexResult<ArrayData> {
5353
let validity = self.validity();
54-
let indices = indices.clone().as_primitive();
54+
let indices = indices.clone().into_primitive()?;
5555
let bools = self.maybe_null_slice();
5656

5757
let arr = match validity {

encodings/datetime-parts/src/compress.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ pub fn split_temporal(array: TemporalArray) -> VortexResult<TemporalParts> {
2424
&temporal_values,
2525
&DType::Primitive(PType::I64, temporal_values.dtype().nullability()),
2626
)?
27-
.as_primitive();
27+
.into_primitive()?;
2828

2929
let divisor = match array.temporal_metadata().time_unit() {
3030
TimeUnit::Ns => 1_000_000_000,

encodings/datetime-parts/src/compute.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,9 +176,15 @@ mod test {
176176
seconds,
177177
subseconds,
178178
} = split_temporal(temporal_array.clone()).unwrap();
179-
assert_eq!(days.as_primitive().validity(), validity);
180-
assert_eq!(seconds.as_primitive().validity(), Validity::NonNullable);
181-
assert_eq!(subseconds.as_primitive().validity(), Validity::NonNullable);
179+
assert_eq!(days.clone().into_primitive().unwrap().validity(), validity);
180+
assert_eq!(
181+
seconds.clone().into_primitive().unwrap().validity(),
182+
Validity::NonNullable
183+
);
184+
assert_eq!(
185+
subseconds.clone().into_primitive().unwrap().validity(),
186+
Validity::NonNullable
187+
);
182188
assert_eq!(validity, raw_millis.validity());
183189

184190
let date_times = DateTimePartsArray::try_new(

encodings/fsst/src/canonical.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
use arrow_array::builder::make_view;
22
use arrow_buffer::Buffer;
33
use vortex_array::array::{PrimitiveArray, VarBinArray, VarBinViewArray};
4-
use vortex_array::{ArrayDType, ArrayData, Canonical, IntoArrayData, IntoCanonical};
4+
use vortex_array::{
5+
ArrayDType, ArrayData, Canonical, IntoArrayData, IntoArrayVariant, IntoCanonical,
6+
};
57
use vortex_error::VortexResult;
68

79
use crate::FSSTArray;
@@ -21,7 +23,7 @@ impl IntoCanonical for FSSTArray {
2123

2224
let compressed_bytes = VarBinArray::try_from(self.codes())?
2325
.sliced_bytes()?
24-
.as_primitive();
26+
.into_primitive()?;
2527

2628
// Bulk-decompress the entire array.
2729
let uncompressed_bytes =

encodings/runend/src/compress.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ pub fn runend_decode_typed_bool<E: NativePType + AsPrimitive<usize> + FromPrimit
148148
mod test {
149149
use vortex_array::array::PrimitiveArray;
150150
use vortex_array::validity::{ArrayValidity, Validity};
151-
use vortex_array::IntoArrayData;
151+
use vortex_array::{IntoArrayData, IntoArrayVariant};
152152

153153
use crate::compress::{runend_decode_primitive, runend_encode};
154154
use crate::RunEndArray;
@@ -190,8 +190,8 @@ mod test {
190190
.unwrap();
191191

192192
let decoded = runend_decode_primitive(
193-
arr.ends().as_primitive(),
194-
arr.values().as_primitive(),
193+
arr.ends().into_primitive().unwrap(),
194+
arr.values().into_primitive().unwrap(),
195195
arr.validity(),
196196
0,
197197
arr.len(),

vortex-array/src/array/primitive/compute/cast.rs

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -69,50 +69,60 @@ mod test {
6969
use crate::array::PrimitiveArray;
7070
use crate::compute::unary::try_cast;
7171
use crate::validity::Validity;
72-
use crate::IntoArrayData;
72+
use crate::{IntoArrayData, IntoArrayVariant};
7373

7474
#[test]
7575
fn cast_u32_u8() {
7676
let arr = vec![0u32, 10, 200].into_array();
7777

7878
// cast from u32 to u8
79-
let p = try_cast(&arr, PType::U8.into()).unwrap().as_primitive();
79+
let p = try_cast(&arr, PType::U8.into())
80+
.unwrap()
81+
.into_primitive()
82+
.unwrap();
8083
assert_eq!(p.maybe_null_slice::<u8>(), vec![0u8, 10, 200]);
8184
assert_eq!(p.validity(), Validity::NonNullable);
8285

8386
// to nullable
8487
let p = try_cast(&p, &DType::Primitive(PType::U8, Nullability::Nullable))
8588
.unwrap()
86-
.as_primitive();
89+
.into_primitive()
90+
.unwrap();
8791
assert_eq!(p.maybe_null_slice::<u8>(), vec![0u8, 10, 200]);
8892
assert_eq!(p.validity(), Validity::AllValid);
8993

9094
// back to non-nullable
9195
let p = try_cast(&p, &DType::Primitive(PType::U8, Nullability::NonNullable))
9296
.unwrap()
93-
.as_primitive();
97+
.into_primitive()
98+
.unwrap();
9499
assert_eq!(p.maybe_null_slice::<u8>(), vec![0u8, 10, 200]);
95100
assert_eq!(p.validity(), Validity::NonNullable);
96101

97102
// to nullable u32
98103
let p = try_cast(&p, &DType::Primitive(PType::U32, Nullability::Nullable))
99104
.unwrap()
100-
.as_primitive();
105+
.into_primitive()
106+
.unwrap();
101107
assert_eq!(p.maybe_null_slice::<u32>(), vec![0u32, 10, 200]);
102108
assert_eq!(p.validity(), Validity::AllValid);
103109

104110
// to non-nullable u8
105111
let p = try_cast(&p, &DType::Primitive(PType::U8, Nullability::NonNullable))
106112
.unwrap()
107-
.as_primitive();
113+
.into_primitive()
114+
.unwrap();
108115
assert_eq!(p.maybe_null_slice::<u8>(), vec![0u8, 10, 200]);
109116
assert_eq!(p.validity(), Validity::NonNullable);
110117
}
111118

112119
#[test]
113120
fn cast_u32_f32() {
114121
let arr = vec![0u32, 10, 200].into_array();
115-
let u8arr = try_cast(&arr, PType::F32.into()).unwrap().as_primitive();
122+
let u8arr = try_cast(&arr, PType::F32.into())
123+
.unwrap()
124+
.into_primitive()
125+
.unwrap();
116126
assert_eq!(u8arr.maybe_null_slice::<f32>(), vec![0.0f32, 10., 200.]);
117127
}
118128

vortex-array/src/array/primitive/compute/fill.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,13 @@ mod test {
5252
use crate::array::BoolArray;
5353
use crate::compute::unary::fill_forward;
5454
use crate::validity::{ArrayValidity, Validity};
55-
use crate::IntoArrayData;
55+
use crate::{IntoArrayData, IntoArrayVariant};
5656

5757
#[test]
5858
fn leading_none() {
5959
let arr = PrimitiveArray::from_nullable_vec(vec![None, Some(8u8), None, Some(10), None])
6060
.into_array();
61-
let p = fill_forward(&arr).unwrap().as_primitive();
61+
let p = fill_forward(&arr).unwrap().into_primitive().unwrap();
6262
assert_eq!(p.maybe_null_slice::<u8>(), vec![0, 8, 8, 10, 10]);
6363
assert!(p.logical_validity().all_valid());
6464
}
@@ -69,7 +69,7 @@ mod test {
6969
PrimitiveArray::from_nullable_vec(vec![Option::<u8>::None, None, None, None, None])
7070
.into_array();
7171

72-
let p = fill_forward(&arr).unwrap().as_primitive();
72+
let p = fill_forward(&arr).unwrap().into_primitive().unwrap();
7373
assert_eq!(p.maybe_null_slice::<u8>(), vec![0, 0, 0, 0, 0]);
7474
assert!(p.logical_validity().all_valid());
7575
}
@@ -81,7 +81,7 @@ mod test {
8181
Validity::Array(BoolArray::from_iter([true, true, true, true, true]).into_array()),
8282
)
8383
.into_array();
84-
let p = fill_forward(&arr).unwrap().as_primitive();
84+
let p = fill_forward(&arr).unwrap().into_primitive().unwrap();
8585
assert_eq!(p.maybe_null_slice::<u8>(), vec![8, 10, 12, 14, 16]);
8686
assert!(p.logical_validity().all_valid());
8787
}

vortex-array/src/array/primitive/mod.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -334,12 +334,6 @@ impl AcceptArrayVisitor for PrimitiveArray {
334334
}
335335
}
336336

337-
impl ArrayData {
338-
pub fn as_primitive(&self) -> PrimitiveArray {
339-
PrimitiveArray::try_from(self).vortex_expect("Expected primitive array")
340-
}
341-
}
342-
343337
// This is an arbitrary value, tried a few seems like this is a better value than smaller ones,
344338
// I assume there's some hardware dependency here but this seems to be good enough
345339
const CHUNK_SIZE: usize = 1024;

0 commit comments

Comments
 (0)