@@ -435,7 +435,7 @@ public static EnumerableMergeJoin create(RelNode left, RelNode right,
435
435
BlockBuilder builder = new BlockBuilder ();
436
436
final Result leftResult =
437
437
implementor .visitChild (this , 0 , (EnumerableRel ) left , pref );
438
- final Expression leftExpression =
438
+ Expression leftExpression =
439
439
builder .append ("left" , leftResult .block );
440
440
final ParameterExpression left_ =
441
441
Expressions .parameter (leftResult .physType .getJavaRowType (), "left" );
@@ -493,19 +493,21 @@ public static EnumerableMergeJoin create(RelNode left, RelNode right,
493
493
}
494
494
final RelCollation collation = RelCollations .of (fieldCollations );
495
495
final Expression comparator = leftKeyPhysType .generateMergeJoinComparator (collation );
496
-
496
+ if (joinType == JoinRelType .INNER || joinType == JoinRelType .SEMI ) {
497
+ leftExpression = Expressions .call (BuiltInMethod .MERGE_JOIN_NOT_NULL_ENUMERABLE .method , leftExpression ,
498
+ Expressions .lambda (
499
+ leftKeyPhysType .record (leftExpressions ), left_ ));
500
+ }
497
501
return implementor .result (
498
502
physType ,
499
503
builder .append (
500
504
Expressions .call (
501
505
BuiltInMethod .MERGE_JOIN .method ,
502
506
Expressions .list (
503
- Expressions .call (BuiltInMethod .MERGE_JOIN_NOT_NULL_ENUMERABLE .method , leftExpression ,
504
- Expressions .lambda (
505
- leftKeyPhysType .record (leftExpressions ), left_ )),
507
+ leftExpression ,
506
508
Expressions .call (BuiltInMethod .MERGE_JOIN_NOT_NULL_ENUMERABLE .method , rightExpression ,
507
509
Expressions .lambda (
508
- rightKeyPhysType .record (rightExpressions ), right_ )),
510
+ rightKeyPhysType .record (rightExpressions ), right_ )),
509
511
Expressions .lambda (
510
512
leftKeyPhysType .record (leftExpressions ), left_ ),
511
513
Expressions .lambda (
0 commit comments