@@ -366,7 +366,7 @@ impl<K: HashKey> HashJoinExecutor<K> {
366
366
#[ for_await]
367
367
for chunk in Self :: do_inner_join ( params) {
368
368
let mut chunk = chunk?;
369
- chunk. set_visibility ( cond. eval ( & chunk) ?. as_bool ( ) . iter ( ) . collect ( ) ) ;
369
+ chunk. set_visibility ( cond. eval ( & chunk) . await ?. as_bool ( ) . iter ( ) . collect ( ) ) ;
370
370
yield chunk
371
371
}
372
372
}
@@ -473,7 +473,8 @@ impl<K: HashKey> HashJoinExecutor<K> {
473
473
spilled,
474
474
cond. as_ref ( ) ,
475
475
& mut non_equi_state,
476
- ) ?
476
+ )
477
+ . await ?
477
478
}
478
479
}
479
480
} else {
@@ -494,7 +495,8 @@ impl<K: HashKey> HashJoinExecutor<K> {
494
495
spilled,
495
496
cond. as_ref ( ) ,
496
497
& mut non_equi_state,
497
- ) ?
498
+ )
499
+ . await ?
498
500
}
499
501
}
500
502
@@ -593,7 +595,8 @@ impl<K: HashKey> HashJoinExecutor<K> {
593
595
spilled,
594
596
cond. as_ref ( ) ,
595
597
& mut non_equi_state,
596
- ) ?
598
+ )
599
+ . await ?
597
600
}
598
601
}
599
602
}
@@ -606,7 +609,8 @@ impl<K: HashKey> HashJoinExecutor<K> {
606
609
spilled,
607
610
cond. as_ref ( ) ,
608
611
& mut non_equi_state,
609
- ) ?
612
+ )
613
+ . await ?
610
614
}
611
615
}
612
616
@@ -657,7 +661,8 @@ impl<K: HashKey> HashJoinExecutor<K> {
657
661
spilled,
658
662
cond. as_ref ( ) ,
659
663
& mut non_equi_state,
660
- ) ?
664
+ )
665
+ . await ?
661
666
}
662
667
}
663
668
} else if let Some ( spilled) = Self :: append_one_probe_row (
@@ -675,7 +680,8 @@ impl<K: HashKey> HashJoinExecutor<K> {
675
680
spilled,
676
681
cond. as_ref ( ) ,
677
682
& mut non_equi_state,
678
- ) ?
683
+ )
684
+ . await ?
679
685
}
680
686
if let Some ( spilled) = remaining_chunk_builder. consume_all ( ) {
681
687
yield spilled
@@ -777,7 +783,8 @@ impl<K: HashKey> HashJoinExecutor<K> {
777
783
spilled,
778
784
cond. as_ref ( ) ,
779
785
& mut non_equi_state,
780
- ) ?
786
+ )
787
+ . await ?
781
788
}
782
789
}
783
790
}
@@ -787,7 +794,8 @@ impl<K: HashKey> HashJoinExecutor<K> {
787
794
spilled,
788
795
cond. as_ref ( ) ,
789
796
& mut non_equi_state,
790
- ) ?
797
+ )
798
+ . await ?
791
799
}
792
800
#[ for_await]
793
801
for spilled in Self :: handle_remaining_build_rows_for_right_outer_join (
@@ -884,7 +892,8 @@ impl<K: HashKey> HashJoinExecutor<K> {
884
892
spilled,
885
893
cond. as_ref ( ) ,
886
894
& mut non_equi_state,
887
- ) ?
895
+ )
896
+ . await ?
888
897
}
889
898
}
890
899
}
@@ -894,7 +903,8 @@ impl<K: HashKey> HashJoinExecutor<K> {
894
903
spilled,
895
904
cond. as_ref ( ) ,
896
905
& mut non_equi_state,
897
- ) ?
906
+ )
907
+ . await ?
898
908
}
899
909
#[ for_await]
900
910
for spilled in Self :: handle_remaining_build_rows_for_right_semi_anti_join :: < ANTI_JOIN > (
@@ -1028,7 +1038,8 @@ impl<K: HashKey> HashJoinExecutor<K> {
1028
1038
cond. as_ref ( ) ,
1029
1039
& mut left_non_equi_state,
1030
1040
& mut right_non_equi_state,
1031
- ) ?
1041
+ )
1042
+ . await ?
1032
1043
}
1033
1044
}
1034
1045
} else {
@@ -1050,7 +1061,8 @@ impl<K: HashKey> HashJoinExecutor<K> {
1050
1061
cond. as_ref ( ) ,
1051
1062
& mut left_non_equi_state,
1052
1063
& mut right_non_equi_state,
1053
- ) ?
1064
+ )
1065
+ . await ?
1054
1066
}
1055
1067
#[ for_await]
1056
1068
for spilled in Self :: handle_remaining_build_rows_for_right_outer_join (
@@ -1199,7 +1211,7 @@ impl<K: HashKey> HashJoinExecutor<K> {
1199
1211
///
1200
1212
/// For more information about how `process_*_join_non_equi_condition` work, see their unit
1201
1213
/// tests.
1202
- fn process_left_outer_join_non_equi_condition (
1214
+ async fn process_left_outer_join_non_equi_condition (
1203
1215
chunk : DataChunk ,
1204
1216
cond : & dyn Expression ,
1205
1217
LeftNonEquiJoinState {
@@ -1209,7 +1221,7 @@ impl<K: HashKey> HashJoinExecutor<K> {
1209
1221
found_matched,
1210
1222
} : & mut LeftNonEquiJoinState ,
1211
1223
) -> Result < DataChunk > {
1212
- let filter = cond. eval ( & chunk) ?. as_bool ( ) . iter ( ) . collect ( ) ;
1224
+ let filter = cond. eval ( & chunk) . await ?. as_bool ( ) . iter ( ) . collect ( ) ;
1213
1225
Ok ( DataChunkMutator ( chunk)
1214
1226
. nullify_build_side_for_non_equi_condition ( & filter, * probe_column_count)
1215
1227
. remove_duplicate_rows_for_left_outer_join (
@@ -1223,7 +1235,7 @@ impl<K: HashKey> HashJoinExecutor<K> {
1223
1235
1224
1236
/// Filters for candidate rows which satisfy `non_equi` predicate.
1225
1237
/// Removes duplicate rows.
1226
- fn process_left_semi_anti_join_non_equi_condition < const ANTI_JOIN : bool > (
1238
+ async fn process_left_semi_anti_join_non_equi_condition < const ANTI_JOIN : bool > (
1227
1239
chunk : DataChunk ,
1228
1240
cond : & dyn Expression ,
1229
1241
LeftNonEquiJoinState {
@@ -1233,7 +1245,7 @@ impl<K: HashKey> HashJoinExecutor<K> {
1233
1245
..
1234
1246
} : & mut LeftNonEquiJoinState ,
1235
1247
) -> Result < DataChunk > {
1236
- let filter = cond. eval ( & chunk) ?. as_bool ( ) . iter ( ) . collect ( ) ;
1248
+ let filter = cond. eval ( & chunk) . await ?. as_bool ( ) . iter ( ) . collect ( ) ;
1237
1249
Ok ( DataChunkMutator ( chunk)
1238
1250
. remove_duplicate_rows_for_left_semi_anti_join :: < ANTI_JOIN > (
1239
1251
& filter,
@@ -1244,29 +1256,29 @@ impl<K: HashKey> HashJoinExecutor<K> {
1244
1256
. take ( ) )
1245
1257
}
1246
1258
1247
- fn process_right_outer_join_non_equi_condition (
1259
+ async fn process_right_outer_join_non_equi_condition (
1248
1260
chunk : DataChunk ,
1249
1261
cond : & dyn Expression ,
1250
1262
RightNonEquiJoinState {
1251
1263
build_row_ids,
1252
1264
build_row_matched,
1253
1265
} : & mut RightNonEquiJoinState ,
1254
1266
) -> Result < DataChunk > {
1255
- let filter = cond. eval ( & chunk) ?. as_bool ( ) . iter ( ) . collect ( ) ;
1267
+ let filter = cond. eval ( & chunk) . await ?. as_bool ( ) . iter ( ) . collect ( ) ;
1256
1268
Ok ( DataChunkMutator ( chunk)
1257
1269
. remove_duplicate_rows_for_right_outer_join ( & filter, build_row_ids, build_row_matched)
1258
1270
. take ( ) )
1259
1271
}
1260
1272
1261
- fn process_right_semi_anti_join_non_equi_condition (
1273
+ async fn process_right_semi_anti_join_non_equi_condition (
1262
1274
chunk : DataChunk ,
1263
1275
cond : & dyn Expression ,
1264
1276
RightNonEquiJoinState {
1265
1277
build_row_ids,
1266
1278
build_row_matched,
1267
1279
} : & mut RightNonEquiJoinState ,
1268
1280
) -> Result < ( ) > {
1269
- let filter = cond. eval ( & chunk) ?. as_bool ( ) . iter ( ) . collect ( ) ;
1281
+ let filter = cond. eval ( & chunk) . await ?. as_bool ( ) . iter ( ) . collect ( ) ;
1270
1282
DataChunkMutator ( chunk) . remove_duplicate_rows_for_right_semi_anti_join (
1271
1283
& filter,
1272
1284
build_row_ids,
@@ -1275,13 +1287,13 @@ impl<K: HashKey> HashJoinExecutor<K> {
1275
1287
Ok ( ( ) )
1276
1288
}
1277
1289
1278
- fn process_full_outer_join_non_equi_condition (
1290
+ async fn process_full_outer_join_non_equi_condition (
1279
1291
chunk : DataChunk ,
1280
1292
cond : & dyn Expression ,
1281
1293
left_non_equi_state : & mut LeftNonEquiJoinState ,
1282
1294
right_non_equi_state : & mut RightNonEquiJoinState ,
1283
1295
) -> Result < DataChunk > {
1284
- let filter = cond. eval ( & chunk) ?. as_bool ( ) . iter ( ) . collect ( ) ;
1296
+ let filter = cond. eval ( & chunk) . await ?. as_bool ( ) . iter ( ) . collect ( ) ;
1285
1297
Ok ( DataChunkMutator ( chunk)
1286
1298
. nullify_build_side_for_non_equi_condition (
1287
1299
& filter,
@@ -2609,6 +2621,7 @@ mod tests {
2609
2621
cond. as_ref( ) ,
2610
2622
& mut state
2611
2623
)
2624
+ . await
2612
2625
. unwrap( )
2613
2626
. compact( ) ,
2614
2627
& expect
@@ -2638,6 +2651,7 @@ mod tests {
2638
2651
cond. as_ref( ) ,
2639
2652
& mut state
2640
2653
)
2654
+ . await
2641
2655
. unwrap( )
2642
2656
. compact( ) ,
2643
2657
& expect
@@ -2667,6 +2681,7 @@ mod tests {
2667
2681
cond. as_ref( ) ,
2668
2682
& mut state
2669
2683
)
2684
+ . await
2670
2685
. unwrap( )
2671
2686
. compact( ) ,
2672
2687
& expect
@@ -2706,6 +2721,7 @@ mod tests {
2706
2721
cond. as_ref( ) ,
2707
2722
& mut state
2708
2723
)
2724
+ . await
2709
2725
. unwrap( )
2710
2726
. compact( ) ,
2711
2727
& expect
@@ -2732,6 +2748,7 @@ mod tests {
2732
2748
cond. as_ref( ) ,
2733
2749
& mut state
2734
2750
)
2751
+ . await
2735
2752
. unwrap( )
2736
2753
. compact( ) ,
2737
2754
& expect
@@ -2758,6 +2775,7 @@ mod tests {
2758
2775
cond. as_ref( ) ,
2759
2776
& mut state
2760
2777
)
2778
+ . await
2761
2779
. unwrap( )
2762
2780
. compact( ) ,
2763
2781
& expect
@@ -2799,6 +2817,7 @@ mod tests {
2799
2817
cond. as_ref( ) ,
2800
2818
& mut state
2801
2819
)
2820
+ . await
2802
2821
. unwrap( )
2803
2822
. compact( ) ,
2804
2823
& expect
@@ -2827,6 +2846,7 @@ mod tests {
2827
2846
cond. as_ref( ) ,
2828
2847
& mut state
2829
2848
)
2849
+ . await
2830
2850
. unwrap( )
2831
2851
. compact( ) ,
2832
2852
& expect
@@ -2855,6 +2875,7 @@ mod tests {
2855
2875
cond. as_ref( ) ,
2856
2876
& mut state
2857
2877
)
2878
+ . await
2858
2879
. unwrap( )
2859
2880
. compact( ) ,
2860
2881
& expect
@@ -2918,6 +2939,7 @@ mod tests {
2918
2939
cond. as_ref( ) ,
2919
2940
& mut state
2920
2941
)
2942
+ . await
2921
2943
. unwrap( )
2922
2944
. compact( ) ,
2923
2945
& expect
@@ -2958,6 +2980,7 @@ mod tests {
2958
2980
cond. as_ref( ) ,
2959
2981
& mut state
2960
2982
)
2983
+ . await
2961
2984
. unwrap( )
2962
2985
. compact( ) ,
2963
2986
& expect
@@ -3010,6 +3033,7 @@ mod tests {
3010
3033
cond. as_ref( ) ,
3011
3034
& mut state
3012
3035
)
3036
+ . await
3013
3037
. is_ok( )
3014
3038
) ;
3015
3039
assert_eq ! ( state. build_row_ids, Vec :: new( ) ) ;
@@ -3044,6 +3068,7 @@ mod tests {
3044
3068
cond. as_ref( ) ,
3045
3069
& mut state
3046
3070
)
3071
+ . await
3047
3072
. is_ok( )
3048
3073
) ;
3049
3074
assert_eq ! ( state. build_row_ids, Vec :: new( ) ) ;
@@ -3105,6 +3130,7 @@ mod tests {
3105
3130
& mut left_state,
3106
3131
& mut right_state,
3107
3132
)
3133
+ . await
3108
3134
. unwrap( )
3109
3135
. compact( ) ,
3110
3136
& expect
@@ -3152,6 +3178,7 @@ mod tests {
3152
3178
& mut left_state,
3153
3179
& mut right_state,
3154
3180
)
3181
+ . await
3155
3182
. unwrap( )
3156
3183
. compact( ) ,
3157
3184
& expect
0 commit comments