@@ -648,12 +648,6 @@ impl ConstEvaluator {
648648 }
649649 Expr :: Cast ( Cast { expr, data_type } )
650650 | Expr :: TryCast ( TryCast { expr, data_type } ) => {
651- // Fast path: only struct targets need struct-specific foldability checks.
652- // For non-struct casts, avoid deriving the source type from an empty schema.
653- if !matches ! ( data_type, DataType :: Struct ( _) ) {
654- return true ;
655- }
656-
657651 if let (
658652 Ok ( DataType :: Struct ( source_fields) ) ,
659653 DataType :: Struct ( target_fields) ,
@@ -5345,24 +5339,4 @@ mod tests {
53455339 "Struct cast with empty (0-row) array should remain unchanged"
53465340 ) ;
53475341 }
5348-
5349- #[ test]
5350- fn test_cast_heavy_non_struct_chain_foldable ( ) {
5351- // Exercise a cast-heavy, non-struct simplification path to protect against
5352- // planner regressions in cast eligibility checks.
5353- let expr = ( 0 ..64 ) . fold ( Expr :: Literal ( ScalarValue :: Int32 ( Some ( 7 ) ) , None ) , |acc, i| {
5354- let target_type = if i % 2 == 0 {
5355- DataType :: Int64
5356- } else {
5357- DataType :: Int32
5358- } ;
5359- Expr :: Cast ( Cast :: new ( Box :: new ( acc) , target_type) )
5360- } ) ;
5361-
5362- let simplifier =
5363- ExprSimplifier :: new ( SimplifyContext :: default ( ) . with_schema ( test_schema ( ) ) ) ;
5364- let result = simplifier. simplify ( expr) . unwrap ( ) ;
5365-
5366- assert_eq ! ( result, Expr :: Literal ( ScalarValue :: Int32 ( Some ( 7 ) ) , None ) ) ;
5367- }
53685342}
0 commit comments