diff options
| author | Pavel Velikhov <[email protected]> | 2026-01-17 21:26:46 +0300 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-01-17 18:26:46 +0000 |
| commit | c3ef3159cee28a5116ddfbb46316fc62f761a5da (patch) | |
| tree | f3ad0ce9aeea1326502043f1167c9b4339706f23 | |
| parent | aca41516fe7dbe5f758052eec789849934018fd9 (diff) | |
Added pragma to disallow fusing of joins (#32287)
Co-authored-by: Velikhov Pavel <[email protected]>
| -rw-r--r-- | ydb/core/kqp/opt/physical/kqp_opt_phy.cpp | 2 | ||||
| -rw-r--r-- | ydb/core/kqp/provider/yql_kikimr_settings.cpp | 1 | ||||
| -rw-r--r-- | ydb/core/kqp/provider/yql_kikimr_settings.h | 1 |
3 files changed, 3 insertions, 1 deletions
diff --git a/ydb/core/kqp/opt/physical/kqp_opt_phy.cpp b/ydb/core/kqp/opt/physical/kqp_opt_phy.cpp index c588b2945be..e7e621b15ff 100644 --- a/ydb/core/kqp/opt/physical/kqp_opt_phy.cpp +++ b/ydb/core/kqp/opt/physical/kqp_opt_phy.cpp @@ -561,7 +561,7 @@ protected: { // TODO: Allow push to left stage for data queries. // It is now possible as we don't use datashard transactions for reads in data queries. - bool pushLeftStage = AllowFuseJoinInputs(node); + bool pushLeftStage = AllowFuseJoinInputs(node) && !KqpCtx.Config->OptDisallowFuseJoins.Get().GetOrElse(false); bool shuffleEliminationWithMap = KqpCtx.Config->OptShuffleEliminationWithMap.Get().GetOrElse(true); bool rightCollectStage = !KqpCtx.Config->GetAllowMultiBroadcasts(); TExprBase output = DqBuildJoin(node, ctx, optCtx, *getParents(), IsGlobal, diff --git a/ydb/core/kqp/provider/yql_kikimr_settings.cpp b/ydb/core/kqp/provider/yql_kikimr_settings.cpp index 453905db99d..9ad10b6f3b8 100644 --- a/ydb/core/kqp/provider/yql_kikimr_settings.cpp +++ b/ydb/core/kqp/provider/yql_kikimr_settings.cpp @@ -91,6 +91,7 @@ TKikimrConfiguration::TKikimrConfiguration() { REGISTER_SETTING(*this, OptShuffleElimination); REGISTER_SETTING(*this, OptShuffleEliminationWithMap); REGISTER_SETTING(*this, OptShuffleEliminationForAggregation); + REGISTER_SETTING(*this, OptDisallowFuseJoins); REGISTER_SETTING(*this, OverridePlanner); REGISTER_SETTING(*this, UseGraceJoinCoreForMap); REGISTER_SETTING(*this, UseBlockHashJoin); diff --git a/ydb/core/kqp/provider/yql_kikimr_settings.h b/ydb/core/kqp/provider/yql_kikimr_settings.h index e79ac45ebf2..d2db480937a 100644 --- a/ydb/core/kqp/provider/yql_kikimr_settings.h +++ b/ydb/core/kqp/provider/yql_kikimr_settings.h @@ -84,6 +84,7 @@ public: NCommon::TConfSetting<bool, Static> OptShuffleEliminationWithMap; NCommon::TConfSetting<bool, Static> OptShuffleEliminationForAggregation; NCommon::TConfSetting<ui32, Static> CostBasedOptimizationLevel; + NCommon::TConfSetting<bool, Static> OptDisallowFuseJoins; // Use CostBasedOptimizationLevel for internal usage. This is a dummy flag that is mapped to the optimization level during parsing. NCommon::TConfSetting<TString, Static> CostBasedOptimization; |
