use crate::{downcast_value, DataFusionError};
use arrow::{
array::{
Array, BinaryArray, BooleanArray, Date32Array, Date64Array, Decimal128Array,
DictionaryArray, FixedSizeBinaryArray, FixedSizeListArray, Float32Array,
Float64Array, GenericBinaryArray, GenericListArray, GenericStringArray,
Int32Array, Int64Array, LargeListArray, ListArray, MapArray, NullArray,
OffsetSizeTrait, PrimitiveArray, StringArray, StructArray,
TimestampMicrosecondArray, TimestampMillisecondArray, TimestampNanosecondArray,
TimestampSecondArray, UInt32Array, UInt64Array, UnionArray,
},
datatypes::{ArrowDictionaryKeyType, ArrowPrimitiveType},
};
pub fn as_date32_array(array: &dyn Array) -> Result<&Date32Array, DataFusionError> {
Ok(downcast_value!(array, Date32Array))
}
pub fn as_struct_array(array: &dyn Array) -> Result<&StructArray, DataFusionError> {
Ok(downcast_value!(array, StructArray))
}
pub fn as_int32_array(array: &dyn Array) -> Result<&Int32Array, DataFusionError> {
Ok(downcast_value!(array, Int32Array))
}
pub fn as_int64_array(array: &dyn Array) -> Result<&Int64Array, DataFusionError> {
Ok(downcast_value!(array, Int64Array))
}
pub fn as_decimal128_array(
array: &dyn Array,
) -> Result<&Decimal128Array, DataFusionError> {
Ok(downcast_value!(array, Decimal128Array))
}
pub fn as_float32_array(array: &dyn Array) -> Result<&Float32Array, DataFusionError> {
Ok(downcast_value!(array, Float32Array))
}
pub fn as_float64_array(array: &dyn Array) -> Result<&Float64Array, DataFusionError> {
Ok(downcast_value!(array, Float64Array))
}
pub fn as_string_array(array: &dyn Array) -> Result<&StringArray, DataFusionError> {
Ok(downcast_value!(array, StringArray))
}
pub fn as_uint32_array(array: &dyn Array) -> Result<&UInt32Array, DataFusionError> {
Ok(downcast_value!(array, UInt32Array))
}
pub fn as_uint64_array(array: &dyn Array) -> Result<&UInt64Array, DataFusionError> {
Ok(downcast_value!(array, UInt64Array))
}
pub fn as_boolean_array(array: &dyn Array) -> Result<&BooleanArray, DataFusionError> {
Ok(downcast_value!(array, BooleanArray))
}
pub fn as_list_array(array: &dyn Array) -> Result<&ListArray, DataFusionError> {
Ok(downcast_value!(array, ListArray))
}
pub fn as_dictionary_array<T: ArrowDictionaryKeyType>(
array: &dyn Array,
) -> Result<&DictionaryArray<T>, DataFusionError> {
Ok(downcast_value!(array, DictionaryArray, T))
}
pub fn as_generic_binary_array<T: OffsetSizeTrait>(
array: &dyn Array,
) -> Result<&GenericBinaryArray<T>, DataFusionError> {
Ok(downcast_value!(array, GenericBinaryArray, T))
}
pub fn as_generic_list_array<T: OffsetSizeTrait>(
array: &dyn Array,
) -> Result<&GenericListArray<T>, DataFusionError> {
Ok(downcast_value!(array, GenericListArray, T))
}
pub fn as_large_list_array(
array: &dyn Array,
) -> Result<&LargeListArray, DataFusionError> {
Ok(downcast_value!(array, LargeListArray))
}
pub fn as_primitive_array<T: ArrowPrimitiveType>(
array: &dyn Array,
) -> Result<&PrimitiveArray<T>, DataFusionError> {
Ok(downcast_value!(array, PrimitiveArray, T))
}
pub fn as_map_array(array: &dyn Array) -> Result<&MapArray, DataFusionError> {
Ok(downcast_value!(array, MapArray))
}
pub fn as_null_array(array: &dyn Array) -> Result<&NullArray, DataFusionError> {
Ok(downcast_value!(array, NullArray))
}
pub fn as_union_array(array: &dyn Array) -> Result<&UnionArray, DataFusionError> {
Ok(downcast_value!(array, UnionArray))
}
pub fn as_timestamp_nanosecond_array(
array: &dyn Array,
) -> Result<&TimestampNanosecondArray, DataFusionError> {
Ok(downcast_value!(array, TimestampNanosecondArray))
}
pub fn as_timestamp_millisecond_array(
array: &dyn Array,
) -> Result<&TimestampMillisecondArray, DataFusionError> {
Ok(downcast_value!(array, TimestampMillisecondArray))
}
pub fn as_timestamp_microsecond_array(
array: &dyn Array,
) -> Result<&TimestampMicrosecondArray, DataFusionError> {
Ok(downcast_value!(array, TimestampMicrosecondArray))
}
pub fn as_timestamp_second_array(
array: &dyn Array,
) -> Result<&TimestampSecondArray, DataFusionError> {
Ok(downcast_value!(array, TimestampSecondArray))
}
pub fn as_binary_array(array: &dyn Array) -> Result<&BinaryArray, DataFusionError> {
Ok(downcast_value!(array, BinaryArray))
}
pub fn as_fixed_size_list_array(
array: &dyn Array,
) -> Result<&FixedSizeListArray, DataFusionError> {
Ok(downcast_value!(array, FixedSizeListArray))
}
pub fn as_fixed_size_binary_array(
array: &dyn Array,
) -> Result<&FixedSizeBinaryArray, DataFusionError> {
Ok(downcast_value!(array, FixedSizeBinaryArray))
}
pub fn as_date64_array(array: &dyn Array) -> Result<&Date64Array, DataFusionError> {
Ok(downcast_value!(array, Date64Array))
}
pub fn as_generic_string_array<T: OffsetSizeTrait>(
array: &dyn Array,
) -> Result<&GenericStringArray<T>, DataFusionError> {
Ok(downcast_value!(array, GenericStringArray, T))
}