vortex_array/arrays/varbinview/compute/
to_arrow.rs1use arrow_array::ArrayRef;
2use arrow_cast::cast;
3use arrow_schema::DataType;
4use vortex_error::{VortexResult, vortex_bail};
5
6use crate::arrays::{VarBinViewArray, VarBinViewEncoding, varbinview_as_arrow};
7use crate::compute::ToArrowFn;
8
9impl ToArrowFn<&VarBinViewArray> for VarBinViewEncoding {
10 fn to_arrow(
11 &self,
12 array: &VarBinViewArray,
13 data_type: &DataType,
14 ) -> VortexResult<Option<ArrayRef>> {
15 match data_type {
16 DataType::Binary
17 | DataType::FixedSizeBinary(_)
18 | DataType::LargeBinary
19 | DataType::Utf8
20 | DataType::LargeUtf8 => {
21 }
23 DataType::BinaryView | DataType::Utf8View => {
24 }
26 _ => {
27 vortex_bail!("Unsupported data type: {data_type}")
29 }
30 }
31
32 let arrow_arr = varbinview_as_arrow(array);
33 Ok(Some(if arrow_arr.data_type() != data_type {
34 cast(arrow_arr.as_ref(), data_type)?
35 } else {
36 arrow_arr
37 }))
38 }
39}