use vortex_error::VortexResult;
use crate::ArrayRef;
use crate::DynArray;
use crate::ExecutionCtx;
use crate::IntoArray;
use crate::arrays::ExtensionArray;
use crate::arrays::ExtensionVTable;
use crate::arrays::dict::TakeExecute;
impl TakeExecute for ExtensionVTable {
fn take(
array: &ExtensionArray,
indices: &ArrayRef,
_ctx: &mut ExecutionCtx,
) -> VortexResult<Option<ArrayRef>> {
let taken_storage = array.storage().take(indices.to_array())?;
Ok(Some(
ExtensionArray::new(
array
.ext_dtype()
.with_nullability(taken_storage.dtype().nullability()),
taken_storage,
)
.into_array(),
))
}
}