Skip to content

Commit 1f5ae06

Browse files
author
wiedld
committed
Revert "Migrate code from invoke to invoke_batch. (apache#13345)"
This reverts commit 66180fa.
1 parent 3e4ae49 commit 1f5ae06

10 files changed

Lines changed: 229 additions & 322 deletions

File tree

datafusion/functions/src/datetime/date_bin.rs

Lines changed: 110 additions & 171 deletions
Large diffs are not rendered by default.

datafusion/functions/src/datetime/date_trunc.rs

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,7 @@ mod tests {
484484

485485
use arrow::array::cast::as_primitive_array;
486486
use arrow::array::types::TimestampNanosecondType;
487-
use arrow::array::{Array, TimestampNanosecondArray};
487+
use arrow::array::TimestampNanosecondArray;
488488
use arrow::compute::kernels::cast_utils::string_to_timestamp_nanos;
489489
use arrow::datatypes::{DataType, TimeUnit};
490490
use datafusion_common::ScalarValue;
@@ -724,15 +724,12 @@ mod tests {
724724
.map(|s| Some(string_to_timestamp_nanos(s).unwrap()))
725725
.collect::<TimestampNanosecondArray>()
726726
.with_timezone_opt(tz_opt.clone());
727-
let batch_size = input.len();
727+
#[allow(deprecated)] // TODO migrate UDF invoke to invoke_batch
728728
let result = DateTruncFunc::new()
729-
.invoke_batch(
730-
&[
731-
ColumnarValue::Scalar(ScalarValue::from("day")),
732-
ColumnarValue::Array(Arc::new(input)),
733-
],
734-
batch_size,
735-
)
729+
.invoke(&[
730+
ColumnarValue::Scalar(ScalarValue::from("day")),
731+
ColumnarValue::Array(Arc::new(input)),
732+
])
736733
.unwrap();
737734
if let ColumnarValue::Array(result) = result {
738735
assert_eq!(
@@ -886,15 +883,12 @@ mod tests {
886883
.map(|s| Some(string_to_timestamp_nanos(s).unwrap()))
887884
.collect::<TimestampNanosecondArray>()
888885
.with_timezone_opt(tz_opt.clone());
889-
let batch_size = input.len();
886+
#[allow(deprecated)] // TODO migrate UDF invoke to invoke_batch
890887
let result = DateTruncFunc::new()
891-
.invoke_batch(
892-
&[
893-
ColumnarValue::Scalar(ScalarValue::from("hour")),
894-
ColumnarValue::Array(Arc::new(input)),
895-
],
896-
batch_size,
897-
)
888+
.invoke(&[
889+
ColumnarValue::Scalar(ScalarValue::from("hour")),
890+
ColumnarValue::Array(Arc::new(input)),
891+
])
898892
.unwrap();
899893
if let ColumnarValue::Array(result) = result {
900894
assert_eq!(

datafusion/functions/src/datetime/make_date.rs

Lines changed: 44 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -234,15 +234,13 @@ mod tests {
234234

235235
#[test]
236236
fn test_make_date() {
237+
#[allow(deprecated)] // TODO migrate UDF invoke to invoke_batch
237238
let res = MakeDateFunc::new()
238-
.invoke_batch(
239-
&[
240-
ColumnarValue::Scalar(ScalarValue::Int32(Some(2024))),
241-
ColumnarValue::Scalar(ScalarValue::Int64(Some(1))),
242-
ColumnarValue::Scalar(ScalarValue::UInt32(Some(14))),
243-
],
244-
1,
245-
)
239+
.invoke(&[
240+
ColumnarValue::Scalar(ScalarValue::Int32(Some(2024))),
241+
ColumnarValue::Scalar(ScalarValue::Int64(Some(1))),
242+
ColumnarValue::Scalar(ScalarValue::UInt32(Some(14))),
243+
])
246244
.expect("that make_date parsed values without error");
247245

248246
if let ColumnarValue::Scalar(ScalarValue::Date32(date)) = res {
@@ -251,15 +249,13 @@ mod tests {
251249
panic!("Expected a scalar value")
252250
}
253251

252+
#[allow(deprecated)] // TODO migrate UDF invoke to invoke_batch
254253
let res = MakeDateFunc::new()
255-
.invoke_batch(
256-
&[
257-
ColumnarValue::Scalar(ScalarValue::Int64(Some(2024))),
258-
ColumnarValue::Scalar(ScalarValue::UInt64(Some(1))),
259-
ColumnarValue::Scalar(ScalarValue::UInt32(Some(14))),
260-
],
261-
1,
262-
)
254+
.invoke(&[
255+
ColumnarValue::Scalar(ScalarValue::Int64(Some(2024))),
256+
ColumnarValue::Scalar(ScalarValue::UInt64(Some(1))),
257+
ColumnarValue::Scalar(ScalarValue::UInt32(Some(14))),
258+
])
263259
.expect("that make_date parsed values without error");
264260

265261
if let ColumnarValue::Scalar(ScalarValue::Date32(date)) = res {
@@ -268,15 +264,13 @@ mod tests {
268264
panic!("Expected a scalar value")
269265
}
270266

267+
#[allow(deprecated)] // TODO migrate UDF invoke to invoke_batch
271268
let res = MakeDateFunc::new()
272-
.invoke_batch(
273-
&[
274-
ColumnarValue::Scalar(ScalarValue::Utf8(Some("2024".to_string()))),
275-
ColumnarValue::Scalar(ScalarValue::LargeUtf8(Some("1".to_string()))),
276-
ColumnarValue::Scalar(ScalarValue::Utf8(Some("14".to_string()))),
277-
],
278-
1,
279-
)
269+
.invoke(&[
270+
ColumnarValue::Scalar(ScalarValue::Utf8(Some("2024".to_string()))),
271+
ColumnarValue::Scalar(ScalarValue::LargeUtf8(Some("1".to_string()))),
272+
ColumnarValue::Scalar(ScalarValue::Utf8(Some("14".to_string()))),
273+
])
280274
.expect("that make_date parsed values without error");
281275

282276
if let ColumnarValue::Scalar(ScalarValue::Date32(date)) = res {
@@ -288,16 +282,13 @@ mod tests {
288282
let years = Arc::new((2021..2025).map(Some).collect::<Int64Array>());
289283
let months = Arc::new((1..5).map(Some).collect::<Int32Array>());
290284
let days = Arc::new((11..15).map(Some).collect::<UInt32Array>());
291-
let batch_size = years.len();
285+
#[allow(deprecated)] // TODO migrate UDF invoke to invoke_batch
292286
let res = MakeDateFunc::new()
293-
.invoke_batch(
294-
&[
295-
ColumnarValue::Array(years),
296-
ColumnarValue::Array(months),
297-
ColumnarValue::Array(days),
298-
],
299-
batch_size,
300-
)
287+
.invoke(&[
288+
ColumnarValue::Array(years),
289+
ColumnarValue::Array(months),
290+
ColumnarValue::Array(days),
291+
])
301292
.expect("that make_date parsed values without error");
302293

303294
if let ColumnarValue::Array(array) = res {
@@ -317,50 +308,45 @@ mod tests {
317308
//
318309

319310
// invalid number of arguments
311+
#[allow(deprecated)] // TODO migrate UDF invoke to invoke_batch
320312
let res = MakeDateFunc::new()
321-
.invoke_batch(&[ColumnarValue::Scalar(ScalarValue::Int32(Some(1)))], 1);
313+
.invoke(&[ColumnarValue::Scalar(ScalarValue::Int32(Some(1)))]);
322314
assert_eq!(
323315
res.err().unwrap().strip_backtrace(),
324316
"Execution error: make_date function requires 3 arguments, got 1"
325317
);
326318

327319
// invalid type
328-
let res = MakeDateFunc::new().invoke_batch(
329-
&[
330-
ColumnarValue::Scalar(ScalarValue::IntervalYearMonth(Some(1))),
331-
ColumnarValue::Scalar(ScalarValue::TimestampNanosecond(Some(1), None)),
332-
ColumnarValue::Scalar(ScalarValue::TimestampNanosecond(Some(1), None)),
333-
],
334-
1,
335-
);
320+
#[allow(deprecated)] // TODO migrate UDF invoke to invoke_batch
321+
let res = MakeDateFunc::new().invoke(&[
322+
ColumnarValue::Scalar(ScalarValue::IntervalYearMonth(Some(1))),
323+
ColumnarValue::Scalar(ScalarValue::TimestampNanosecond(Some(1), None)),
324+
ColumnarValue::Scalar(ScalarValue::TimestampNanosecond(Some(1), None)),
325+
]);
336326
assert_eq!(
337327
res.err().unwrap().strip_backtrace(),
338328
"Arrow error: Cast error: Casting from Interval(YearMonth) to Int32 not supported"
339329
);
340330

341331
// overflow of month
342-
let res = MakeDateFunc::new().invoke_batch(
343-
&[
344-
ColumnarValue::Scalar(ScalarValue::Int32(Some(2023))),
345-
ColumnarValue::Scalar(ScalarValue::UInt64(Some(u64::MAX))),
346-
ColumnarValue::Scalar(ScalarValue::Int32(Some(22))),
347-
],
348-
1,
349-
);
332+
#[allow(deprecated)] // TODO migrate UDF invoke to invoke_batch
333+
let res = MakeDateFunc::new().invoke(&[
334+
ColumnarValue::Scalar(ScalarValue::Int32(Some(2023))),
335+
ColumnarValue::Scalar(ScalarValue::UInt64(Some(u64::MAX))),
336+
ColumnarValue::Scalar(ScalarValue::Int32(Some(22))),
337+
]);
350338
assert_eq!(
351339
res.err().unwrap().strip_backtrace(),
352340
"Arrow error: Cast error: Can't cast value 18446744073709551615 to type Int32"
353341
);
354342

355343
// overflow of day
356-
let res = MakeDateFunc::new().invoke_batch(
357-
&[
358-
ColumnarValue::Scalar(ScalarValue::Int32(Some(2023))),
359-
ColumnarValue::Scalar(ScalarValue::Int32(Some(22))),
360-
ColumnarValue::Scalar(ScalarValue::UInt32(Some(u32::MAX))),
361-
],
362-
1,
363-
);
344+
#[allow(deprecated)] // TODO migrate UDF invoke to invoke_batch
345+
let res = MakeDateFunc::new().invoke(&[
346+
ColumnarValue::Scalar(ScalarValue::Int32(Some(2023))),
347+
ColumnarValue::Scalar(ScalarValue::Int32(Some(22))),
348+
ColumnarValue::Scalar(ScalarValue::UInt32(Some(u32::MAX))),
349+
]);
364350
assert_eq!(
365351
res.err().unwrap().strip_backtrace(),
366352
"Arrow error: Cast error: Can't cast value 4294967295 to type Int32"

datafusion/functions/src/datetime/to_char.rs

Lines changed: 24 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -384,11 +384,9 @@ mod tests {
384384
];
385385

386386
for (value, format, expected) in scalar_data {
387+
#[allow(deprecated)] // TODO migrate UDF invoke to invoke_batch
387388
let result = ToCharFunc::new()
388-
.invoke_batch(
389-
&[ColumnarValue::Scalar(value), ColumnarValue::Scalar(format)],
390-
1,
391-
)
389+
.invoke(&[ColumnarValue::Scalar(value), ColumnarValue::Scalar(format)])
392390
.expect("that to_char parsed values without error");
393391

394392
if let ColumnarValue::Scalar(ScalarValue::Utf8(date)) = result {
@@ -461,15 +459,12 @@ mod tests {
461459
];
462460

463461
for (value, format, expected) in scalar_array_data {
464-
let batch_size = format.len();
462+
#[allow(deprecated)] // TODO migrate UDF invoke to invoke_batch
465463
let result = ToCharFunc::new()
466-
.invoke_batch(
467-
&[
468-
ColumnarValue::Scalar(value),
469-
ColumnarValue::Array(Arc::new(format) as ArrayRef),
470-
],
471-
batch_size,
472-
)
464+
.invoke(&[
465+
ColumnarValue::Scalar(value),
466+
ColumnarValue::Array(Arc::new(format) as ArrayRef),
467+
])
473468
.expect("that to_char parsed values without error");
474469

475470
if let ColumnarValue::Scalar(ScalarValue::Utf8(date)) = result {
@@ -590,15 +585,12 @@ mod tests {
590585
];
591586

592587
for (value, format, expected) in array_scalar_data {
593-
let batch_size = value.len();
588+
#[allow(deprecated)] // TODO migrate UDF invoke to invoke_batch
594589
let result = ToCharFunc::new()
595-
.invoke_batch(
596-
&[
597-
ColumnarValue::Array(value as ArrayRef),
598-
ColumnarValue::Scalar(format),
599-
],
600-
batch_size,
601-
)
590+
.invoke(&[
591+
ColumnarValue::Array(value as ArrayRef),
592+
ColumnarValue::Scalar(format),
593+
])
602594
.expect("that to_char parsed values without error");
603595

604596
if let ColumnarValue::Array(result) = result {
@@ -610,15 +602,12 @@ mod tests {
610602
}
611603

612604
for (value, format, expected) in array_array_data {
613-
let batch_size = value.len();
605+
#[allow(deprecated)] // TODO migrate UDF invoke to invoke_batch
614606
let result = ToCharFunc::new()
615-
.invoke_batch(
616-
&[
617-
ColumnarValue::Array(value),
618-
ColumnarValue::Array(Arc::new(format) as ArrayRef),
619-
],
620-
batch_size,
621-
)
607+
.invoke(&[
608+
ColumnarValue::Array(value),
609+
ColumnarValue::Array(Arc::new(format) as ArrayRef),
610+
])
622611
.expect("that to_char parsed values without error");
623612

624613
if let ColumnarValue::Array(result) = result {
@@ -634,21 +623,20 @@ mod tests {
634623
//
635624

636625
// invalid number of arguments
626+
#[allow(deprecated)] // TODO migrate UDF invoke to invoke_batch
637627
let result = ToCharFunc::new()
638-
.invoke_batch(&[ColumnarValue::Scalar(ScalarValue::Int32(Some(1)))], 1);
628+
.invoke(&[ColumnarValue::Scalar(ScalarValue::Int32(Some(1)))]);
639629
assert_eq!(
640630
result.err().unwrap().strip_backtrace(),
641631
"Execution error: to_char function requires 2 arguments, got 1"
642632
);
643633

644634
// invalid type
645-
let result = ToCharFunc::new().invoke_batch(
646-
&[
647-
ColumnarValue::Scalar(ScalarValue::Int32(Some(1))),
648-
ColumnarValue::Scalar(ScalarValue::TimestampNanosecond(Some(1), None)),
649-
],
650-
1,
651-
);
635+
#[allow(deprecated)] // TODO migrate UDF invoke to invoke_batch
636+
let result = ToCharFunc::new().invoke(&[
637+
ColumnarValue::Scalar(ScalarValue::Int32(Some(1))),
638+
ColumnarValue::Scalar(ScalarValue::TimestampNanosecond(Some(1), None)),
639+
]);
652640
assert_eq!(
653641
result.err().unwrap().strip_backtrace(),
654642
"Execution error: Format for `to_char` must be non-null Utf8, received Timestamp(Nanosecond, None)"

0 commit comments

Comments
 (0)