Skip to content

Commit 6d4a7f8

Browse files
deprecate: into_arrow (#7577)
## deprecated use `execute_arrow` Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
1 parent dccfb24 commit 6d4a7f8

24 files changed

Lines changed: 221 additions & 114 deletions

File tree

encodings/sparse/src/canonical.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -576,7 +576,7 @@ mod test {
576576
use vortex_array::arrays::VarBinArray;
577577
use vortex_array::arrays::VarBinViewArray;
578578
use vortex_array::arrays::listview::ListViewArrayExt;
579-
use vortex_array::arrow::IntoArrowArray as _;
579+
use vortex_array::arrow::ArrowArrayExecutor;
580580
use vortex_array::assert_arrays_eq;
581581
use vortex_array::dtype::DType;
582582
use vortex_array::dtype::DecimalDType;
@@ -829,7 +829,7 @@ mod test {
829829
Validity::from_mask(Mask::from_excluded_indices(10, vec![8]), Nullable),
830830
)
831831
.into_array()
832-
.into_arrow_preferred()
832+
.execute_arrow(None, &mut ctx)
833833
.unwrap();
834834

835835
let actual = sparse_struct
@@ -838,7 +838,7 @@ mod test {
838838
.execute::<DecimalArray>(&mut ctx)
839839
.unwrap()
840840
.into_array()
841-
.into_arrow_preferred()
841+
.execute_arrow(None, &mut ctx)
842842
.unwrap();
843843

844844
assert_eq!(expected.data_type(), actual.data_type());
@@ -1555,8 +1555,10 @@ mod test {
15551555

15561556
// Note that the preferred arrow list representation is `List` (not `ListView`).
15571557
let arrow_dtype = expected.dtype().to_arrow_dtype().unwrap();
1558-
let actual = actual.into_arrow(&arrow_dtype).unwrap();
1559-
let expected = expected.into_arrow(&arrow_dtype).unwrap();
1558+
let actual = actual.execute_arrow(Some(&arrow_dtype), &mut ctx).unwrap();
1559+
let expected = expected
1560+
.execute_arrow(Some(&arrow_dtype), &mut ctx)
1561+
.unwrap();
15601562

15611563
assert_eq!(actual.data_type(), expected.data_type());
15621564
Ok(())

vortex-array/public-api.lock

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6798,11 +6798,11 @@ impl vortex_array::arrow::Datum
67986798

67996799
pub fn vortex_array::arrow::Datum::data_type(&self) -> &arrow_schema::datatype::DataType
68006800

6801-
pub fn vortex_array::arrow::Datum::try_new(array: &vortex_array::ArrayRef) -> vortex_error::VortexResult<Self>
6801+
pub fn vortex_array::arrow::Datum::try_new(array: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<Self>
68026802

6803-
pub fn vortex_array::arrow::Datum::try_new_array(array: &vortex_array::ArrayRef) -> vortex_error::VortexResult<Self>
6803+
pub fn vortex_array::arrow::Datum::try_new_array(array: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<Self>
68046804

6805-
pub fn vortex_array::arrow::Datum::try_new_with_target_datatype(array: &vortex_array::ArrayRef, target_datatype: &arrow_schema::datatype::DataType) -> vortex_error::VortexResult<Self>
6805+
pub fn vortex_array::arrow::Datum::try_new_with_target_datatype(array: &vortex_array::ArrayRef, target_datatype: &arrow_schema::datatype::DataType, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<Self>
68066806

68076807
impl arrow_array::scalar::Datum for vortex_array::arrow::Datum
68086808

@@ -15608,7 +15608,7 @@ pub fn vortex_array::scalar_fn::fns::binary::Binary::coerce_args(&self, operator
1560815608

1560915609
pub fn vortex_array::scalar_fn::fns::binary::Binary::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult<Self::Options>
1561015610

15611-
pub fn vortex_array::scalar_fn::fns::binary::Binary::execute(&self, op: &vortex_array::scalar_fn::fns::operators::Operator, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<vortex_array::ArrayRef>
15611+
pub fn vortex_array::scalar_fn::fns::binary::Binary::execute(&self, op: &vortex_array::scalar_fn::fns::operators::Operator, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<vortex_array::ArrayRef>
1561215612

1561315613
pub fn vortex_array::scalar_fn::fns::binary::Binary::fmt_sql(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
1561415614

@@ -16252,7 +16252,7 @@ pub fn vortex_array::scalar_fn::fns::like::Like::coerce_args(&self, options: &Se
1625216252

1625316253
pub fn vortex_array::scalar_fn::fns::like::Like::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult<Self::Options>
1625416254

16255-
pub fn vortex_array::scalar_fn::fns::like::Like::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<vortex_array::ArrayRef>
16255+
pub fn vortex_array::scalar_fn::fns::like::Like::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<vortex_array::ArrayRef>
1625616256

1625716257
pub fn vortex_array::scalar_fn::fns::like::Like::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
1625816258

@@ -17752,7 +17752,7 @@ pub fn vortex_array::scalar_fn::fns::binary::Binary::coerce_args(&self, operator
1775217752

1775317753
pub fn vortex_array::scalar_fn::fns::binary::Binary::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult<Self::Options>
1775417754

17755-
pub fn vortex_array::scalar_fn::fns::binary::Binary::execute(&self, op: &vortex_array::scalar_fn::fns::operators::Operator, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<vortex_array::ArrayRef>
17755+
pub fn vortex_array::scalar_fn::fns::binary::Binary::execute(&self, op: &vortex_array::scalar_fn::fns::operators::Operator, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<vortex_array::ArrayRef>
1775617756

1775717757
pub fn vortex_array::scalar_fn::fns::binary::Binary::fmt_sql(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
1775817758

@@ -18056,7 +18056,7 @@ pub fn vortex_array::scalar_fn::fns::like::Like::coerce_args(&self, options: &Se
1805618056

1805718057
pub fn vortex_array::scalar_fn::fns::like::Like::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult<Self::Options>
1805818058

18059-
pub fn vortex_array::scalar_fn::fns::like::Like::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<vortex_array::ArrayRef>
18059+
pub fn vortex_array::scalar_fn::fns::like::Like::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<vortex_array::ArrayRef>
1806018060

1806118061
pub fn vortex_array::scalar_fn::fns::like::Like::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
1806218062

vortex-array/src/arrays/constant/compute/fill_null.rs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@ impl FillNullReduce for Constant {
2222
#[cfg(test)]
2323
mod test {
2424
use crate::IntoArray as _;
25+
use crate::LEGACY_SESSION;
26+
use crate::VortexSessionExecute;
2527
use crate::arrays::ConstantArray;
26-
use crate::arrow::IntoArrowArray as _;
28+
use crate::arrow::ArrowArrayExecutor;
2729
use crate::builtins::ArrayBuiltins;
2830
use crate::dtype::DType;
2931
use crate::dtype::Nullability;
@@ -32,6 +34,7 @@ mod test {
3234

3335
#[test]
3436
fn test_null() {
37+
let mut ctx = LEGACY_SESSION.create_execution_ctx();
3538
let actual = ConstantArray::new(Scalar::null_native::<i32>(), 3)
3639
.into_array()
3740
.fill_null(Scalar::from(1))
@@ -40,8 +43,8 @@ mod test {
4043

4144
assert!(!actual.dtype().is_nullable());
4245

43-
let actual_arrow = actual.clone().into_arrow_preferred().unwrap();
44-
let expected_arrow = expected.clone().into_arrow_preferred().unwrap();
46+
let actual_arrow = actual.clone().execute_arrow(None, &mut ctx).unwrap();
47+
let expected_arrow = expected.clone().execute_arrow(None, &mut ctx).unwrap();
4548
assert_eq!(
4649
&actual_arrow,
4750
&expected_arrow,
@@ -53,6 +56,7 @@ mod test {
5356

5457
#[test]
5558
fn test_non_null() {
59+
let mut ctx = LEGACY_SESSION.create_execution_ctx();
5660
let actual = ConstantArray::new(Scalar::from(Some(1)), 3)
5761
.into_array()
5862
.fill_null(Scalar::from(1))
@@ -61,8 +65,8 @@ mod test {
6165

6266
assert!(!actual.dtype().is_nullable());
6367

64-
let actual_arrow = actual.clone().into_arrow_preferred().unwrap();
65-
let expected_arrow = expected.clone().into_arrow_preferred().unwrap();
68+
let actual_arrow = actual.clone().execute_arrow(None, &mut ctx).unwrap();
69+
let expected_arrow = expected.clone().execute_arrow(None, &mut ctx).unwrap();
6670
assert_eq!(
6771
&actual_arrow,
6872
&expected_arrow,
@@ -74,6 +78,7 @@ mod test {
7478

7579
#[test]
7680
fn test_non_nullable_with_nullable() {
81+
let mut ctx = LEGACY_SESSION.create_execution_ctx();
7782
let actual = ConstantArray::new(Scalar::from(1), 3)
7883
.into_array()
7984
.fill_null(Scalar::new(
@@ -87,8 +92,8 @@ mod test {
8792

8893
assert!(actual.dtype().is_nullable());
8994

90-
let actual_arrow = actual.clone().into_arrow_preferred().unwrap();
91-
let expected_arrow = expected.clone().into_arrow_preferred().unwrap();
95+
let actual_arrow = actual.clone().execute_arrow(None, &mut ctx).unwrap();
96+
let expected_arrow = expected.clone().execute_arrow(None, &mut ctx).unwrap();
9297
assert_eq!(
9398
&actual_arrow,
9499
&expected_arrow,

vortex-array/src/arrays/filter/execute/varbinview.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@ use vortex_mask::MaskValues;
1010

1111
use crate::ArrayRef;
1212
use crate::IntoArray;
13+
use crate::LEGACY_SESSION;
14+
use crate::VortexSessionExecute;
1315
use crate::arrays::VarBinView;
1416
use crate::arrays::VarBinViewArray;
17+
use crate::arrow::ArrowArrayExecutor;
1518
use crate::arrow::FromArrowArray;
16-
use crate::arrow::IntoArrowArray;
1719

1820
pub fn filter_varbinview(array: &VarBinViewArray, mask: &Arc<MaskValues>) -> VarBinViewArray {
1921
// Delegate to the Arrow implementation of filter over `VarBinView`.
@@ -29,7 +31,9 @@ fn arrow_filter_fn(array: &ArrayRef, mask: &Mask) -> vortex_error::VortexResult<
2931
Mask::AllTrue(_) | Mask::AllFalse(_) => unreachable!("check in filter invoke"),
3032
};
3133

32-
let array_ref = array.clone().into_arrow_preferred()?;
34+
let array_ref = array
35+
.clone()
36+
.execute_arrow(None, &mut LEGACY_SESSION.create_execution_ctx())?;
3337
let mask_array = BooleanArray::new(values.bit_buffer().clone().into(), None);
3438
let filtered = arrow_select::filter::filter(array_ref.as_ref(), &mask_array)?;
3539

vortex-array/src/arrays/varbin/compute/compare.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,10 @@ impl CompareKernel for VarBin {
8080
));
8181
}
8282

83-
let lhs = Datum::try_new(lhs.array())?;
83+
let lhs = Datum::try_new(lhs.array(), ctx)?;
8484

8585
// Use StringViewArray/BinaryViewArray to match the Utf8View/BinaryView types
86-
// produced by Datum::try_new (which uses into_arrow_preferred())
86+
// produced by Datum::try_new (which uses execute_arrow(None, ctx))
8787
let arrow_rhs: &dyn arrow_array::Datum = match rhs_const.dtype() {
8888
DType::Utf8(_) => &rhs_const
8989
.as_utf8()

vortex-array/src/arrow/datum.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ use crate::LEGACY_SESSION;
1515
use crate::VortexSessionExecute;
1616
use crate::arrays::Constant;
1717
use crate::arrays::ConstantArray;
18+
use crate::arrow::ArrowArrayExecutor;
1819
use crate::arrow::FromArrowArray;
19-
use crate::arrow::IntoArrowArray;
20+
use crate::executor::ExecutionCtx;
2021

2122
/// A wrapper around a generic Arrow array that can be used as a Datum in Arrow compute.
2223
#[derive(Debug)]
@@ -27,41 +28,44 @@ pub struct Datum {
2728

2829
impl Datum {
2930
/// Create a new [`Datum`] from an [`ArrayRef`], which can then be passed to Arrow compute.
30-
pub fn try_new(array: &ArrayRef) -> VortexResult<Self> {
31+
pub fn try_new(array: &ArrayRef, ctx: &mut ExecutionCtx) -> VortexResult<Self> {
3132
if array.is::<Constant>() {
3233
Ok(Self {
33-
array: array.slice(0..1)?.into_arrow_preferred()?,
34+
array: array.slice(0..1)?.execute_arrow(None, ctx)?,
3435
is_scalar: true,
3536
})
3637
} else {
3738
Ok(Self {
38-
array: array.clone().into_arrow_preferred()?,
39+
array: array.clone().execute_arrow(None, ctx)?,
3940
is_scalar: false,
4041
})
4142
}
4243
}
4344

4445
/// Create a new [`Datum`] from an `DynArray`, which can then be passed to Arrow compute.
4546
/// This not try and convert the array to a scalar if it is constant.
46-
pub fn try_new_array(array: &ArrayRef) -> VortexResult<Self> {
47+
pub fn try_new_array(array: &ArrayRef, ctx: &mut ExecutionCtx) -> VortexResult<Self> {
4748
Ok(Self {
48-
array: array.clone().into_arrow_preferred()?,
49+
array: array.clone().execute_arrow(None, ctx)?,
4950
is_scalar: false,
5051
})
5152
}
5253

5354
pub fn try_new_with_target_datatype(
5455
array: &ArrayRef,
5556
target_datatype: &DataType,
57+
ctx: &mut ExecutionCtx,
5658
) -> VortexResult<Self> {
5759
if array.is::<Constant>() {
5860
Ok(Self {
59-
array: array.slice(0..1)?.into_arrow(target_datatype)?,
61+
array: array
62+
.slice(0..1)?
63+
.execute_arrow(Some(target_datatype), ctx)?,
6064
is_scalar: true,
6165
})
6266
} else {
6367
Ok(Self {
64-
array: array.clone().into_arrow(target_datatype)?,
68+
array: array.clone().execute_arrow(Some(target_datatype), ctx)?,
6569
is_scalar: false,
6670
})
6771
}

vortex-array/src/arrow/executor/decimal.rs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,6 @@ mod tests {
226226
use crate::VortexSessionExecute;
227227
use crate::array::IntoArray;
228228
use crate::arrow::ArrowArrayExecutor;
229-
use crate::arrow::IntoArrowArray;
230229
use crate::arrow::executor::decimal::DecimalArray;
231230
use crate::builders::ArrayBuilder;
232231
use crate::builders::DecimalBuilder;
@@ -236,16 +235,16 @@ mod tests {
236235

237236
#[test]
238237
fn decimal_to_arrow() -> VortexResult<()> {
238+
let mut ctx = LEGACY_SESSION.create_execution_ctx();
239239
// Make a very simple i128 and i256 array.
240240
let decimal_vortex = DecimalArray::new(
241241
buffer![1i128, 2i128, 3i128, 4i128, 5i128],
242242
DecimalDType::new(19, 2),
243243
Validity::NonNullable,
244244
);
245-
let arrow = decimal_vortex.into_array().execute_arrow(
246-
Some(&DataType::Decimal128(19, 2)),
247-
&mut LEGACY_SESSION.create_execution_ctx(),
248-
)?;
245+
let arrow = decimal_vortex
246+
.into_array()
247+
.execute_arrow(Some(&DataType::Decimal128(19, 2)), &mut ctx)?;
249248
assert_eq!(arrow.data_type(), &DataType::Decimal128(19, 2));
250249
let decimal_array = arrow.as_any().downcast_ref::<Decimal128Array>().unwrap();
251250
assert_eq!(
@@ -265,13 +264,14 @@ mod tests {
265264
fn test_to_arrow_decimal128<T: NativeDecimalType>(
266265
#[case] _decimal_type: T,
267266
) -> VortexResult<()> {
267+
let mut ctx = LEGACY_SESSION.create_execution_ctx();
268268
let mut decimal = DecimalBuilder::new::<T>(DecimalDType::new(2, 1), false.into());
269269
decimal.append_value(10);
270270
decimal.append_value(11);
271271
decimal.append_value(12);
272272
let decimal = decimal.finish();
273273

274-
let arrow_array = decimal.into_arrow(&DataType::Decimal128(2, 1))?;
274+
let arrow_array = decimal.execute_arrow(Some(&DataType::Decimal128(2, 1)), &mut ctx)?;
275275
let arrow_decimal = arrow_array
276276
.as_any()
277277
.downcast_ref::<Decimal128Array>()
@@ -292,13 +292,14 @@ mod tests {
292292
fn test_to_arrow_decimal32<T: NativeDecimalType>(#[case] _decimal_type: T) -> VortexResult<()> {
293293
use arrow_array::Decimal32Array;
294294

295+
let mut ctx = LEGACY_SESSION.create_execution_ctx();
295296
let mut decimal = DecimalBuilder::new::<T>(DecimalDType::new(2, 1), false.into());
296297
decimal.append_value(10);
297298
decimal.append_value(11);
298299
decimal.append_value(12);
299300
let decimal = decimal.finish();
300301

301-
let arrow_array = decimal.into_arrow(&DataType::Decimal32(2, 1))?;
302+
let arrow_array = decimal.execute_arrow(Some(&DataType::Decimal32(2, 1)), &mut ctx)?;
302303
let arrow_decimal = arrow_array
303304
.as_any()
304305
.downcast_ref::<Decimal32Array>()
@@ -319,13 +320,14 @@ mod tests {
319320
fn test_to_arrow_decimal64<T: NativeDecimalType>(#[case] _decimal_type: T) -> VortexResult<()> {
320321
use arrow_array::Decimal64Array;
321322

323+
let mut ctx = LEGACY_SESSION.create_execution_ctx();
322324
let mut decimal = DecimalBuilder::new::<T>(DecimalDType::new(2, 1), false.into());
323325
decimal.append_value(10);
324326
decimal.append_value(11);
325327
decimal.append_value(12);
326328
let decimal = decimal.finish();
327329

328-
let arrow_array = decimal.into_arrow(&DataType::Decimal64(2, 1))?;
330+
let arrow_array = decimal.execute_arrow(Some(&DataType::Decimal64(2, 1)), &mut ctx)?;
329331
let arrow_decimal = arrow_array
330332
.as_any()
331333
.downcast_ref::<Decimal64Array>()
@@ -346,13 +348,14 @@ mod tests {
346348
fn test_to_arrow_decimal256<T: NativeDecimalType>(
347349
#[case] _decimal_type: T,
348350
) -> VortexResult<()> {
351+
let mut ctx = LEGACY_SESSION.create_execution_ctx();
349352
let mut decimal = DecimalBuilder::new::<T>(DecimalDType::new(2, 1), false.into());
350353
decimal.append_value(10);
351354
decimal.append_value(11);
352355
decimal.append_value(12);
353356
let decimal = decimal.finish();
354357

355-
let arrow_array = decimal.into_arrow(&DataType::Decimal256(2, 1))?;
358+
let arrow_array = decimal.execute_arrow(Some(&DataType::Decimal256(2, 1)), &mut ctx)?;
356359
let arrow_decimal = arrow_array
357360
.as_any()
358361
.downcast_ref::<Decimal256Array>()

0 commit comments

Comments
 (0)