aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpudge1000-7 <pudge1000-7@yandex-team.com>2025-02-26 14:07:46 +0300
committerpudge1000-7 <pudge1000-7@yandex-team.com>2025-02-26 14:23:40 +0300
commit3364836723dd075c997fb496d86e02d64c626533 (patch)
tree48a4253fa7dd6eecb9a1a0ee6ee2bd91c9526891
parentc69b9c681239aa9f1d87685da0b93ceae4f843bf (diff)
downloadydb-3364836723dd075c997fb496d86e02d64c626533.tar.gz
[CBO] Add CROSS JOIN cost fix
commit_hash:ea1e4e327107df922cd5525ae33646992addafda
-rw-r--r--yql/essentials/core/cbo/cbo_optimizer_new.cpp4
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;