in crates/core/src/avro_to_arrow/arrow_array_reader.rs [226:277]
fn build_wrapped_list_array(
&self,
rows: RecordSlice,
col_name: &str,
key_type: &DataType,
) -> ArrowResult<ArrayRef> {
match *key_type {
DataType::Int8 => {
let dtype =
DataType::Dictionary(Box::new(DataType::Int8), Box::new(DataType::Utf8));
self.list_array_string_array_builder::<Int8Type>(&dtype, col_name, rows)
}
DataType::Int16 => {
let dtype =
DataType::Dictionary(Box::new(DataType::Int16), Box::new(DataType::Utf8));
self.list_array_string_array_builder::<Int16Type>(&dtype, col_name, rows)
}
DataType::Int32 => {
let dtype =
DataType::Dictionary(Box::new(DataType::Int32), Box::new(DataType::Utf8));
self.list_array_string_array_builder::<Int32Type>(&dtype, col_name, rows)
}
DataType::Int64 => {
let dtype =
DataType::Dictionary(Box::new(DataType::Int64), Box::new(DataType::Utf8));
self.list_array_string_array_builder::<Int64Type>(&dtype, col_name, rows)
}
DataType::UInt8 => {
let dtype =
DataType::Dictionary(Box::new(DataType::UInt8), Box::new(DataType::Utf8));
self.list_array_string_array_builder::<UInt8Type>(&dtype, col_name, rows)
}
DataType::UInt16 => {
let dtype =
DataType::Dictionary(Box::new(DataType::UInt16), Box::new(DataType::Utf8));
self.list_array_string_array_builder::<UInt16Type>(&dtype, col_name, rows)
}
DataType::UInt32 => {
let dtype =
DataType::Dictionary(Box::new(DataType::UInt32), Box::new(DataType::Utf8));
self.list_array_string_array_builder::<UInt32Type>(&dtype, col_name, rows)
}
DataType::UInt64 => {
let dtype =
DataType::Dictionary(Box::new(DataType::UInt64), Box::new(DataType::Utf8));
self.list_array_string_array_builder::<UInt64Type>(&dtype, col_name, rows)
}
ref e => Err(SchemaError(format!(
"Data type is currently not supported for dictionaries in list : {e:?}"
))),
}
}