@@ -100,7 +100,11 @@ unsafe extern "C" fn call_fn_wrapper(
100100 let args =
101101 rresult_return ! ( parse_exprs( proto_filters. expr. iter( ) , & default_ctx, & codec) ) ;
102102
103- let table_provider = rresult_return ! ( udtf. call( & args) ) ;
103+ let args_with_names = args
104+ . into_iter ( )
105+ . map ( |expr| ( expr, None ) )
106+ . collect :: < Vec < _ > > ( ) ;
107+ let table_provider = rresult_return ! ( udtf. call( & args_with_names) ) ;
104108 RResult :: ROk ( FFI_TableProvider :: new ( table_provider, false , runtime) )
105109}
106110
@@ -176,10 +180,13 @@ impl From<FFI_TableFunction> for ForeignTableFunction {
176180}
177181
178182impl TableFunctionImpl for ForeignTableFunction {
179- fn call ( & self , args : & [ Expr ] ) -> Result < Arc < dyn TableProvider > > {
183+ fn call ( & self , args : & [ ( Expr , Option < String > ) ] ) -> Result < Arc < dyn TableProvider > > {
180184 let codec = DefaultLogicalExtensionCodec { } ;
181185 let expr_list = LogicalExprList {
182- expr : serialize_exprs ( args, & codec) ?,
186+ expr : serialize_exprs (
187+ args. iter ( ) . map ( |( expr, _) | expr) . collect :: < Vec < _ > > ( ) ,
188+ & codec,
189+ ) ?,
183190 } ;
184191 let filters_serialized = expr_list. encode_to_vec ( ) . into ( ) ;
185192
@@ -210,10 +217,13 @@ mod tests {
210217 struct TestUDTF { }
211218
212219 impl TableFunctionImpl for TestUDTF {
213- fn call ( & self , args : & [ Expr ] ) -> Result < Arc < dyn TableProvider > > {
220+ fn call (
221+ & self ,
222+ args : & [ ( Expr , Option < String > ) ] ,
223+ ) -> Result < Arc < dyn TableProvider > > {
214224 let args = args
215225 . iter ( )
216- . map ( |arg| {
226+ . map ( |( arg, _ ) | {
217227 if let Expr :: Literal ( scalar) = arg {
218228 Ok ( scalar)
219229 } else {
@@ -293,8 +303,12 @@ mod tests {
293303
294304 let foreign_udf: ForeignTableFunction = local_udtf. into ( ) ;
295305
296- let table =
297- foreign_udf. call ( & vec ! [ lit( 6_u64 ) , lit( "one" ) , lit( 2.0 ) , lit( 3_u64 ) ] ) ?;
306+ let table = foreign_udf. call ( & vec ! [
307+ ( lit( 6_u64 ) , None ) ,
308+ ( lit( "one" ) , None ) ,
309+ ( lit( 2.0 ) , None ) ,
310+ ( lit( 3_u64 ) , None ) ,
311+ ] ) ?;
298312
299313 let ctx = SessionContext :: default ( ) ;
300314 let _ = ctx. register_table ( "test-table" , table) ?;
0 commit comments