Skip to main content

vortex_array/arrays/extension/compute/
take.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use vortex_error::VortexResult;
5
6use crate::Array;
7use crate::ArrayRef;
8use crate::ExecutionCtx;
9use crate::IntoArray;
10use crate::arrays::ExtensionArray;
11use crate::arrays::ExtensionVTable;
12use crate::arrays::TakeExecute;
13
14impl TakeExecute for ExtensionVTable {
15    fn take(
16        array: &ExtensionArray,
17        indices: &dyn Array,
18        _ctx: &mut ExecutionCtx,
19    ) -> VortexResult<Option<ArrayRef>> {
20        let taken_storage = array.storage().take(indices.to_array())?;
21        Ok(Some(
22            ExtensionArray::new(
23                array
24                    .ext_dtype()
25                    .with_nullability(taken_storage.dtype().nullability()),
26                taken_storage,
27            )
28            .into_array(),
29        ))
30    }
31}