You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ZipExecuteAdaptor dispatches only on the if_true branch #10908
ZipExecuteAdaptor and ZipReduceAdaptor (vortex-array/src/scalar_fn/fns/zip/kernel.rs) run a ZipKernel or ZipReduce only when the encoded array is child 0, the if_true branch. An encoded array in the if_false branch never reaches its kernel, so the zip decodes it even when the kernel could handle it. All seven ZipKernel implementations have this gap.
#10891 ran into it for Widen. Covering if_false needed a second hand-written ExecuteParentKernel and an enum to put the branches back in order, so the PR dropped the if_false case instead.
Proposed solution
Let the adaptors handle child 1, as CompareExecuteAdaptor does in vortex-array/src/scalar_fn/fns/binary/compare/mod.rs. That adaptor normalizes the child index so that the encoded array always comes first, and it swaps the operator.
Zip cannot simply swap its branches, because the mask selects if_true. Inverting the mask does not work either: a null mask row selects if_false, and not keeps it null. So ZipKernel::zip and ZipReduce::zip need to know which branch the array is, for example through a branch argument.
Additional context
Found in #10891 (tracking issue #10733). Once this lands, the Widen zip kernel can cover if_false with no extra code.
Activity
Update the Widen and decimal plan for the PRs since 2026-10-26
Dispatch zip kernels on either value branch (vortex-data#11138)