in src/udaf.rs [73:91]
fn merge_batch(&mut self, states: &[ArrayRef]) -> Result<()> {
Python::with_gil(|py| {
let state = &states[0];
// 1. cast states to Pyarrow array
let state = state
.into_data()
.to_pyarrow(py)
.map_err(|e| DataFusionError::Execution(format!("{e}")))?;
// 2. call merge
self.accum
.as_ref(py)
.call_method1("merge", (state,))
.map_err(|e| DataFusionError::Execution(format!("{e}")))?;
Ok(())
})
}