diff --git a/cpp/src/arrow/compute/kernels/vector_selection_take_internal.cc b/cpp/src/arrow/compute/kernels/vector_selection_take_internal.cc index 9892267e6bfc9..160fd2d5133a1 100644 --- a/cpp/src/arrow/compute/kernels/vector_selection_take_internal.cc +++ b/cpp/src/arrow/compute/kernels/vector_selection_take_internal.cc @@ -830,15 +830,9 @@ class TakeMetaFunction : public MetaFunction { const auto& take_opts = static_cast(*options); switch (args[0].kind()) { case Datum::ARRAY: - // "array_take" can handle AA->A and AC->C cases directly - // (via their VectorKernel::exec and VectorKernel::chunked_exec) - if (index_kind == Datum::ARRAY || index_kind == Datum::CHUNKED_ARRAY) { - return CallArrayTake(args, take_opts, ctx); - } - break; case Datum::CHUNKED_ARRAY: - // "array_take" can handle CA->C and CC->C cases directly - // (via their VectorKernel::chunked_exec) + // "array_take" can handle AA->A, AC->C, CA->C, CC->C cases directly + // (via their VectorKernel::exec and VectorKernel::chunked_exec) if (index_kind == Datum::ARRAY || index_kind == Datum::CHUNKED_ARRAY) { return CallArrayTake(args, take_opts, ctx); }