Skip to content

Commit

Permalink
Enabled constant folding by default (#6509)
Browse files Browse the repository at this point in the history
  • Loading branch information
pavelvelikhov authored Jul 11, 2024
1 parent fec39e5 commit 88dc77f
Show file tree
Hide file tree
Showing 9 changed files with 11 additions and 17 deletions.
1 change: 1 addition & 0 deletions ydb/core/kqp/compile_service/kqp_compile_actor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -608,6 +608,7 @@ void ApplyServiceConfig(TKikimrConfiguration& kqpConfig, const TTableServiceConf
kqpConfig.IdxLookupJoinsPrefixPointLimit = serviceConfig.GetIdxLookupJoinPointsLimit();
kqpConfig.EnableSpillingGenericQuery = serviceConfig.GetEnableQueryServiceSpilling();
kqpConfig.DefaultCostBasedOptimizationLevel = serviceConfig.GetDefaultCostBasedOptimizationLevel();
kqpConfig.EnableConstantFolding = serviceConfig.GetEnableConstantFolding();

if (const auto limit = serviceConfig.GetResourceManager().GetMkqlHeavyProgramMemoryLimit()) {
kqpConfig._KqpYqlCombinerMemoryLimit = std::max(1_GB, limit - (limit >> 2U));
Expand Down
4 changes: 3 additions & 1 deletion ydb/core/kqp/compile_service/kqp_compile_service.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -527,6 +527,7 @@ class TKqpCompileService : public TActorBootstrapped<TKqpCompileService> {

bool enableQueryServiceSpilling = TableServiceConfig.GetEnableQueryServiceSpilling();
ui64 defaultCostBasedOptimizationLevel = TableServiceConfig.GetDefaultCostBasedOptimizationLevel();
bool enableConstantFolding = TableServiceConfig.GetEnableConstantFolding();

TableServiceConfig.Swap(event.MutableConfig()->MutableTableServiceConfig());
LOG_INFO(*TlsActivationContext, NKikimrServices::KQP_COMPILE_SERVICE, "Updated config");
Expand All @@ -551,7 +552,8 @@ class TKqpCompileService : public TActorBootstrapped<TKqpCompileService> {
TableServiceConfig.GetResourceManager().GetMkqlHeavyProgramMemoryLimit() != mkqlHeavyLimit ||
TableServiceConfig.GetIdxLookupJoinPointsLimit() != idxLookupPointsLimit ||
TableServiceConfig.GetEnableQueryServiceSpilling() != enableQueryServiceSpilling ||
TableServiceConfig.GetDefaultCostBasedOptimizationLevel() != defaultCostBasedOptimizationLevel) {
TableServiceConfig.GetDefaultCostBasedOptimizationLevel() != defaultCostBasedOptimizationLevel ||
TableServiceConfig.GetEnableConstantFolding() != enableConstantFolding) {

QueryCache.Clear();

Expand Down
4 changes: 2 additions & 2 deletions ydb/core/kqp/opt/kqp_constant_folding_transformer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ namespace {
return;
}

if (IsConstantExpr(input)) {
if (IsConstantExpr(input) && !input->IsCallable("PgConst")) {
TNodeOnNodeOwnedMap deepClones;
auto inputClone = ctx.DeepCopy(*input, ctx, deepClones, false, true, true);

Expand Down Expand Up @@ -60,7 +60,7 @@ IGraphTransformer::TStatus TKqpConstantFoldingTransformer::DoTransform(TExprNode
TExprNode::TPtr& output, TExprContext& ctx) {
output = input;

if (!Config->HasOptEnableConstantFolding()) {
if (!Config->EnableConstantFolding) {
return IGraphTransformer::TStatus::Ok;
}

Expand Down
5 changes: 0 additions & 5 deletions ydb/core/kqp/provider/yql_kikimr_settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@ TKikimrConfiguration::TKikimrConfiguration() {

REGISTER_SETTING(*this, OptUseFinalizeByKey);
REGISTER_SETTING(*this, CostBasedOptimizationLevel);
REGISTER_SETTING(*this, OptEnableConstantFolding);

REGISTER_SETTING(*this, MaxDPccpDPTableSize);

Expand Down Expand Up @@ -126,10 +125,6 @@ bool TKikimrSettings::HasOptUseFinalizeByKey() const {
return GetOptionalFlagValue(OptUseFinalizeByKey.Get()) != EOptionalFlag::Disabled;
}

bool TKikimrSettings::HasOptEnableConstantFolding() const {
return GetOptionalFlagValue(OptEnableConstantFolding.Get()) == EOptionalFlag::Enabled;
}


EOptionalFlag TKikimrSettings::GetOptPredicateExtract() const {
return GetOptionalFlagValue(OptEnablePredicateExtract.Get());
Expand Down
4 changes: 1 addition & 3 deletions ydb/core/kqp/provider/yql_kikimr_settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ struct TKikimrSettings {
NCommon::TConfSetting<bool, false> OptEnableOlapProvideComputeSharding;
NCommon::TConfSetting<bool, false> OptUseFinalizeByKey;
NCommon::TConfSetting<ui32, false> CostBasedOptimizationLevel;
NCommon::TConfSetting<bool, false> OptEnableConstantFolding;

NCommon::TConfSetting<ui32, false> MaxDPccpDPTableSize;

Expand All @@ -83,8 +82,6 @@ struct TKikimrSettings {
bool HasOptEnableOlapPushdown() const;
bool HasOptEnableOlapProvideComputeSharding() const;
bool HasOptUseFinalizeByKey() const;
bool HasOptEnableConstantFolding() const;


EOptionalFlag GetOptPredicateExtract() const;
EOptionalFlag GetUseLlvm() const;
Expand Down Expand Up @@ -167,6 +164,7 @@ struct TKikimrConfiguration : public TKikimrSettings, public NCommon::TSettingDi
NKikimrConfig::TTableServiceConfig_EBlockChannelsMode BlockChannelsMode;
bool EnableSpillingGenericQuery = false;
ui32 DefaultCostBasedOptimizationLevel = 3;
bool EnableConstantFolding = true;
};

}
5 changes: 1 addition & 4 deletions ydb/core/kqp/ut/join/kqp_join_order_ut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,6 @@ static TKikimrRunner GetKikimrWithJoinSettings(bool useStreamLookupJoin = false,

NKikimrKqp::TKqpSetting setting;

setting.SetName("OptEnableConstantFolding");
setting.SetValue("true");
settings.push_back(setting);

if (stats != "") {
setting.SetName("OverrideStatistics");
setting.SetValue(stats);
Expand All @@ -67,6 +63,7 @@ static TKikimrRunner GetKikimrWithJoinSettings(bool useStreamLookupJoin = false,

NKikimrConfig::TAppConfig appConfig;
appConfig.MutableTableServiceConfig()->SetEnableKqpDataQueryStreamIdxLookupJoin(useStreamLookupJoin);
appConfig.MutableTableServiceConfig()->SetEnableConstantFolding(true);
appConfig.MutableTableServiceConfig()->SetCompileTimeoutMs(TDuration::Minutes(10).MilliSeconds());

auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
Expand Down
1 change: 0 additions & 1 deletion ydb/core/kqp/ut/olap/kqp_olap_ut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1085,7 +1085,6 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
R"(`level` != NULL)",
R"(`level` > NULL)",
R"(`timestamp` >= CAST(3000001U AS Timestamp))",
R"(`level` >= CAST("2" As Uint32))",
R"(`level` = NULL)",
R"(`level` > NULL)",
R"(Re2::Match('uid.*')(`uid`))",
Expand Down
2 changes: 1 addition & 1 deletion ydb/core/kqp/ut/query/kqp_explain_ut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ Y_UNIT_TEST_SUITE(KqpExplain) {

auto& rangeRead = operators[lookupMember].GetMapSafe();
UNIT_ASSERT(rangeRead.at("Name") == "TableRangeScan");
UNIT_ASSERT_VALUES_EQUAL(rangeRead.at("ReadRange").GetArraySafe()[0], "App («new_app_1»)");
UNIT_ASSERT_VALUES_EQUAL(rangeRead.at("ReadRange").GetArraySafe()[0], "App (new_app_1)");
}

Y_UNIT_TEST(SortStage) {
Expand Down
2 changes: 2 additions & 0 deletions ydb/core/protos/table_service_config.proto
Original file line number Diff line number Diff line change
Expand Up @@ -297,4 +297,6 @@ message TTableServiceConfig {

optional uint32 DefaultCostBasedOptimizationLevel = 64 [default = 3];

optional bool EnableConstantFolding = 65 [ default = true ];

};

0 comments on commit 88dc77f

Please sign in to comment.