Skip to content

Commit d5428b2

Browse files
authored
docs: Fix create_udf example (#14405)
1 parent 1e0531f commit d5428b2

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

docs/source/library-user-guide/adding-udfs.md

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -123,21 +123,21 @@ There is a an older, more concise, but also more limited API [`create_udf`] avai
123123
use std::sync::Arc;
124124

125125
use datafusion::arrow::array::{ArrayRef, Int64Array};
126-
use datafusion::common::Result;
127126
use datafusion::common::cast::as_int64_array;
128-
use datafusion::physical_plan::functions::columnar_values_to_array;
127+
use datafusion::common::Result;
128+
use datafusion::logical_expr::ColumnarValue;
129129

130-
pub fn add_one(args: &[ColumnarValue]) -> Result<ArrayRef> {
130+
pub fn add_one(args: &[ColumnarValue]) -> Result<ColumnarValue> {
131131
// Error handling omitted for brevity
132-
let args = columnar_values_to_array(args)?;
132+
let args = ColumnarValue::values_to_arrays(args)?;
133133
let i64s = as_int64_array(&args[0])?;
134134

135135
let new_array = i64s
136136
.iter()
137137
.map(|array_elem| array_elem.map(|value| value + 1))
138138
.collect::<Int64Array>();
139139

140-
Ok(Arc::new(new_array))
140+
Ok(ColumnarValue::from(Arc::new(new_array) as ArrayRef))
141141
}
142142
```
143143

@@ -146,10 +146,11 @@ This "works" in isolation, i.e. if you have a slice of `ArrayRef`s, you can call
146146

147147
```rust
148148
let input = vec![Some(1), None, Some(3)];
149-
let input = Arc::new(Int64Array::from(input)) as ArrayRef;
149+
let input = ColumnarValue::from(Arc::new(Int64Array::from(input)) as ArrayRef);
150150

151-
let result = add_one( & [input]).unwrap();
152-
let result = result.as_any().downcast_ref::<Int64Array>().unwrap();
151+
let result = add_one(&[input]).unwrap();
152+
let binding = result.into_array(1).unwrap();
153+
let result = binding.as_any().downcast_ref::<Int64Array>().unwrap();
153154

154155
assert_eq!(result, &Int64Array::from(vec![Some(2), None, Some(4)]));
155156
```
@@ -169,11 +170,11 @@ use datafusion::arrow::datatypes::DataType;
169170
use std::sync::Arc;
170171

171172
let udf = create_udf(
172-
"add_one",
173-
vec![DataType::Int64],
174-
Arc::new(DataType::Int64),
175-
Volatility::Immutable,
176-
Arc::new(add_one),
173+
"add_one",
174+
vec![DataType::Int64],
175+
DataType::Int64,
176+
Volatility::Immutable,
177+
Arc::new(add_one),
177178
);
178179
```
179180

0 commit comments

Comments
 (0)