@@ -4,12 +4,14 @@ use arrow::{
44 array:: { Array , NullArray } ,
55 datatypes:: { DataType , Field } ,
66} ;
7- use datafusion_expr :: { ColumnarValue , ScalarFunctionArgs , ScalarUDFImpl , Signature , Volatility } ;
8-
9- use crate :: integration_tests :: {
10- python :: test_utils :: python_scalar_udf , test_utils :: ColumnarValueExt ,
7+ use datafusion_common :: config :: ConfigOptions ;
8+ use datafusion_expr :: {
9+ ColumnarValue , ScalarFunctionArgs , ScalarUDFImpl , Signature , Volatility ,
10+ async_udf :: AsyncScalarUDFImpl ,
1111} ;
1212
13+ use crate :: integration_tests:: python:: test_utils:: python_scalar_udf;
14+
1315#[ tokio:: test( flavor = "multi_thread" ) ]
1416async fn test_ok ( ) {
1517 const CODE : & str = "
@@ -26,14 +28,17 @@ def foo(x: None) -> None:
2628 assert_eq ! ( udf. return_type( & [ DataType :: Null ] ) . unwrap( ) , DataType :: Null , ) ;
2729
2830 let array = udf
29- . invoke_with_args ( ScalarFunctionArgs {
30- args : vec ! [ ColumnarValue :: Array ( Arc :: new( NullArray :: new( 3 ) ) ) ] ,
31- arg_fields : vec ! [ Arc :: new( Field :: new( "a1" , DataType :: Null , true ) ) ] ,
32- number_rows : 3 ,
33- return_field : Arc :: new ( Field :: new ( "r" , DataType :: Null , true ) ) ,
34- } )
35- . unwrap ( )
36- . unwrap_array ( ) ;
31+ . invoke_async_with_args (
32+ ScalarFunctionArgs {
33+ args : vec ! [ ColumnarValue :: Array ( Arc :: new( NullArray :: new( 3 ) ) ) ] ,
34+ arg_fields : vec ! [ Arc :: new( Field :: new( "a1" , DataType :: Null , true ) ) ] ,
35+ number_rows : 3 ,
36+ return_field : Arc :: new ( Field :: new ( "r" , DataType :: Null , true ) ) ,
37+ } ,
38+ & ConfigOptions :: default ( ) ,
39+ )
40+ . await
41+ . unwrap ( ) ;
3742 assert_eq ! ( array. as_ref( ) , & NullArray :: new( 3 ) as & dyn Array , ) ;
3843}
3944
@@ -46,14 +51,17 @@ def foo() -> None:
4651 let udf = python_scalar_udf ( CODE ) . await . unwrap ( ) ;
4752
4853 let array = udf
49- . invoke_with_args ( ScalarFunctionArgs {
50- args : vec ! [ ] ,
51- arg_fields : vec ! [ ] ,
52- number_rows : 3 ,
53- return_field : Arc :: new ( Field :: new ( "r" , DataType :: Null , true ) ) ,
54- } )
55- . unwrap ( )
56- . unwrap_array ( ) ;
54+ . invoke_async_with_args (
55+ ScalarFunctionArgs {
56+ args : vec ! [ ] ,
57+ arg_fields : vec ! [ ] ,
58+ number_rows : 3 ,
59+ return_field : Arc :: new ( Field :: new ( "r" , DataType :: Null , true ) ) ,
60+ } ,
61+ & ConfigOptions :: default ( ) ,
62+ )
63+ . await
64+ . unwrap ( ) ;
5765 assert_eq ! ( array. as_ref( ) , & NullArray :: new( 3 ) as & dyn Array , ) ;
5866}
5967
@@ -66,14 +74,17 @@ def foo() -> None:
6674 let udf = python_scalar_udf ( CODE ) . await . unwrap ( ) ;
6775
6876 let array = udf
69- . invoke_with_args ( ScalarFunctionArgs {
70- args : vec ! [ ] ,
71- arg_fields : vec ! [ ] ,
72- number_rows : 3 ,
73- return_field : Arc :: new ( Field :: new ( "r" , DataType :: Null , true ) ) ,
74- } )
75- . unwrap ( )
76- . unwrap_array ( ) ;
77+ . invoke_async_with_args (
78+ ScalarFunctionArgs {
79+ args : vec ! [ ] ,
80+ arg_fields : vec ! [ ] ,
81+ number_rows : 3 ,
82+ return_field : Arc :: new ( Field :: new ( "r" , DataType :: Null , true ) ) ,
83+ } ,
84+ & ConfigOptions :: default ( ) ,
85+ )
86+ . await
87+ . unwrap ( ) ;
7788 assert_eq ! ( array. as_ref( ) , & NullArray :: new( 3 ) as & dyn Array , ) ;
7889}
7990
@@ -88,14 +99,17 @@ def foo() -> None:
8899 let udf = python_scalar_udf ( CODE ) . await . unwrap ( ) ;
89100
90101 let array = udf
91- . invoke_with_args ( ScalarFunctionArgs {
92- args : vec ! [ ] ,
93- arg_fields : vec ! [ ] ,
94- number_rows : 3 ,
95- return_field : Arc :: new ( Field :: new ( "r" , DataType :: Null , true ) ) ,
96- } )
97- . unwrap ( )
98- . unwrap_array ( ) ;
102+ . invoke_async_with_args (
103+ ScalarFunctionArgs {
104+ args : vec ! [ ] ,
105+ arg_fields : vec ! [ ] ,
106+ number_rows : 3 ,
107+ return_field : Arc :: new ( Field :: new ( "r" , DataType :: Null , true ) ) ,
108+ } ,
109+ & ConfigOptions :: default ( ) ,
110+ )
111+ . await
112+ . unwrap ( ) ;
99113 assert_eq ! ( array. as_ref( ) , & NullArray :: new( 3 ) as & dyn Array , ) ;
100114}
101115
@@ -108,12 +122,16 @@ def foo() -> None:
108122 let udf = python_scalar_udf ( CODE ) . await . unwrap ( ) ;
109123
110124 let err = udf
111- . invoke_with_args ( ScalarFunctionArgs {
112- args : vec ! [ ] ,
113- arg_fields : vec ! [ ] ,
114- number_rows : 3 ,
115- return_field : Arc :: new ( Field :: new ( "r" , DataType :: Null , true ) ) ,
116- } )
125+ . invoke_async_with_args (
126+ ScalarFunctionArgs {
127+ args : vec ! [ ] ,
128+ arg_fields : vec ! [ ] ,
129+ number_rows : 3 ,
130+ return_field : Arc :: new ( Field :: new ( "r" , DataType :: Null , true ) ) ,
131+ } ,
132+ & ConfigOptions :: default ( ) ,
133+ )
134+ . await
117135 . unwrap_err ( ) ;
118136
119137 insta:: assert_snapshot!(
@@ -131,12 +149,16 @@ def foo() -> None:
131149 let udf = python_scalar_udf ( CODE ) . await . unwrap ( ) ;
132150
133151 let err = udf
134- . invoke_with_args ( ScalarFunctionArgs {
135- args : vec ! [ ] ,
136- arg_fields : vec ! [ ] ,
137- number_rows : 3 ,
138- return_field : Arc :: new ( Field :: new ( "r" , DataType :: Null , true ) ) ,
139- } )
152+ . invoke_async_with_args (
153+ ScalarFunctionArgs {
154+ args : vec ! [ ] ,
155+ arg_fields : vec ! [ ] ,
156+ number_rows : 3 ,
157+ return_field : Arc :: new ( Field :: new ( "r" , DataType :: Null , true ) ) ,
158+ } ,
159+ & ConfigOptions :: default ( ) ,
160+ )
161+ . await
140162 . unwrap_err ( ) ;
141163
142164 insta:: assert_snapshot!(
@@ -154,12 +176,16 @@ def foo() -> None:
154176 let udf = python_scalar_udf ( CODE ) . await . unwrap ( ) ;
155177
156178 let err = udf
157- . invoke_with_args ( ScalarFunctionArgs {
158- args : vec ! [ ] ,
159- arg_fields : vec ! [ ] ,
160- number_rows : 3 ,
161- return_field : Arc :: new ( Field :: new ( "r" , DataType :: Null , true ) ) ,
162- } )
179+ . invoke_async_with_args (
180+ ScalarFunctionArgs {
181+ args : vec ! [ ] ,
182+ arg_fields : vec ! [ ] ,
183+ number_rows : 3 ,
184+ return_field : Arc :: new ( Field :: new ( "r" , DataType :: Null , true ) ) ,
185+ } ,
186+ & ConfigOptions :: default ( ) ,
187+ )
188+ . await
163189 . unwrap_err ( ) ;
164190
165191 insta:: assert_snapshot!(
0 commit comments