1use crate::{downcast_value, Result};
24use arrow::array::{
25 BinaryViewArray, DurationMicrosecondArray, DurationMillisecondArray,
26 DurationNanosecondArray, DurationSecondArray, Float16Array, Int16Array, Int8Array,
27 LargeBinaryArray, LargeStringArray, StringViewArray, UInt16Array,
28};
29use arrow::{
30 array::{
31 Array, BinaryArray, BooleanArray, Date32Array, Date64Array, Decimal128Array,
32 Decimal256Array, DictionaryArray, FixedSizeBinaryArray, FixedSizeListArray,
33 Float32Array, Float64Array, GenericBinaryArray, GenericListArray,
34 GenericStringArray, Int32Array, Int64Array, IntervalDayTimeArray,
35 IntervalMonthDayNanoArray, IntervalYearMonthArray, LargeListArray, ListArray,
36 MapArray, NullArray, OffsetSizeTrait, PrimitiveArray, StringArray, StructArray,
37 Time32MillisecondArray, Time32SecondArray, Time64MicrosecondArray,
38 Time64NanosecondArray, TimestampMicrosecondArray, TimestampMillisecondArray,
39 TimestampNanosecondArray, TimestampSecondArray, UInt32Array, UInt64Array,
40 UInt8Array, UnionArray,
41 },
42 datatypes::{ArrowDictionaryKeyType, ArrowPrimitiveType},
43};
44
45pub fn as_date32_array(array: &dyn Array) -> Result<&Date32Array> {
47 Ok(downcast_value!(array, Date32Array))
48}
49
50pub fn as_date64_array(array: &dyn Array) -> Result<&Date64Array> {
52 Ok(downcast_value!(array, Date64Array))
53}
54
55pub fn as_struct_array(array: &dyn Array) -> Result<&StructArray> {
57 Ok(downcast_value!(array, StructArray))
58}
59
60pub fn as_int8_array(array: &dyn Array) -> Result<&Int8Array> {
62 Ok(downcast_value!(array, Int8Array))
63}
64
65pub fn as_uint8_array(array: &dyn Array) -> Result<&UInt8Array> {
67 Ok(downcast_value!(array, UInt8Array))
68}
69
70pub fn as_int16_array(array: &dyn Array) -> Result<&Int16Array> {
72 Ok(downcast_value!(array, Int16Array))
73}
74
75pub fn as_uint16_array(array: &dyn Array) -> Result<&UInt16Array> {
77 Ok(downcast_value!(array, UInt16Array))
78}
79
80pub fn as_int32_array(array: &dyn Array) -> Result<&Int32Array> {
82 Ok(downcast_value!(array, Int32Array))
83}
84
85pub fn as_uint32_array(array: &dyn Array) -> Result<&UInt32Array> {
87 Ok(downcast_value!(array, UInt32Array))
88}
89
90pub fn as_int64_array(array: &dyn Array) -> Result<&Int64Array> {
92 Ok(downcast_value!(array, Int64Array))
93}
94
95pub fn as_uint64_array(array: &dyn Array) -> Result<&UInt64Array> {
97 Ok(downcast_value!(array, UInt64Array))
98}
99
100pub fn as_decimal128_array(array: &dyn Array) -> Result<&Decimal128Array> {
102 Ok(downcast_value!(array, Decimal128Array))
103}
104
105pub fn as_decimal256_array(array: &dyn Array) -> Result<&Decimal256Array> {
107 Ok(downcast_value!(array, Decimal256Array))
108}
109
110pub fn as_float16_array(array: &dyn Array) -> Result<&Float16Array> {
112 Ok(downcast_value!(array, Float16Array))
113}
114
115pub fn as_float32_array(array: &dyn Array) -> Result<&Float32Array> {
117 Ok(downcast_value!(array, Float32Array))
118}
119
120pub fn as_float64_array(array: &dyn Array) -> Result<&Float64Array> {
122 Ok(downcast_value!(array, Float64Array))
123}
124
125pub fn as_string_array(array: &dyn Array) -> Result<&StringArray> {
127 Ok(downcast_value!(array, StringArray))
128}
129
130pub fn as_string_view_array(array: &dyn Array) -> Result<&StringViewArray> {
132 Ok(downcast_value!(array, StringViewArray))
133}
134
135pub fn as_large_string_array(array: &dyn Array) -> Result<&LargeStringArray> {
137 Ok(downcast_value!(array, LargeStringArray))
138}
139
140pub fn as_boolean_array(array: &dyn Array) -> Result<&BooleanArray> {
142 Ok(downcast_value!(array, BooleanArray))
143}
144
145pub fn as_list_array(array: &dyn Array) -> Result<&ListArray> {
147 Ok(downcast_value!(array, ListArray))
148}
149
150pub fn as_dictionary_array<T: ArrowDictionaryKeyType>(
152 array: &dyn Array,
153) -> Result<&DictionaryArray<T>> {
154 Ok(downcast_value!(array, DictionaryArray, T))
155}
156
157pub fn as_generic_binary_array<T: OffsetSizeTrait>(
159 array: &dyn Array,
160) -> Result<&GenericBinaryArray<T>> {
161 Ok(downcast_value!(array, GenericBinaryArray, T))
162}
163
164pub fn as_generic_list_array<T: OffsetSizeTrait>(
166 array: &dyn Array,
167) -> Result<&GenericListArray<T>> {
168 Ok(downcast_value!(array, GenericListArray, T))
169}
170
171pub fn as_large_list_array(array: &dyn Array) -> Result<&LargeListArray> {
173 Ok(downcast_value!(array, LargeListArray))
174}
175
176pub fn as_primitive_array<T: ArrowPrimitiveType>(
178 array: &dyn Array,
179) -> Result<&PrimitiveArray<T>> {
180 Ok(downcast_value!(array, PrimitiveArray, T))
181}
182
183pub fn as_map_array(array: &dyn Array) -> Result<&MapArray> {
185 Ok(downcast_value!(array, MapArray))
186}
187
188pub fn as_null_array(array: &dyn Array) -> Result<&NullArray> {
190 Ok(downcast_value!(array, NullArray))
191}
192
193pub fn as_union_array(array: &dyn Array) -> Result<&UnionArray> {
195 Ok(downcast_value!(array, UnionArray))
196}
197
198pub fn as_time32_second_array(array: &dyn Array) -> Result<&Time32SecondArray> {
200 Ok(downcast_value!(array, Time32SecondArray))
201}
202
203pub fn as_time32_millisecond_array(array: &dyn Array) -> Result<&Time32MillisecondArray> {
205 Ok(downcast_value!(array, Time32MillisecondArray))
206}
207
208pub fn as_time64_microsecond_array(array: &dyn Array) -> Result<&Time64MicrosecondArray> {
210 Ok(downcast_value!(array, Time64MicrosecondArray))
211}
212
213pub fn as_time64_nanosecond_array(array: &dyn Array) -> Result<&Time64NanosecondArray> {
215 Ok(downcast_value!(array, Time64NanosecondArray))
216}
217
218pub fn as_timestamp_nanosecond_array(
220 array: &dyn Array,
221) -> Result<&TimestampNanosecondArray> {
222 Ok(downcast_value!(array, TimestampNanosecondArray))
223}
224
225pub fn as_timestamp_millisecond_array(
227 array: &dyn Array,
228) -> Result<&TimestampMillisecondArray> {
229 Ok(downcast_value!(array, TimestampMillisecondArray))
230}
231
232pub fn as_timestamp_microsecond_array(
234 array: &dyn Array,
235) -> Result<&TimestampMicrosecondArray> {
236 Ok(downcast_value!(array, TimestampMicrosecondArray))
237}
238
239pub fn as_timestamp_second_array(array: &dyn Array) -> Result<&TimestampSecondArray> {
241 Ok(downcast_value!(array, TimestampSecondArray))
242}
243
244pub fn as_interval_ym_array(array: &dyn Array) -> Result<&IntervalYearMonthArray> {
246 Ok(downcast_value!(array, IntervalYearMonthArray))
247}
248
249pub fn as_interval_dt_array(array: &dyn Array) -> Result<&IntervalDayTimeArray> {
251 Ok(downcast_value!(array, IntervalDayTimeArray))
252}
253
254pub fn as_interval_mdn_array(array: &dyn Array) -> Result<&IntervalMonthDayNanoArray> {
256 Ok(downcast_value!(array, IntervalMonthDayNanoArray))
257}
258
259pub fn as_duration_second_array(array: &dyn Array) -> Result<&DurationSecondArray> {
261 Ok(downcast_value!(array, DurationSecondArray))
262}
263
264pub fn as_duration_millisecond_array(
266 array: &dyn Array,
267) -> Result<&DurationMillisecondArray> {
268 Ok(downcast_value!(array, DurationMillisecondArray))
269}
270
271pub fn as_duration_microsecond_array(
273 array: &dyn Array,
274) -> Result<&DurationMicrosecondArray> {
275 Ok(downcast_value!(array, DurationMicrosecondArray))
276}
277
278pub fn as_duration_nanosecond_array(
280 array: &dyn Array,
281) -> Result<&DurationNanosecondArray> {
282 Ok(downcast_value!(array, DurationNanosecondArray))
283}
284
285pub fn as_binary_array(array: &dyn Array) -> Result<&BinaryArray> {
287 Ok(downcast_value!(array, BinaryArray))
288}
289
290pub fn as_binary_view_array(array: &dyn Array) -> Result<&BinaryViewArray> {
292 Ok(downcast_value!(array, BinaryViewArray))
293}
294
295pub fn as_large_binary_array(array: &dyn Array) -> Result<&LargeBinaryArray> {
297 Ok(downcast_value!(array, LargeBinaryArray))
298}
299
300pub fn as_fixed_size_list_array(array: &dyn Array) -> Result<&FixedSizeListArray> {
302 Ok(downcast_value!(array, FixedSizeListArray))
303}
304
305pub fn as_fixed_size_binary_array(array: &dyn Array) -> Result<&FixedSizeBinaryArray> {
307 Ok(downcast_value!(array, FixedSizeBinaryArray))
308}
309
310pub fn as_generic_string_array<T: OffsetSizeTrait>(
312 array: &dyn Array,
313) -> Result<&GenericStringArray<T>> {
314 Ok(downcast_value!(array, GenericStringArray, T))
315}