Skip to content

Commit 4eda890

Browse files
authored
chore: prefer downcast_array_ref (#1786)
1 parent 60af509 commit 4eda890

File tree

19 files changed

+64
-190
lines changed

19 files changed

+64
-190
lines changed

vortex-array/src/compute/binary_numeric.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use vortex_scalar::{BinaryNumericOperator, Scalar};
77

88
use crate::array::ConstantArray;
99
use crate::arrow::{Datum, FromArrowArray};
10-
use crate::encoding::{downcast_array_ref, Encoding};
10+
use crate::encoding::Encoding;
1111
use crate::{ArrayDType, ArrayData, IntoArrayData as _};
1212

1313
pub trait BinaryNumericFn<Array> {
@@ -30,7 +30,7 @@ where
3030
rhs: &ArrayData,
3131
op: BinaryNumericOperator,
3232
) -> VortexResult<Option<ArrayData>> {
33-
let (array_ref, encoding) = downcast_array_ref::<E>(lhs)?;
33+
let (array_ref, encoding) = lhs.downcast_array_ref::<E>()?;
3434
BinaryNumericFn::binary_numeric(encoding, array_ref, rhs, op)
3535
}
3636
}

vortex-array/src/compute/boolean.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::sync::Arc;
33
use arrow_array::cast::AsArray;
44
use arrow_array::ArrayRef;
55
use vortex_dtype::DType;
6-
use vortex_error::{vortex_bail, vortex_err, VortexError, VortexResult};
6+
use vortex_error::{vortex_bail, VortexError, VortexResult};
77

88
use crate::arrow::FromArrowArray;
99
use crate::encoding::Encoding;
@@ -40,12 +40,7 @@ where
4040
rhs: &ArrayData,
4141
op: BinaryOperator,
4242
) -> VortexResult<Option<ArrayData>> {
43-
let array_ref = <&E::Array>::try_from(lhs)?;
44-
let encoding = lhs
45-
.encoding()
46-
.as_any()
47-
.downcast_ref::<E>()
48-
.ok_or_else(|| vortex_err!("Mismatched encoding"))?;
43+
let (array_ref, encoding) = lhs.downcast_array_ref::<E>()?;
4944
BinaryBooleanFn::binary_boolean(encoding, array_ref, rhs, op)
5045
}
5146
}

vortex-array/src/compute/cast.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use vortex_dtype::DType;
2-
use vortex_error::{vortex_bail, vortex_err, VortexError, VortexResult};
2+
use vortex_error::{vortex_bail, VortexError, VortexResult};
33

44
use crate::encoding::Encoding;
55
use crate::{ArrayDType, ArrayData, IntoArrayData, IntoCanonical};
@@ -14,12 +14,7 @@ where
1414
for<'a> &'a E::Array: TryFrom<&'a ArrayData, Error = VortexError>,
1515
{
1616
fn cast(&self, array: &ArrayData, dtype: &DType) -> VortexResult<ArrayData> {
17-
let array_ref = <&E::Array>::try_from(array)?;
18-
let encoding = array
19-
.encoding()
20-
.as_any()
21-
.downcast_ref::<E>()
22-
.ok_or_else(|| vortex_err!("Mismatched encoding"))?;
17+
let (array_ref, encoding) = array.downcast_array_ref::<E>()?;
2318
CastFn::cast(encoding, array_ref, dtype)
2419
}
2520
}

vortex-array/src/compute/compare.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::fmt::{Display, Formatter};
33

44
use arrow_ord::cmp;
55
use vortex_dtype::{DType, Nullability};
6-
use vortex_error::{vortex_bail, vortex_err, VortexError, VortexResult};
6+
use vortex_error::{vortex_bail, VortexError, VortexResult};
77
use vortex_scalar::Scalar;
88

99
use crate::arrow::{Datum, FromArrowArray};
@@ -92,12 +92,7 @@ where
9292
rhs: &ArrayData,
9393
operator: Operator,
9494
) -> VortexResult<Option<ArrayData>> {
95-
let lhs_ref = <&E::Array>::try_from(lhs)?;
96-
let encoding = lhs
97-
.encoding()
98-
.as_any()
99-
.downcast_ref::<E>()
100-
.ok_or_else(|| vortex_err!("Mismatched encoding"))?;
95+
let (lhs_ref, encoding) = lhs.downcast_array_ref::<E>()?;
10196
CompareFn::compare(encoding, lhs_ref, rhs, operator)
10297
}
10398
}

vortex-array/src/compute/fill_forward.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,7 @@ where
1818
for<'a> &'a E::Array: TryFrom<&'a ArrayData, Error = VortexError>,
1919
{
2020
fn fill_forward(&self, array: &ArrayData) -> VortexResult<ArrayData> {
21-
let array_ref = <&E::Array>::try_from(array)?;
22-
let encoding = array
23-
.encoding()
24-
.as_any()
25-
.downcast_ref::<E>()
26-
.ok_or_else(|| vortex_err!("Mismatched encoding"))?;
21+
let (array_ref, encoding) = array.downcast_array_ref::<E>()?;
2722
FillForwardFn::fill_forward(encoding, array_ref)
2823
}
2924
}

