in crates/core/src/avro_to_arrow/arrow_array_reader.rs [376:395]
fn build_dictionary_array<T>(&self, rows: RecordSlice, col_name: &str) -> ArrowResult<ArrayRef>
where
T::Native: NumCast,
T: ArrowPrimitiveType + ArrowDictionaryKeyType,
{
let mut builder: StringDictionaryBuilder<T> =
self.build_string_dictionary_builder(rows.len());
for row in rows {
if let Some(value) = self.field_lookup(col_name, row) {
if let Ok(Some(str_v)) = resolve_string(value) {
builder.append(str_v).map(drop)?
} else {
builder.append_null()
}
} else {
builder.append_null()
}
}
Ok(Arc::new(builder.finish()) as ArrayRef)
}