1use crate::{Result, downcast_value};
24use arrow::array::{
25 BinaryViewArray, Decimal32Array, Decimal64Array, DurationMicrosecondArray,
26 DurationMillisecondArray, DurationNanosecondArray, DurationSecondArray, Float16Array,
27 Int8Array, Int16Array, LargeBinaryArray, LargeListViewArray, LargeStringArray,
28 ListViewArray, RunArray, StringViewArray, UInt16Array,
29};
30use arrow::datatypes::RunEndIndexType;
31use arrow::{
32 array::{
33 Array, BinaryArray, BooleanArray, Date32Array, Date64Array, Decimal128Array,
34 Decimal256Array, DictionaryArray, FixedSizeBinaryArray, FixedSizeListArray,
35 Float32Array, Float64Array, GenericBinaryArray, GenericListArray,
36 GenericStringArray, Int32Array, Int64Array, IntervalDayTimeArray,
37 IntervalMonthDayNanoArray, IntervalYearMonthArray, LargeListArray, ListArray,
38 MapArray, NullArray, OffsetSizeTrait, PrimitiveArray, StringArray, StructArray,
39 Time32MillisecondArray, Time32SecondArray, Time64MicrosecondArray,
40 Time64NanosecondArray, TimestampMicrosecondArray, TimestampMillisecondArray,
41 TimestampNanosecondArray, TimestampSecondArray, UInt8Array, UInt32Array,
42 UInt64Array, UnionArray,
43 },
44 datatypes::{ArrowDictionaryKeyType, ArrowPrimitiveType},
45};
46
47pub fn as_date32_array(array: &dyn Array) -> Result<&Date32Array> {
49 Ok(downcast_value!(array, Date32Array))
50}
51
52pub fn as_date64_array(array: &dyn Array) -> Result<&Date64Array> {
54 Ok(downcast_value!(array, Date64Array))
55}
56
57pub fn as_struct_array(array: &dyn Array) -> Result<&StructArray> {
59 Ok(downcast_value!(array, StructArray))
60}
61
62pub fn as_int8_array(array: &dyn Array) -> Result<&Int8Array> {
64 Ok(downcast_value!(array, Int8Array))
65}
66
67pub fn as_uint8_array(array: &dyn Array) -> Result<&UInt8Array> {
69 Ok(downcast_value!(array, UInt8Array))
70}
71
72pub fn as_int16_array(array: &dyn Array) -> Result<&Int16Array> {
74 Ok(downcast_value!(array, Int16Array))
75}
76
77pub fn as_uint16_array(array: &dyn Array) -> Result<&UInt16Array> {
79 Ok(downcast_value!(array, UInt16Array))
80}
81
82pub fn as_int32_array(array: &dyn Array) -> Result<&Int32Array> {
84 Ok(downcast_value!(array, Int32Array))
85}
86
87pub fn as_uint32_array(array: &dyn Array) -> Result<&UInt32Array> {
89 Ok(downcast_value!(array, UInt32Array))
90}
91
92pub fn as_int64_array(array: &dyn Array) -> Result<&Int64Array> {
94 Ok(downcast_value!(array, Int64Array))
95}
96
97pub fn as_uint64_array(array: &dyn Array) -> Result<&UInt64Array> {
99 Ok(downcast_value!(array, UInt64Array))
100}
101
102pub fn as_decimal32_array(array: &dyn Array) -> Result<&Decimal32Array> {
104 Ok(downcast_value!(array, Decimal32Array))
105}
106
107pub fn as_decimal64_array(array: &dyn Array) -> Result<&Decimal64Array> {
109 Ok(downcast_value!(array, Decimal64Array))
110}
111
112pub fn as_decimal128_array(array: &dyn Array) -> Result<&Decimal128Array> {
114 Ok(downcast_value!(array, Decimal128Array))
115}
116
117pub fn as_decimal256_array(array: &dyn Array) -> Result<&Decimal256Array> {
119 Ok(downcast_value!(array, Decimal256Array))
120}
121
122pub fn as_float16_array(array: &dyn Array) -> Result<&Float16Array> {
124 Ok(downcast_value!(array, Float16Array))
125}
126
127pub fn as_float32_array(array: &dyn Array) -> Result<&Float32Array> {
129 Ok(downcast_value!(array, Float32Array))
130}
131
132pub fn as_float64_array(array: &dyn Array) -> Result<&Float64Array> {
134 Ok(downcast_value!(array, Float64Array))
135}
136
137pub fn as_string_array(array: &dyn Array) -> Result<&StringArray> {
139 Ok(downcast_value!(array, StringArray))
140}
141
142pub fn as_string_view_array(array: &dyn Array) -> Result<&StringViewArray> {
144 Ok(downcast_value!(array, StringViewArray))
145}
146
147pub fn as_large_string_array(array: &dyn Array) -> Result<&LargeStringArray> {
149 Ok(downcast_value!(array, LargeStringArray))
150}
151
152pub fn as_boolean_array(array: &dyn Array) -> Result<&BooleanArray> {
154 Ok(downcast_value!(array, BooleanArray))
155}
156
157pub fn as_list_array(array: &dyn Array) -> Result<&ListArray> {
159 Ok(downcast_value!(array, ListArray))
160}
161
162pub fn as_dictionary_array<T: ArrowDictionaryKeyType>(
164 array: &dyn Array,
165) -> Result<&DictionaryArray<T>> {
166 Ok(downcast_value!(array, DictionaryArray, T))
167}
168
169pub fn as_generic_binary_array<T: OffsetSizeTrait>(
171 array: &dyn Array,
172) -> Result<&GenericBinaryArray<T>> {
173 Ok(downcast_value!(array, GenericBinaryArray, T))
174}
175
176pub fn as_generic_list_array<T: OffsetSizeTrait>(
178 array: &dyn Array,
179) -> Result<&GenericListArray<T>> {
180 Ok(downcast_value!(array, GenericListArray, T))
181}
182
183pub fn as_large_list_array(array: &dyn Array) -> Result<&LargeListArray> {
185 Ok(downcast_value!(array, LargeListArray))
186}
187
188pub fn as_primitive_array<T: ArrowPrimitiveType>(
190 array: &dyn Array,
191) -> Result<&PrimitiveArray<T>> {
192 Ok(downcast_value!(array, PrimitiveArray, T))
193}
194
195pub fn as_map_array(array: &dyn Array) -> Result<&MapArray> {
197 Ok(downcast_value!(array, MapArray))
198}
199
200pub fn as_null_array(array: &dyn Array) -> Result<&NullArray> {
202 Ok(downcast_value!(array, NullArray))
203}
204
205pub fn as_union_array(array: &dyn Array) -> Result<&UnionArray> {
207 Ok(downcast_value!(array, UnionArray))
208}
209
210pub fn as_time32_second_array(array: &dyn Array) -> Result<&Time32SecondArray> {
212 Ok(downcast_value!(array, Time32SecondArray))
213}
214
215pub fn as_time32_millisecond_array(array: &dyn Array) -> Result<&Time32MillisecondArray> {
217 Ok(downcast_value!(array, Time32MillisecondArray))
218}
219
220pub fn as_time64_microsecond_array(array: &dyn Array) -> Result<&Time64MicrosecondArray> {
222 Ok(downcast_value!(array, Time64MicrosecondArray))
223}
224
225pub fn as_time64_nanosecond_array(array: &dyn Array) -> Result<&Time64NanosecondArray> {
227 Ok(downcast_value!(array, Time64NanosecondArray))
228}
229
230pub fn as_timestamp_nanosecond_array(
232 array: &dyn Array,
233) -> Result<&TimestampNanosecondArray> {
234 Ok(downcast_value!(array, TimestampNanosecondArray))
235}
236
237pub fn as_timestamp_millisecond_array(
239 array: &dyn Array,
240) -> Result<&TimestampMillisecondArray> {
241 Ok(downcast_value!(array, TimestampMillisecondArray))
242}
243
244pub fn as_timestamp_microsecond_array(
246 array: &dyn Array,
247) -> Result<&TimestampMicrosecondArray> {
248 Ok(downcast_value!(array, TimestampMicrosecondArray))
249}
250
251pub fn as_timestamp_second_array(array: &dyn Array) -> Result<&TimestampSecondArray> {
253 Ok(downcast_value!(array, TimestampSecondArray))
254}
255
256pub fn as_interval_ym_array(array: &dyn Array) -> Result<&IntervalYearMonthArray> {
258 Ok(downcast_value!(array, IntervalYearMonthArray))
259}
260
261pub fn as_interval_dt_array(array: &dyn Array) -> Result<&IntervalDayTimeArray> {
263 Ok(downcast_value!(array, IntervalDayTimeArray))
264}
265
266pub fn as_interval_mdn_array(array: &dyn Array) -> Result<&IntervalMonthDayNanoArray> {
268 Ok(downcast_value!(array, IntervalMonthDayNanoArray))
269}
270
271pub fn as_duration_second_array(array: &dyn Array) -> Result<&DurationSecondArray> {
273 Ok(downcast_value!(array, DurationSecondArray))
274}
275
276pub fn as_duration_millisecond_array(
278 array: &dyn Array,
279) -> Result<&DurationMillisecondArray> {
280 Ok(downcast_value!(array, DurationMillisecondArray))
281}
282
283pub fn as_duration_microsecond_array(
285 array: &dyn Array,
286) -> Result<&DurationMicrosecondArray> {
287 Ok(downcast_value!(array, DurationMicrosecondArray))
288}
289
290pub fn as_duration_nanosecond_array(
292 array: &dyn Array,
293) -> Result<&DurationNanosecondArray> {
294 Ok(downcast_value!(array, DurationNanosecondArray))
295}
296
297pub fn as_binary_array(array: &dyn Array) -> Result<&BinaryArray> {
299 Ok(downcast_value!(array, BinaryArray))
300}
301
302pub fn as_binary_view_array(array: &dyn Array) -> Result<&BinaryViewArray> {
304 Ok(downcast_value!(array, BinaryViewArray))
305}
306
307pub fn as_large_binary_array(array: &dyn Array) -> Result<&LargeBinaryArray> {
309 Ok(downcast_value!(array, LargeBinaryArray))
310}
311
312pub fn as_fixed_size_list_array(array: &dyn Array) -> Result<&FixedSizeListArray> {
314 Ok(downcast_value!(array, FixedSizeListArray))
315}
316
317pub fn as_fixed_size_binary_array(array: &dyn Array) -> Result<&FixedSizeBinaryArray> {
319 Ok(downcast_value!(array, FixedSizeBinaryArray))
320}
321
322pub fn as_generic_string_array<T: OffsetSizeTrait>(
324 array: &dyn Array,
325) -> Result<&GenericStringArray<T>> {
326 Ok(downcast_value!(array, GenericStringArray, T))
327}
328
329pub fn as_list_view_array(array: &dyn Array) -> Result<&ListViewArray> {
331 Ok(downcast_value!(array, ListViewArray))
332}
333
334pub fn as_large_list_view_array(array: &dyn Array) -> Result<&LargeListViewArray> {
336 Ok(downcast_value!(array, LargeListViewArray))
337}
338
339pub fn as_run_array<T: RunEndIndexType>(array: &dyn Array) -> Result<&RunArray<T>> {
341 Ok(downcast_value!(array, RunArray, T))
342}