@@ -368,9 +368,10 @@ static arrow::Status Do(arrow::compute::KernelContext* ctx, const arrow::compute
368
368
auto * builderImpl = CastToScalarBuilderImpl<TScalarBuilderImpl>(builder);
369
369
370
370
auto item = readerImpl->GetScalarItem (*arg.scalar ());
371
- TDerived::Process (item, state. GetValueBuilder (), [&](auto out) {
371
+ auto sink = [&](auto out) {
372
372
*res = builderImpl->Build (out);
373
- });
373
+ };
374
+ TDerived::Process (item, state.GetValueBuilder (), sink);
374
375
}
375
376
else {
376
377
auto & array = *arg.array ();
@@ -383,9 +384,10 @@ static arrow::Status Do(arrow::compute::KernelContext* ctx, const arrow::compute
383
384
for (int64_t i = 0 ; i < array.length ;) {
384
385
for (size_t j = 0 ; j < maxBlockLength && i < array.length ; ++j, ++i) {
385
386
auto item = readerImpl->GetItem (array, i);
386
- TDerived::Process (item, state.GetValueBuilder (), [&](auto out) {
387
- builder.Add (out);
388
- });
387
+ auto sink = [&](auto out) {
388
+ builderImpl->Add (out);
389
+ };
390
+ TDerived::Process (item, state.GetValueBuilder (), sink);
389
391
}
390
392
auto outputDatum = builderImpl->Build (false );
391
393
ForEachArrayData (outputDatum, [&](const auto & arr) { outputArrays.push_back (arr); });
@@ -418,9 +420,10 @@ struct TBinaryKernelExec {
418
420
auto item1 = reader1Impl->GetScalarItem (*arg1.scalar ());
419
421
auto item2 = reader2Impl->GetScalarItem (*arg2.scalar ());
420
422
421
- TDerived::Process (item1, item2, state. GetValueBuilder (), [&](TBlockItem out) {
423
+ auto sink = [&](TBlockItem out) {
422
424
*res = builderImpl->Build (out);
423
- });
425
+ };
426
+ TDerived::Process (item1, item2, state.GetValueBuilder (), sink);
424
427
}
425
428
else if (arg1.is_scalar () && arg2.is_array ()) {
426
429
auto item1 = reader1Impl->GetScalarItem (*arg1.scalar ());
@@ -434,9 +437,11 @@ struct TBinaryKernelExec {
434
437
for (int64_t i = 0 ; i < array2.length ;) {
435
438
for (size_t j = 0 ; j < maxBlockLength && i < array2.length ; ++j, ++i) {
436
439
auto item2 = reader2Impl->GetItem (array2, i);
437
- TDerived::Process (item1, item2, state.GetValueBuilder (), [&](TBlockItem out) {
440
+
441
+ auto sink = [&](TBlockItem out) {
438
442
builderImpl->Add (out);
439
- });
443
+ };
444
+ TDerived::Process (item1, item2, state.GetValueBuilder (), sink);
440
445
}
441
446
auto outputDatum = builder.Build (false );
442
447
ForEachArrayData (outputDatum, [&](const auto & arr) { outputArrays.push_back (arr); });
@@ -455,9 +460,11 @@ struct TBinaryKernelExec {
455
460
for (int64_t i = 0 ; i < array1.length ;) {
456
461
for (size_t j = 0 ; j < maxBlockLength && i < array1.length ; ++j, ++i) {
457
462
auto item1 = reader1Impl->GetItem (array1, i);
458
- TDerived::Process (item1, item2, state.GetValueBuilder (), [&](TBlockItem out) {
463
+
464
+ auto sink = [&](TBlockItem out) {
459
465
builderImpl->Add (out);
460
- });
466
+ };
467
+ TDerived::Process (item1, item2, state.GetValueBuilder (), sink);
461
468
}
462
469
auto outputDatum = builder.Build (false );
463
470
ForEachArrayData (outputDatum, [&](const auto & arr) { outputArrays.push_back (arr); });
@@ -479,9 +486,11 @@ struct TBinaryKernelExec {
479
486
for (size_t j = 0 ; j < maxBlockLength && i < array1.length ; ++j, ++i) {
480
487
auto item1 = reader1Impl->GetItem (array1, i);
481
488
auto item2 = reader2Impl->GetItem (array2, i);
482
- TDerived::Process (item1, item2, state.GetValueBuilder (), [&](TBlockItem out) {
489
+
490
+ auto sink = [&](TBlockItem out) {
483
491
builderImpl->Add (out);
484
- });
492
+ };
493
+ TDerived::Process (item1, item2, state.GetValueBuilder (), sink);
485
494
}
486
495
auto outputDatum = builder.Build (false );
487
496
ForEachArrayData (outputDatum, [&](const auto & arr) { outputArrays.push_back (arr); });
@@ -536,9 +545,11 @@ struct TGenericKernelExec {
536
545
auto & reader = state.GetReader (k);
537
546
args[k] = reader.GetScalarItem (*batch[k].scalar ());
538
547
}
539
- TDerived::Process (items, state.GetValueBuilder (), [&](TBlockItem out) {
548
+
549
+ auto sink = [&](TBlockItem out) {
540
550
*res = builderImpl->Build (out);
541
- });
551
+ };
552
+ TDerived::Process (items, state.GetValueBuilder (), sink);
542
553
} else {
543
554
auto & builder = state.GetArrayBuilder ();
544
555
auto * builderImpl = CastToArrayBuilderImpl<TArrayBuilderImpl>(builder);
@@ -566,9 +577,11 @@ struct TGenericKernelExec {
566
577
567
578
args[k] = reader.GetItem (*batch[k].array (), i);
568
579
}
569
- TDerived::Process (items, state.GetValueBuilder (), [&](TBlockItem out) {
580
+
581
+ auto sink = [&](TBlockItem out) {
570
582
builderImpl->Add (out);
571
- });
583
+ };
584
+ TDerived::Process (items, state.GetValueBuilder (), sink);
572
585
}
573
586
auto outputDatum = builderImpl->Build (false );
574
587
ForEachArrayData (outputDatum, [&](const auto & arr) { outputArrays.push_back (arr); });
0 commit comments