File tree 1 file changed +13
-3
lines changed
crates/polars-ops/src/frame/join
1 file changed +13
-3
lines changed Original file line number Diff line number Diff line change @@ -343,9 +343,19 @@ pub trait DataFrameJoinOps: IntoDf {
343
343
} ,
344
344
} ;
345
345
}
346
-
347
- let lhs_keys = prepare_keys_multiple ( & selected_left, args. nulls_equal ) ?. into_series ( ) ;
348
- let rhs_keys = prepare_keys_multiple ( & selected_right, args. nulls_equal ) ?. into_series ( ) ;
346
+ let ( lhs_keys, rhs_keys) =
347
+ if left_df. is_empty ( ) || other. is_empty ( ) && matches ! ( & args. how, JoinType :: Inner ) {
348
+ // Fast path for empty inner joins.
349
+ // Return 2 dummies so that we don't row-encode.
350
+ let a = Series :: full_null ( "" . into ( ) , 0 , & DataType :: Null ) ;
351
+ ( a. clone ( ) , a)
352
+ } else {
353
+ // Row encode the keys.
354
+ (
355
+ prepare_keys_multiple ( & selected_left, args. nulls_equal ) ?. into_series ( ) ,
356
+ prepare_keys_multiple ( & selected_right, args. nulls_equal ) ?. into_series ( ) ,
357
+ )
358
+ } ;
349
359
350
360
let drop_names = if should_coalesce {
351
361
if args. how == JoinType :: Right {
You can’t perform that action at this time.
0 commit comments