diff options
author | pudge1000-7 <pudge1000-7@yandex-team.com> | 2025-02-26 14:07:46 +0300 |
---|---|---|
committer | pudge1000-7 <pudge1000-7@yandex-team.com> | 2025-02-26 14:23:40 +0300 |
commit | 3364836723dd075c997fb496d86e02d64c626533 (patch) | |
tree | 48a4253fa7dd6eecb9a1a0ee6ee2bd91c9526891 | |
parent | c69b9c681239aa9f1d87685da0b93ceae4f843bf (diff) | |
download | ydb-3364836723dd075c997fb496d86e02d64c626533.tar.gz |
[CBO] Add CROSS JOIN cost fix
commit_hash:ea1e4e327107df922cd5525ae33646992addafda
-rw-r--r-- | yql/essentials/core/cbo/cbo_optimizer_new.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/yql/essentials/core/cbo/cbo_optimizer_new.cpp b/yql/essentials/core/cbo/cbo_optimizer_new.cpp index db428ac79a..1e9e92b724 100644 --- a/yql/essentials/core/cbo/cbo_optimizer_new.cpp +++ b/yql/essentials/core/cbo/cbo_optimizer_new.cpp @@ -296,6 +296,10 @@ TOptimizerStatistics TBaseProviderContext::ComputeJoinStats( double cost = ComputeJoinCost(leftStats, rightStats, newCard, newByteSize, joinAlgo) + leftStats.Cost + rightStats.Cost; + if (joinKind == EJoinKind::Cross /* in case of cross join we broadcast the right part to the left */) { + cost += rightStats.Nrows; + } + auto result = TOptimizerStatistics(outputType, newCard, newNCols, newByteSize, cost, leftKeyColumns ? leftStats.KeyColumns : ( rightKeyColumns ? rightStats.KeyColumns : TIntrusivePtr<TOptimizerStatistics::TKeyColumns>())); result.Selectivity = selectivity; |