@@ -2275,6 +2275,28 @@ mod tests {
22752275 )
22762276 }
22772277
2278+ fn empty_build_with_probe_error_inputs ( ) -> ( Arc < dyn ExecutionPlan > , Arc < dyn ExecutionPlan > , JoinOn ) {
2279+ let left_batch = build_table_i32 ( ( "a1" , & vec ! [ ] ) , ( "b1" , & vec ! [ ] ) , ( "c1" , & vec ! [ ] ) ) ;
2280+ let left_schema = left_batch. schema ( ) ;
2281+ let left: Arc < dyn ExecutionPlan > =
2282+ TestMemoryExec :: try_new_exec ( & [ vec ! [ left_batch] ] , left_schema. clone ( ) , None )
2283+ . unwrap ( ) ;
2284+
2285+ let err = exec_err ! ( "bad data error" ) ;
2286+ let right_batch =
2287+ build_table_i32 ( ( "a2" , & vec ! [ ] ) , ( "b1" , & vec ! [ ] ) , ( "c2" , & vec ! [ ] ) ) ;
2288+ let right_schema = right_batch. schema ( ) ;
2289+ let on = vec ! [ (
2290+ Arc :: new( Column :: new_with_schema( "b1" , & left_schema) . unwrap( ) ) as _,
2291+ Arc :: new( Column :: new_with_schema( "b1" , & right_schema) . unwrap( ) ) as _,
2292+ ) ] ;
2293+ let right: Arc < dyn ExecutionPlan > = Arc :: new (
2294+ MockExec :: new ( vec ! [ Ok ( right_batch) , err] , right_schema) . with_use_task ( false ) ,
2295+ ) ;
2296+
2297+ ( left, right, on)
2298+ }
2299+
22782300 async fn join_collect (
22792301 left : Arc < dyn ExecutionPlan > ,
22802302 right : Arc < dyn ExecutionPlan > ,
@@ -4985,26 +5007,7 @@ mod tests {
49855007
49865008 #[ tokio:: test]
49875009 async fn join_does_not_consume_probe_when_empty_build_fixes_output ( ) {
4988- let left_batch =
4989- build_table_i32 ( ( "a1" , & vec ! [ ] ) , ( "b1" , & vec ! [ ] ) , ( "c1" , & vec ! [ ] ) ) ;
4990- let left_schema = left_batch. schema ( ) ;
4991-
4992- let err = exec_err ! ( "bad data error" ) ;
4993- let right = build_table_i32 ( ( "a2" , & vec ! [ ] ) , ( "b1" , & vec ! [ ] ) , ( "c2" , & vec ! [ ] ) ) ;
4994-
4995- let on = vec ! [ (
4996- Arc :: new( Column :: new_with_schema( "b1" , & left_schema) . unwrap( ) ) as _,
4997- Arc :: new( Column :: new_with_schema( "b1" , & right. schema( ) ) . unwrap( ) ) as _,
4998- ) ] ;
4999- let schema = right. schema ( ) ;
5000- let right_input =
5001- Arc :: new ( MockExec :: new ( vec ! [ Ok ( right) , err] , schema) . with_use_task ( false ) ) ;
5002- let left: Arc < dyn ExecutionPlan > = TestMemoryExec :: try_new_exec (
5003- & [ vec ! [ left_batch] ] ,
5004- Arc :: clone ( & left_schema) ,
5005- None ,
5006- )
5007- . unwrap ( ) ;
5010+ let ( left, right_input, on) = empty_build_with_probe_error_inputs ( ) ;
50085011
50095012 let join_types = vec ! [
50105013 JoinType :: Inner ,
@@ -5018,7 +5021,7 @@ mod tests {
50185021 for join_type in join_types {
50195022 let join = join (
50205023 Arc :: clone ( & left) ,
5021- Arc :: clone ( & right_input) as Arc < dyn ExecutionPlan > ,
5024+ Arc :: clone ( & right_input) ,
50225025 on. clone ( ) ,
50235026 & join_type,
50245027 NullEquality :: NullEqualsNothing ,
@@ -5038,26 +5041,7 @@ mod tests {
50385041
50395042 #[ tokio:: test]
50405043 async fn join_still_consumes_probe_when_empty_build_needs_probe_rows ( ) {
5041- let left_batch =
5042- build_table_i32 ( ( "a1" , & vec ! [ ] ) , ( "b1" , & vec ! [ ] ) , ( "c1" , & vec ! [ ] ) ) ;
5043- let left_schema = left_batch. schema ( ) ;
5044-
5045- let err = exec_err ! ( "bad data error" ) ;
5046- let right = build_table_i32 ( ( "a2" , & vec ! [ ] ) , ( "b1" , & vec ! [ ] ) , ( "c2" , & vec ! [ ] ) ) ;
5047-
5048- let on = vec ! [ (
5049- Arc :: new( Column :: new_with_schema( "b1" , & left_schema) . unwrap( ) ) as _,
5050- Arc :: new( Column :: new_with_schema( "b1" , & right. schema( ) ) . unwrap( ) ) as _,
5051- ) ] ;
5052- let schema = right. schema ( ) ;
5053- let right_input =
5054- Arc :: new ( MockExec :: new ( vec ! [ Ok ( right) , err] , schema) . with_use_task ( false ) ) ;
5055- let left: Arc < dyn ExecutionPlan > = TestMemoryExec :: try_new_exec (
5056- & [ vec ! [ left_batch] ] ,
5057- Arc :: clone ( & left_schema) ,
5058- None ,
5059- )
5060- . unwrap ( ) ;
5044+ let ( left, right_input, on) = empty_build_with_probe_error_inputs ( ) ;
50615045
50625046 let join_types = vec ! [
50635047 JoinType :: Right ,
@@ -5069,7 +5053,7 @@ mod tests {
50695053 for join_type in join_types {
50705054 let join = join (
50715055 Arc :: clone ( & left) ,
5072- Arc :: clone ( & right_input) as Arc < dyn ExecutionPlan > ,
5056+ Arc :: clone ( & right_input) ,
50735057 on. clone ( ) ,
50745058 & join_type,
50755059 NullEquality :: NullEqualsNothing ,
0 commit comments