Skip to content

Commit

Permalink
add enable implicit params flag to table service config (#6286)
Browse files Browse the repository at this point in the history
  • Loading branch information
VPolka committed Jul 22, 2024
1 parent 56c68e1 commit 9f39ee9
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 16 deletions.
5 changes: 4 additions & 1 deletion ydb/core/kqp/compile_service/kqp_compile_service.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -528,6 +528,8 @@ class TKqpCompileService : public TActorBootstrapped<TKqpCompileService> {
bool enableCreateTableAs = TableServiceConfig.GetEnableCreateTableAs();
auto blockChannelsMode = TableServiceConfig.GetBlockChannelsMode();

bool enableImplicitQueryParameterTypes = TableServiceConfig.GetEnableImplicitQueryParameterTypes();

auto mkqlHeavyLimit = TableServiceConfig.GetResourceManager().GetMkqlHeavyProgramMemoryLimit();

bool enableQueryServiceSpilling = TableServiceConfig.GetEnableQueryServiceSpilling();
Expand Down Expand Up @@ -558,7 +560,8 @@ class TKqpCompileService : public TActorBootstrapped<TKqpCompileService> {
TableServiceConfig.GetExtractPredicateRangesLimit() != rangesLimit ||
TableServiceConfig.GetResourceManager().GetMkqlHeavyProgramMemoryLimit() != mkqlHeavyLimit ||
TableServiceConfig.GetIdxLookupJoinPointsLimit() != idxLookupPointsLimit ||
TableServiceConfig.GetEnableQueryServiceSpilling() != enableQueryServiceSpilling) {
TableServiceConfig.GetEnableQueryServiceSpilling() != enableQueryServiceSpilling ||
TableServiceConfig.GetEnableImplicitQueryParameterTypes() != enableImplicitQueryParameterTypes) {

QueryCache.Clear();

Expand Down
3 changes: 1 addition & 2 deletions ydb/core/kqp/session_actor/kqp_query_state.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,7 @@ class TKqpQueryState : public TNonCopyable {
, StartedAt(startedAt)
{
RequestEv.reset(ev->Release().Release());

if (AppData()->FeatureFlags.GetEnableImplicitQueryParameterTypes() && !RequestEv->GetYdbParameters().empty()) {
if (tableServiceConfig.GetEnableImplicitQueryParameterTypes() && !RequestEv->GetYdbParameters().empty()) {
QueryParameterTypes = std::make_shared<std::map<TString, Ydb::Type>>();
for (const auto& [name, typedValue] : RequestEv->GetYdbParameters()) {
QueryParameterTypes->insert({name, typedValue.Gettype()});
Expand Down
48 changes: 36 additions & 12 deletions ydb/core/kqp/ut/query/kqp_params_ut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,12 @@ Y_UNIT_TEST_SUITE(KqpParams) {
}

Y_UNIT_TEST(ImplicitParameterTypes) {
TKikimrRunner kikimr;
kikimr.GetTestServer().GetRuntime()->GetAppData(0).FeatureFlags.SetEnableImplicitQueryParameterTypes(true);
NKikimrConfig::TAppConfig appConfig;
appConfig.MutableTableServiceConfig()->SetEnableImplicitQueryParameterTypes(true);
auto serverSettings = TKikimrSettings()
.SetAppConfig(appConfig)
.SetKqpSettings({NKikimrKqp::TKqpSetting()});
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();

Expand All @@ -127,8 +131,12 @@ Y_UNIT_TEST_SUITE(KqpParams) {

Y_UNIT_TEST(CheckQueryCacheForPreparedQuery) {
// All params are declared in the text
TKikimrRunner kikimr;
kikimr.GetTestServer().GetRuntime()->GetAppData(0).FeatureFlags.SetEnableImplicitQueryParameterTypes(true);
NKikimrConfig::TAppConfig appConfig;
appConfig.MutableTableServiceConfig()->SetEnableImplicitQueryParameterTypes(true);
auto serverSettings = TKikimrSettings()
.SetAppConfig(appConfig)
.SetKqpSettings({NKikimrKqp::TKqpSetting()});
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();

Expand Down Expand Up @@ -164,8 +172,12 @@ Y_UNIT_TEST_SUITE(KqpParams) {

Y_UNIT_TEST(CheckQueryCacheForUnpreparedQuery) {
// Some params are declared in text, some by user
TKikimrRunner kikimr;
kikimr.GetTestServer().GetRuntime()->GetAppData(0).FeatureFlags.SetEnableImplicitQueryParameterTypes(true);
NKikimrConfig::TAppConfig appConfig;
appConfig.MutableTableServiceConfig()->SetEnableImplicitQueryParameterTypes(true);
auto serverSettings = TKikimrSettings()
.SetAppConfig(appConfig)
.SetKqpSettings({NKikimrKqp::TKqpSetting()});
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();

Expand Down Expand Up @@ -284,8 +296,12 @@ Y_UNIT_TEST_SUITE(KqpParams) {

Y_UNIT_TEST(CheckQueryCacheForExecuteAndPreparedQueries) {
// All params are declared in the text
TKikimrRunner kikimr;
kikimr.GetTestServer().GetRuntime()->GetAppData(0).FeatureFlags.SetEnableImplicitQueryParameterTypes(true);
NKikimrConfig::TAppConfig appConfig;
appConfig.MutableTableServiceConfig()->SetEnableImplicitQueryParameterTypes(true);
auto serverSettings = TKikimrSettings()
.SetAppConfig(appConfig)
.SetKqpSettings({NKikimrKqp::TKqpSetting()});
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();

Expand Down Expand Up @@ -493,8 +509,12 @@ Y_UNIT_TEST_SUITE(KqpParams) {
}

Y_UNIT_TEST(ImplicitSameParameterTypesQueryCacheCheck) {
TKikimrRunner kikimr;
kikimr.GetTestServer().GetRuntime()->GetAppData(0).FeatureFlags.SetEnableImplicitQueryParameterTypes(true);
NKikimrConfig::TAppConfig appConfig;
appConfig.MutableTableServiceConfig()->SetEnableImplicitQueryParameterTypes(true);
auto serverSettings = TKikimrSettings()
.SetAppConfig(appConfig)
.SetKqpSettings({NKikimrKqp::TKqpSetting()});
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();

Expand All @@ -519,8 +539,12 @@ Y_UNIT_TEST_SUITE(KqpParams) {
}

Y_UNIT_TEST(ImplicitDifferentParameterTypesQueryCacheCheck) {
TKikimrRunner kikimr;
kikimr.GetTestServer().GetRuntime()->GetAppData(0).FeatureFlags.SetEnableImplicitQueryParameterTypes(true);
NKikimrConfig::TAppConfig appConfig;
appConfig.MutableTableServiceConfig()->SetEnableImplicitQueryParameterTypes(true);
auto serverSettings = TKikimrSettings()
.SetAppConfig(appConfig)
.SetKqpSettings({NKikimrKqp::TKqpSetting()});
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();

Expand Down
2 changes: 1 addition & 1 deletion ydb/core/protos/feature_flags.proto
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ message TFeatureFlags {
optional bool EnableSeparationComputeActorsFromRead = 90 [default = false];
optional bool EnablePQConfigTransactionsAtSchemeShard = 91 [default = false];
optional bool EnableScriptExecutionOperations = 92 [default = true];
optional bool EnableImplicitQueryParameterTypes = 93 [default = false];
reserved 93; // optional bool EnableImplicitQueryParameterTypes = 93 [default = true];
optional bool EnableForceImmediateEffectsExecution = 94 [default = false];
optional bool EnableTopicSplitMerge = 95 [default = false];
optional bool EnableChangefeedDynamoDBStreamsFormat = 96 [default = true];
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 @@ -294,4 +294,6 @@ message TTableServiceConfig {
optional uint64 QueryReplayCacheUploadTTLSec = 62 [default = 36000];

optional bool EnableQueryServiceSpilling = 63 [ default = true ];

optional bool EnableImplicitQueryParameterTypes = 66 [ default = true ];
};

0 comments on commit 9f39ee9

Please sign in to comment.