pub(crate) fn get_array_column<'a, T>(
batch: &'a arrow::record_batch::RecordBatch,
column_name: &str,
) -> Result<&'a T, datafusion::error::DataFusionError>
where
T: arrow::array::Array + 'static,
{
if let Some(column) = batch.column_by_name(column_name) {
column.as_any().downcast_ref::<T>().ok_or_else(|| {
datafusion::error::DataFusionError::Execution(format!(
"{} should be a string array",
column_name
))
})
} else {
Err(datafusion::error::DataFusionError::Execution(format!(
"{} column not found",
column_name
)))
}
}