diff --git a/ydb/library/yql/core/cbo/cbo_optimizer_new.h b/ydb/library/yql/core/cbo/cbo_optimizer_new.h index 7f009a61d5fd..0a564e4c3595 100644 --- a/ydb/library/yql/core/cbo/cbo_optimizer_new.h +++ b/ydb/library/yql/core/cbo/cbo_optimizer_new.h @@ -47,8 +47,8 @@ enum EJoinKind: ui32 LeftJoin, RightJoin, OuterJoin, - LeftOnly, - RightOnly, + LeftOnly /* == LeftAntiJoin */, + RightOnly /* == RightAntiJoin */, LeftSemi, RightSemi, Cross, diff --git a/ydb/library/yql/dq/opt/dq_opt_conflict_rules_collector.cpp b/ydb/library/yql/dq/opt/dq_opt_conflict_rules_collector.cpp index 266553a43320..68d702aa3b4d 100644 --- a/ydb/library/yql/dq/opt/dq_opt_conflict_rules_collector.cpp +++ b/ydb/library/yql/dq/opt/dq_opt_conflict_rules_collector.cpp @@ -8,8 +8,6 @@ EJoinKind GetEquivalentJoinByAlgebraicProperties(EJoinKind joinKind) { switch (joinKind) { case EJoinKind::Exclusion: return EJoinKind::OuterJoin; - case EJoinKind::LeftOnly: - return EJoinKind::LeftJoin; default: return joinKind; } @@ -34,9 +32,9 @@ bool OperatorsAreAssociative(EJoinKind lhs, EJoinKind rhs) { rhs = GetEquivalentJoinByAlgebraicProperties(rhs); static THashMap> ASSOC_TABLE = { - {EJoinKind::Cross, {EJoinKind::Cross, EJoinKind::InnerJoin, EJoinKind::LeftSemi, EJoinKind::LeftJoin}}, - {EJoinKind::InnerJoin, {EJoinKind::Cross, EJoinKind::InnerJoin, EJoinKind::LeftSemi, EJoinKind::LeftJoin}}, - {EJoinKind::LeftJoin, {EJoinKind::LeftJoin}}, + {EJoinKind::Cross, {EJoinKind::Cross, EJoinKind::InnerJoin, EJoinKind::LeftSemi, EJoinKind::LeftOnly, EJoinKind::LeftJoin}}, + {EJoinKind::InnerJoin, {EJoinKind::Cross, EJoinKind::InnerJoin, EJoinKind::LeftSemi, EJoinKind::LeftOnly, EJoinKind::LeftJoin}}, + {EJoinKind::LeftJoin, {EJoinKind::LeftJoin}}, {EJoinKind::OuterJoin, {EJoinKind::LeftJoin, EJoinKind::OuterJoin}} }; @@ -52,10 +50,11 @@ bool OperatorsAreLeftAsscom(EJoinKind lhs, EJoinKind rhs) { rhs = GetEquivalentJoinByAlgebraicProperties(rhs); static THashMap> LASSCOM_TABLE = { - {EJoinKind::Cross, {EJoinKind::Cross, EJoinKind::InnerJoin, EJoinKind::LeftSemi, EJoinKind::LeftJoin}}, - {EJoinKind::InnerJoin, {EJoinKind::Cross, EJoinKind::InnerJoin, EJoinKind::LeftSemi, EJoinKind::LeftJoin}}, - {EJoinKind::LeftSemi, {EJoinKind::Cross, EJoinKind::InnerJoin, EJoinKind::LeftSemi, EJoinKind::LeftJoin}}, - {EJoinKind::LeftJoin, {EJoinKind::Cross, EJoinKind::InnerJoin, EJoinKind::LeftSemi, EJoinKind::LeftJoin, EJoinKind::OuterJoin}}, + {EJoinKind::Cross, {EJoinKind::Cross, EJoinKind::InnerJoin, EJoinKind::LeftSemi, EJoinKind::LeftOnly, EJoinKind::LeftJoin}}, + {EJoinKind::InnerJoin, {EJoinKind::Cross, EJoinKind::InnerJoin, EJoinKind::LeftSemi, EJoinKind::LeftOnly, EJoinKind::LeftJoin}}, + {EJoinKind::LeftSemi, {EJoinKind::Cross, EJoinKind::InnerJoin, EJoinKind::LeftSemi, EJoinKind::LeftOnly, EJoinKind::LeftJoin}}, + {EJoinKind::LeftOnly, {EJoinKind::Cross, EJoinKind::InnerJoin, EJoinKind::LeftSemi, EJoinKind::LeftOnly, EJoinKind::LeftJoin}}, + {EJoinKind::LeftJoin, {EJoinKind::Cross, EJoinKind::InnerJoin, EJoinKind::LeftSemi, EJoinKind::LeftJoin, EJoinKind::OuterJoin}}, {EJoinKind::OuterJoin, {EJoinKind::LeftJoin, EJoinKind::OuterJoin}} }; @@ -71,7 +70,7 @@ bool OperatorsAreRightAsscom(EJoinKind lhs, EJoinKind rhs) { rhs = GetEquivalentJoinByAlgebraicProperties(rhs); static THashMap> RASSCOM_TABLE = { - {EJoinKind::Cross, {EJoinKind::Cross, EJoinKind::InnerJoin}}, + {EJoinKind::Cross, {EJoinKind::Cross, EJoinKind::InnerJoin}}, {EJoinKind::InnerJoin, {EJoinKind::Cross, EJoinKind::InnerJoin}}, {EJoinKind::OuterJoin, {EJoinKind::OuterJoin}} };