@@ -312,14 +312,10 @@ mod tests {
312312
313313 use arrow_schema:: DataType ;
314314 use arrow_schema:: Field ;
315- use arrow_schema:: Fields ;
316315 use arrow_schema:: Schema ;
317316 use arrow_schema:: TimeUnit as ArrowTimeUnit ;
318- use datafusion:: functions:: core:: getfield:: GetFieldFunc ;
319317 use datafusion_common:: ScalarValue ;
320- use datafusion_common:: config:: ConfigOptions ;
321318 use datafusion_expr:: Operator as DFOperator ;
322- use datafusion_expr:: ScalarUDF ;
323319 use datafusion_physical_expr:: PhysicalExpr ;
324320 use datafusion_physical_plan:: expressions as df_expr;
325321 use insta:: assert_snapshot;
@@ -620,55 +616,4 @@ mod tests {
620616
621617 assert ! ( !can_be_pushed_down( & like_expr, & test_schema) ) ;
622618 }
623-
624- #[ test]
625- fn test_expr_from_df_get_field ( ) {
626- let struct_col = Arc :: new ( df_expr:: Column :: new ( "my_struct" , 0 ) ) as Arc < dyn PhysicalExpr > ;
627- let field_name = Arc :: new ( df_expr:: Literal :: new ( ScalarValue :: Utf8 ( Some (
628- "field1" . to_string ( ) ,
629- ) ) ) ) as Arc < dyn PhysicalExpr > ;
630- let get_field_expr = ScalarFunctionExpr :: new (
631- "get_field" ,
632- Arc :: new ( ScalarUDF :: from ( GetFieldFunc :: new ( ) ) ) ,
633- vec ! [ struct_col, field_name] ,
634- Arc :: new ( Field :: new ( "field1" , DataType :: Utf8 , true ) ) ,
635- Arc :: new ( ConfigOptions :: new ( ) ) ,
636- ) ;
637- let result = Expression :: try_from_df ( & get_field_expr) . unwrap ( ) ;
638- assert_snapshot ! ( result. display_tree( ) . to_string( ) , @r"
639- vortex.get_item(field1)
640- └── input: vortex.get_item(my_struct)
641- └── input: vortex.root()
642- " ) ;
643- }
644-
645- #[ rstest]
646- #[ case:: valid_field( "field1" , true ) ]
647- #[ case:: missing_field( "nonexistent_field" , false ) ]
648- fn test_can_be_pushed_down_get_field ( #[ case] field_name : & str , #[ case] expected : bool ) {
649- let struct_fields = Fields :: from ( vec ! [
650- Field :: new( "field1" , DataType :: Utf8 , true ) ,
651- Field :: new( "field2" , DataType :: Int32 , true ) ,
652- ] ) ;
653- let schema = Schema :: new ( vec ! [ Field :: new(
654- "my_struct" ,
655- DataType :: Struct ( struct_fields) ,
656- true ,
657- ) ] ) ;
658-
659- let struct_col = Arc :: new ( df_expr:: Column :: new ( "my_struct" , 0 ) ) as Arc < dyn PhysicalExpr > ;
660- let field_name_lit = Arc :: new ( df_expr:: Literal :: new ( ScalarValue :: Utf8 ( Some (
661- field_name. to_string ( ) ,
662- ) ) ) ) as Arc < dyn PhysicalExpr > ;
663-
664- let get_field_expr = Arc :: new ( ScalarFunctionExpr :: new (
665- "get_field" ,
666- Arc :: new ( ScalarUDF :: from ( GetFieldFunc :: new ( ) ) ) ,
667- vec ! [ struct_col, field_name_lit] ,
668- Arc :: new ( Field :: new ( field_name, DataType :: Utf8 , true ) ) ,
669- Arc :: new ( ConfigOptions :: new ( ) ) ,
670- ) ) as Arc < dyn PhysicalExpr > ;
671-
672- assert_eq ! ( can_be_pushed_down( & get_field_expr, & schema) , expected) ;
673- }
674619}
0 commit comments