vortex-array/src/compute/fill_null.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use vortex_error::{vortex_bail, vortex_err, VortexError, VortexResult};
1+
use vortex_error::{vortex_bail, VortexError, VortexResult};
22
use vortex_scalar::Scalar;
33

44
use crate::encoding::Encoding;
@@ -17,12 +17,7 @@ where
1717
for<'a> &'a E::Array: TryFrom<&'a ArrayData, Error = VortexError>,
1818
{
1919
fn fill_null(&self, array: &ArrayData, fill_value: Scalar) -> VortexResult<ArrayData> {
20-
let array_ref = <&E::Array>::try_from(array)?;
21-
let encoding = array
22-
.encoding()
23-
.as_any()
24-
.downcast_ref::<E>()
25-
.ok_or_else(|| vortex_err!("Mismatched encoding"))?;
20+
let (array_ref, encoding) = array.downcast_array_ref::<E>()?;
2621
FillNullFn::fill_null(encoding, array_ref, fill_value)
2722
}
2823
}

vortex-array/src/compute/filter.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,7 @@ where
3131
for<'a> &'a E::Array: TryFrom<&'a ArrayData, Error = VortexError>,
3232
{
3333
fn filter(&self, array: &ArrayData, mask: FilterMask) -> VortexResult<ArrayData> {
34-
let array_ref = <&E::Array>::try_from(array)?;
35-
let encoding = array
36-
.encoding()
37-
.as_any()
38-
.downcast_ref::<E>()
39-
.ok_or_else(|| vortex_err!("Mismatched encoding"))?;
34+
let (array_ref, encoding) = array.downcast_array_ref::<E>()?;
4035
FilterFn::filter(encoding, array_ref, mask)
4136
}
4237
}

vortex-array/src/compute/invert.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use vortex_dtype::DType;
2-
use vortex_error::{vortex_bail, vortex_err, VortexError, VortexResult};
2+
use vortex_error::{vortex_bail, VortexError, VortexResult};
33

44
use crate::encoding::Encoding;
55
use crate::{ArrayDType, ArrayData, IntoArrayData, IntoArrayVariant};
@@ -15,12 +15,7 @@ where
1515
for<'a> &'a E::Array: TryFrom<&'a ArrayData, Error = VortexError>,
1616
{
1717
fn invert(&self, array: &ArrayData) -> VortexResult<ArrayData> {
18-
let array_ref = <&E::Array>::try_from(array)?;
19-
let encoding = array
20-
.encoding()
21-
.as_any()
22-
.downcast_ref::<E>()
23-
.ok_or_else(|| vortex_err!("Mismatched encoding"))?;
18+
let (array_ref, encoding) = array.downcast_array_ref::<E>()?;
2419
InvertFn::invert(encoding, array_ref)
2520
}
2621
}

vortex-array/src/compute/like.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use vortex_dtype::DType;
2-
use vortex_error::{vortex_bail, vortex_err, VortexError, VortexResult};
2+
use vortex_error::{vortex_bail, VortexError, VortexResult};
33

44
use crate::arrow::{Datum, FromArrowArray};
55
use crate::encoding::Encoding;
@@ -25,12 +25,7 @@ where
2525
pattern: &ArrayData,
2626
options: LikeOptions,
2727
) -> VortexResult<ArrayData> {
28-
let array_ref = <&E::Array>::try_from(array)?;
29-
let encoding = array
30-
.encoding()
31-
.as_any()
32-
.downcast_ref::<E>()
33-
.ok_or_else(|| vortex_err!("Mismatched encoding"))?;
28+
let (array_ref, encoding) = array.downcast_array_ref::<E>()?;
3429
LikeFn::like(encoding, array_ref, pattern, options)
3530
}
3631
}

vortex-array/src/compute/scalar_at.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,7 @@ where
1818
for<'a> &'a E::Array: TryFrom<&'a ArrayData, Error = VortexError>,
1919
{
2020
fn scalar_at(&self, array: &ArrayData, index: usize) -> VortexResult<Scalar> {
21-
let array_ref = <&E::Array>::try_from(array)?;
22-
let encoding = array
23-
.encoding()
24-
.as_any()
25-
.downcast_ref::<E>()
26-
.ok_or_else(|| vortex_err!("Mismatched encoding"))?;
21+
let (array_ref, encoding) = array.downcast_array_ref::<E>()?;
2722
ScalarAtFn::scalar_at(encoding, array_ref, index)
2823
}
2924
}

0 commit comments

Comments
 (0)