1use crate::{downcast_value, Result};
24use arrow::array::{
25 BinaryViewArray, Decimal32Array, Decimal64Array, DurationMicrosecondArray,
26 DurationMillisecondArray, DurationNanosecondArray, DurationSecondArray, Float16Array,
27 Int16Array, Int8Array, LargeBinaryArray, LargeListViewArray, LargeStringArray,
28 ListViewArray, StringViewArray, UInt16Array,
29};
30use arrow::{
31 array::{
32 Array, BinaryArray, BooleanArray, Date32Array, Date64Array, Decimal128Array,
33 Decimal256Array, DictionaryArray, FixedSizeBinaryArray, FixedSizeListArray,
34 Float32Array, Float64Array, GenericBinaryArray, GenericListArray,
35 GenericStringArray, Int32Array, Int64Array, IntervalDayTimeArray,
36 IntervalMonthDayNanoArray, IntervalYearMonthArray, LargeListArray, ListArray,
37 MapArray, NullArray, OffsetSizeTrait, PrimitiveArray, StringArray, StructArray,
38 Time32MillisecondArray, Time32SecondArray, Time64MicrosecondArray,
39 Time64NanosecondArray, TimestampMicrosecondArray, TimestampMillisecondArray,
40 TimestampNanosecondArray, TimestampSecondArray, UInt32Array, UInt64Array,
41 UInt8Array, UnionArray,
42 },
43 datatypes::{ArrowDictionaryKeyType, ArrowPrimitiveType},
44};
45
46pub fn as_date32_array(array: &dyn Array) -> Result<&Date32Array> {
48 Ok(downcast_value!(array, Date32Array))
49}
50
51pub fn as_date64_array(array: &dyn Array) -> Result<&Date64Array> {
53 Ok(downcast_value!(array, Date64Array))
54}
55
56pub fn as_struct_array(array: &dyn Array) -> Result<&StructArray> {
58 Ok(downcast_value!(array, StructArray))
59}
60
61pub fn as_int8_array(array: &dyn Array) -> Result<&Int8Array> {
63 Ok(downcast_value!(array, Int8Array))
64}
65
66pub fn as_uint8_array(array: &dyn Array) -> Result<&UInt8Array> {
68 Ok(downcast_value!(array, UInt8Array))
69}
70
71pub fn as_int16_array(array: &dyn Array) -> Result<&Int16Array> {
73 Ok(downcast_value!(array, Int16Array))
74}
75
76pub fn as_uint16_array(array: &dyn Array) -> Result<&UInt16Array> {
78 Ok(downcast_value!(array, UInt16Array))
79}
80
81pub fn as_int32_array(array: &dyn Array) -> Result<&Int32Array> {
83 Ok(downcast_value!(array, Int32Array))
84}
85
86pub fn as_uint32_array(array: &dyn Array) -> Result<&UInt32Array> {
88 Ok(downcast_value!(array, UInt32Array))
89}
90
91pub fn as_int64_array(array: &dyn Array) -> Result<&Int64Array> {
93 Ok(downcast_value!(array, Int64Array))
94}
95
96pub fn as_uint64_array(array: &dyn Array) -> Result<&UInt64Array> {
98 Ok(downcast_value!(array, UInt64Array))
99}
100
101pub fn as_decimal32_array(array: &dyn Array) -> Result<&Decimal32Array> {
103 Ok(downcast_value!(array, Decimal32Array))
104}
105
106pub fn as_decimal64_array(array: &dyn Array) -> Result<&Decimal64Array> {
108 Ok(downcast_value!(array, Decimal64Array))
109}
110
111pub fn as_decimal128_array(array: &dyn Array) -> Result<&Decimal128Array> {
113 Ok(downcast_value!(array, Decimal128Array))
114}
115
116pub fn as_decimal256_array(array: &dyn Array) -> Result<&Decimal256Array> {
118 Ok(downcast_value!(array, Decimal256Array))
119}
120
121pub fn as_float16_array(array: &dyn Array) -> Result<&Float16Array> {
123 Ok(downcast_value!(array, Float16Array))
124}
125
126pub fn as_float32_array(array: &dyn Array) -> Result<&Float32Array> {
128 Ok(downcast_value!(array, Float32Array))
129}
130
131pub fn as_float64_array(array: &dyn Array) -> Result<&Float64Array> {
133 Ok(downcast_value!(array, Float64Array))
134}
135
136pub fn as_string_array(array: &dyn Array) -> Result<&StringArray> {
138 Ok(downcast_value!(array, StringArray))
139}
140
141pub fn as_string_view_array(array: &dyn Array) -> Result<&StringViewArray> {
143 Ok(downcast_value!(array, StringViewArray))
144}
145
146pub fn as_large_string_array(array: &dyn Array) -> Result<&LargeStringArray> {
148 Ok(downcast_value!(array, LargeStringArray))
149}
150
151pub fn as_boolean_array(array: &dyn Array) -> Result<&BooleanArray> {
153 Ok(downcast_value!(array, BooleanArray))
154}
155
156pub fn as_list_array(array: &dyn Array) -> Result<&ListArray> {
158 Ok(downcast_value!(array, ListArray))
159}
160
161pub fn as_dictionary_array<T: ArrowDictionaryKeyType>(
163 array: &dyn Array,
164) -> Result<&DictionaryArray<T>> {
165 Ok(downcast_value!(array, DictionaryArray, T))
166}
167
168pub fn as_generic_binary_array<T: OffsetSizeTrait>(
170 array: &dyn Array,
171) -> Result<&GenericBinaryArray<T>> {
172 Ok(downcast_value!(array, GenericBinaryArray, T))
173}
174
175pub fn as_generic_list_array<T: OffsetSizeTrait>(
177 array: &dyn Array,
178) -> Result<&GenericListArray<T>> {
179 Ok(downcast_value!(array, GenericListArray, T))
180}
181
182pub fn as_large_list_array(array: &dyn Array) -> Result<&LargeListArray> {
184 Ok(downcast_value!(array, LargeListArray))
185}
186
187pub fn as_primitive_array<T: ArrowPrimitiveType>(
189 array: &dyn Array,
190) -> Result<&PrimitiveArray<T>> {
191 Ok(downcast_value!(array, PrimitiveArray, T))
192}
193
194pub fn as_map_array(array: &dyn Array) -> Result<&MapArray> {
196 Ok(downcast_value!(array, MapArray))
197}
198
199pub fn as_null_array(array: &dyn Array) -> Result<&NullArray> {
201 Ok(downcast_value!(array, NullArray))
202}
203
204pub fn as_union_array(array: &dyn Array) -> Result<&UnionArray> {
206 Ok(downcast_value!(array, UnionArray))
207}
208
209pub fn as_time32_second_array(array: &dyn Array) -> Result<&Time32SecondArray> {
211 Ok(downcast_value!(array, Time32SecondArray))
212}
213
214pub fn as_time32_millisecond_array(array: &dyn Array) -> Result<&Time32MillisecondArray> {
216 Ok(downcast_value!(array, Time32MillisecondArray))
217}
218
219pub fn as_time64_microsecond_array(array: &dyn Array) -> Result<&Time64MicrosecondArray> {
221 Ok(downcast_value!(array, Time64MicrosecondArray))
222}
223
224pub fn as_time64_nanosecond_array(array: &dyn Array) -> Result<&Time64NanosecondArray> {
226 Ok(downcast_value!(array, Time64NanosecondArray))
227}
228
229pub fn as_timestamp_nanosecond_array(
231 array: &dyn Array,
232) -> Result<&TimestampNanosecondArray> {
233 Ok(downcast_value!(array, TimestampNanosecondArray))
234}
235
236pub fn as_timestamp_millisecond_array(
238 array: &dyn Array,
239) -> Result<&TimestampMillisecondArray> {
240 Ok(downcast_value!(array, TimestampMillisecondArray))
241}
242
243pub fn as_timestamp_microsecond_array(
245 array: &dyn Array,
246) -> Result<&TimestampMicrosecondArray> {
247 Ok(downcast_value!(array, TimestampMicrosecondArray))
248}
249
250pub fn as_timestamp_second_array(array: &dyn Array) -> Result<&TimestampSecondArray> {
252 Ok(downcast_value!(array, TimestampSecondArray))
253}
254
255pub fn as_interval_ym_array(array: &dyn Array) -> Result<&IntervalYearMonthArray> {
257 Ok(downcast_value!(array, IntervalYearMonthArray))
258}
259
260pub fn as_interval_dt_array(array: &dyn Array) -> Result<&IntervalDayTimeArray> {
262 Ok(downcast_value!(array, IntervalDayTimeArray))
263}
264
265pub fn as_interval_mdn_array(array: &dyn Array) -> Result<&IntervalMonthDayNanoArray> {
267 Ok(downcast_value!(array, IntervalMonthDayNanoArray))
268}
269
270pub fn as_duration_second_array(array: &dyn Array) -> Result<&DurationSecondArray> {
272 Ok(downcast_value!(array, DurationSecondArray))
273}
274
275pub fn as_duration_millisecond_array(
277 array: &dyn Array,
278) -> Result<&DurationMillisecondArray> {
279 Ok(downcast_value!(array, DurationMillisecondArray))
280}
281
282pub fn as_duration_microsecond_array(
284 array: &dyn Array,
285) -> Result<&DurationMicrosecondArray> {
286 Ok(downcast_value!(array, DurationMicrosecondArray))
287}
288
289pub fn as_duration_nanosecond_array(
291 array: &dyn Array,
292) -> Result<&DurationNanosecondArray> {
293 Ok(downcast_value!(array, DurationNanosecondArray))
294}
295
296pub fn as_binary_array(array: &dyn Array) -> Result<&BinaryArray> {
298 Ok(downcast_value!(array, BinaryArray))
299}
300
301pub fn as_binary_view_array(array: &dyn Array) -> Result<&BinaryViewArray> {
303 Ok(downcast_value!(array, BinaryViewArray))
304}
305
306pub fn as_large_binary_array(array: &dyn Array) -> Result<&LargeBinaryArray> {
308 Ok(downcast_value!(array, LargeBinaryArray))
309}
310
311pub fn as_fixed_size_list_array(array: &dyn Array) -> Result<&FixedSizeListArray> {
313 Ok(downcast_value!(array, FixedSizeListArray))
314}
315
316pub fn as_fixed_size_binary_array(array: &dyn Array) -> Result<&FixedSizeBinaryArray> {
318 Ok(downcast_value!(array, FixedSizeBinaryArray))
319}
320
321pub fn as_generic_string_array<T: OffsetSizeTrait>(
323 array: &dyn Array,
324) -> Result<&GenericStringArray<T>> {
325 Ok(downcast_value!(array, GenericStringArray, T))
326}
327
328pub fn as_list_view_array(array: &dyn Array) -> Result<&ListViewArray> {
330 Ok(downcast_value!(array, ListViewArray))
331}
332
333pub fn as_large_list_view_array(array: &dyn Array) -> Result<&LargeListViewArray> {
335 Ok(downcast_value!(array, LargeListViewArray))
336}