@@ -16,19 +16,20 @@ use crate::{
1616 DimensionName , EmptyRelationDerivedSourceTableName , EmptyRelationIsWrappable ,
1717 EmptyRelationProduceOneRow , FilterMemberMember , FilterMemberOp , FilterMemberValues ,
1818 FilterOpOp , GroupingSetExprType , GroupingSetType , InListExprNegated ,
19- InSubqueryExprNegated , JoinJoinConstraint , JoinJoinType , JoinLeftOn , JoinRightOn ,
20- LikeExprEscapeChar , LikeExprLikeType , LikeExprNegated , LikeType , LimitFetch , LimitSkip ,
21- LiteralExprValue , LiteralMemberRelation , LiteralMemberValue , LogicalPlanLanguage ,
22- MeasureName , MemberErrorError , OrderAsc , OrderMember , OuterColumnExprColumn ,
23- OuterColumnExprDataType , ProjectionAlias , ProjectionSplit , QueryParamIndex ,
24- ScalarFunctionExprFun , ScalarUDFExprFun , ScalarVariableExprDataType ,
25- ScalarVariableExprVariable , SegmentMemberMember , SortExprAsc , SortExprNullsFirst ,
26- SubqueryTypes , TableScanFetch , TableScanProjection , TableScanSourceTableName ,
27- TableScanTableName , TableUDFExprFun , TimeDimensionDateRange , TimeDimensionGranularity ,
28- TimeDimensionName , TryCastExprDataType , UnionAlias , WindowFunctionExprFun ,
29- WindowFunctionExprWindowFrame , WrappedSelectAlias , WrappedSelectDistinct ,
30- WrappedSelectJoinJoinType , WrappedSelectLimit , WrappedSelectOffset ,
31- WrappedSelectSelectType , WrappedSelectType , WrappedSelectUngrouped ,
19+ InSubqueryExprNegated , JoinJoinConstraint , JoinJoinType , JoinLeftOn ,
20+ JoinNullEqualsNull , JoinRightOn , LikeExprEscapeChar , LikeExprLikeType , LikeExprNegated ,
21+ LikeType , LimitFetch , LimitSkip , LiteralExprValue , LiteralMemberRelation ,
22+ LiteralMemberValue , LogicalPlanLanguage , MeasureName , MemberErrorError , OrderAsc ,
23+ OrderMember , OuterColumnExprColumn , OuterColumnExprDataType , ProjectionAlias ,
24+ ProjectionSplit , QueryParamIndex , ScalarFunctionExprFun , ScalarUDFExprFun ,
25+ ScalarVariableExprDataType , ScalarVariableExprVariable , SegmentMemberMember ,
26+ SortExprAsc , SortExprNullsFirst , SubqueryTypes , TableScanFetch , TableScanProjection ,
27+ TableScanSourceTableName , TableScanTableName , TableUDFExprFun , TimeDimensionDateRange ,
28+ TimeDimensionGranularity , TimeDimensionName , TryCastExprDataType , UnionAlias ,
29+ WindowFunctionExprFun , WindowFunctionExprWindowFrame , WrappedSelectAlias ,
30+ WrappedSelectDistinct , WrappedSelectJoinJoinType , WrappedSelectLimit ,
31+ WrappedSelectOffset , WrappedSelectSelectType , WrappedSelectType ,
32+ WrappedSelectUngrouped ,
3233 } ,
3334 CubeContext ,
3435 } ,
@@ -654,13 +655,16 @@ impl LogicalPlanToLanguageConverter {
654655 let join_type = add_data_node ! ( self , node. join_type, JoinJoinType ) ;
655656 let join_constraint =
656657 add_data_node ! ( self , node. join_constraint, JoinJoinConstraint ) ;
658+ let null_equals_null =
659+ add_data_node ! ( self , node. null_equals_null, JoinNullEqualsNull ) ;
657660 self . graph . add ( LogicalPlanLanguage :: Join ( [
658661 left,
659662 right,
660663 left_on,
661664 right_on,
662665 join_type,
663666 join_constraint,
667+ null_equals_null,
664668 ] ) )
665669 }
666670 LogicalPlan :: CrossJoin ( node) => {
@@ -1382,15 +1386,16 @@ impl LanguageToLogicalPlanConverter {
13821386 & join_type,
13831387 ) ?) ;
13841388
1389+ let null_equals_null = match_data_node ! ( node_by_id, params[ 6 ] , JoinNullEqualsNull ) ;
1390+
13851391 LogicalPlan :: Join ( Join {
13861392 left,
13871393 right,
13881394 on : left_on. into_iter ( ) . zip_eq ( right_on. into_iter ( ) ) . collect ( ) ,
13891395 join_type,
13901396 join_constraint,
13911397 schema,
1392- // TODO: Pass to Graph
1393- null_equals_null : true ,
1398+ null_equals_null,
13941399 } )
13951400 }
13961401 LogicalPlanLanguage :: CrossJoin ( params) => {
0 commit comments