Skip to content

Commit 06b43aa

Browse files
authored
add enable implicit params flag to table service config (#6943)
1 parent ee07055 commit 06b43aa

File tree

5 files changed

+44
-16
lines changed

5 files changed

+44
-16
lines changed

ydb/core/kqp/compile_service/kqp_compile_service.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,8 @@ class TKqpCompileService : public TActorBootstrapped<TKqpCompileService> {
528528
bool enableCreateTableAs = TableServiceConfig.GetEnableCreateTableAs();
529529
auto blockChannelsMode = TableServiceConfig.GetBlockChannelsMode();
530530

531+
bool enableImplicitQueryParameterTypes = TableServiceConfig.GetEnableImplicitQueryParameterTypes();
532+
531533
auto mkqlHeavyLimit = TableServiceConfig.GetResourceManager().GetMkqlHeavyProgramMemoryLimit();
532534

533535
bool enableQueryServiceSpilling = TableServiceConfig.GetEnableQueryServiceSpilling();
@@ -558,7 +560,8 @@ class TKqpCompileService : public TActorBootstrapped<TKqpCompileService> {
558560
TableServiceConfig.GetExtractPredicateRangesLimit() != rangesLimit ||
559561
TableServiceConfig.GetResourceManager().GetMkqlHeavyProgramMemoryLimit() != mkqlHeavyLimit ||
560562
TableServiceConfig.GetIdxLookupJoinPointsLimit() != idxLookupPointsLimit ||
561-
TableServiceConfig.GetEnableQueryServiceSpilling() != enableQueryServiceSpilling) {
563+
TableServiceConfig.GetEnableQueryServiceSpilling() != enableQueryServiceSpilling ||
564+
TableServiceConfig.GetEnableImplicitQueryParameterTypes() != enableImplicitQueryParameterTypes) {
562565

563566
QueryCache.Clear();
564567

ydb/core/kqp/session_actor/kqp_query_state.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,7 @@ class TKqpQueryState : public TNonCopyable {
6767
, StartedAt(startedAt)
6868
{
6969
RequestEv.reset(ev->Release().Release());
70-
71-
if (AppData()->FeatureFlags.GetEnableImplicitQueryParameterTypes() && !RequestEv->GetYdbParameters().empty()) {
70+
if (tableServiceConfig.GetEnableImplicitQueryParameterTypes() && !RequestEv->GetYdbParameters().empty()) {
7271
QueryParameterTypes = std::make_shared<std::map<TString, Ydb::Type>>();
7372
for (const auto& [name, typedValue] : RequestEv->GetYdbParameters()) {
7473
QueryParameterTypes->insert({name, typedValue.Gettype()});

ydb/core/kqp/ut/query/kqp_params_ut.cpp

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,12 @@ Y_UNIT_TEST_SUITE(KqpParams) {
103103
}
104104

105105
Y_UNIT_TEST(ImplicitParameterTypes) {
106-
TKikimrRunner kikimr;
107-
kikimr.GetTestServer().GetRuntime()->GetAppData(0).FeatureFlags.SetEnableImplicitQueryParameterTypes(true);
106+
NKikimrConfig::TAppConfig appConfig;
107+
appConfig.MutableTableServiceConfig()->SetEnableImplicitQueryParameterTypes(true);
108+
auto serverSettings = TKikimrSettings()
109+
.SetAppConfig(appConfig)
110+
.SetKqpSettings({NKikimrKqp::TKqpSetting()});
111+
TKikimrRunner kikimr(serverSettings);
108112
auto db = kikimr.GetTableClient();
109113
auto session = db.CreateSession().GetValueSync().GetSession();
110114

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

128132
Y_UNIT_TEST(CheckQueryCacheForPreparedQuery) {
129133
// All params are declared in the text
130-
TKikimrRunner kikimr;
131-
kikimr.GetTestServer().GetRuntime()->GetAppData(0).FeatureFlags.SetEnableImplicitQueryParameterTypes(true);
134+
NKikimrConfig::TAppConfig appConfig;
135+
appConfig.MutableTableServiceConfig()->SetEnableImplicitQueryParameterTypes(true);
136+
auto serverSettings = TKikimrSettings()
137+
.SetAppConfig(appConfig)
138+
.SetKqpSettings({NKikimrKqp::TKqpSetting()});
139+
TKikimrRunner kikimr(serverSettings);
132140
auto db = kikimr.GetTableClient();
133141
auto session = db.CreateSession().GetValueSync().GetSession();
134142

@@ -164,8 +172,12 @@ Y_UNIT_TEST_SUITE(KqpParams) {
164172

165173
Y_UNIT_TEST(CheckQueryCacheForUnpreparedQuery) {
166174
// Some params are declared in text, some by user
167-
TKikimrRunner kikimr;
168-
kikimr.GetTestServer().GetRuntime()->GetAppData(0).FeatureFlags.SetEnableImplicitQueryParameterTypes(true);
175+
NKikimrConfig::TAppConfig appConfig;
176+
appConfig.MutableTableServiceConfig()->SetEnableImplicitQueryParameterTypes(true);
177+
auto serverSettings = TKikimrSettings()
178+
.SetAppConfig(appConfig)
179+
.SetKqpSettings({NKikimrKqp::TKqpSetting()});
180+
TKikimrRunner kikimr(serverSettings);
169181
auto db = kikimr.GetTableClient();
170182
auto session = db.CreateSession().GetValueSync().GetSession();
171183

@@ -284,8 +296,12 @@ Y_UNIT_TEST_SUITE(KqpParams) {
284296

285297
Y_UNIT_TEST(CheckQueryCacheForExecuteAndPreparedQueries) {
286298
// All params are declared in the text
287-
TKikimrRunner kikimr;
288-
kikimr.GetTestServer().GetRuntime()->GetAppData(0).FeatureFlags.SetEnableImplicitQueryParameterTypes(true);
299+
NKikimrConfig::TAppConfig appConfig;
300+
appConfig.MutableTableServiceConfig()->SetEnableImplicitQueryParameterTypes(true);
301+
auto serverSettings = TKikimrSettings()
302+
.SetAppConfig(appConfig)
303+
.SetKqpSettings({NKikimrKqp::TKqpSetting()});
304+
TKikimrRunner kikimr(serverSettings);
289305
auto db = kikimr.GetTableClient();
290306
auto session = db.CreateSession().GetValueSync().GetSession();
291307

@@ -493,8 +509,12 @@ Y_UNIT_TEST_SUITE(KqpParams) {
493509
}
494510

495511
Y_UNIT_TEST(ImplicitSameParameterTypesQueryCacheCheck) {
496-
TKikimrRunner kikimr;
497-
kikimr.GetTestServer().GetRuntime()->GetAppData(0).FeatureFlags.SetEnableImplicitQueryParameterTypes(true);
512+
NKikimrConfig::TAppConfig appConfig;
513+
appConfig.MutableTableServiceConfig()->SetEnableImplicitQueryParameterTypes(true);
514+
auto serverSettings = TKikimrSettings()
515+
.SetAppConfig(appConfig)
516+
.SetKqpSettings({NKikimrKqp::TKqpSetting()});
517+
TKikimrRunner kikimr(serverSettings);
498518
auto db = kikimr.GetTableClient();
499519
auto session = db.CreateSession().GetValueSync().GetSession();
500520

@@ -519,8 +539,12 @@ Y_UNIT_TEST_SUITE(KqpParams) {
519539
}
520540

521541
Y_UNIT_TEST(ImplicitDifferentParameterTypesQueryCacheCheck) {
522-
TKikimrRunner kikimr;
523-
kikimr.GetTestServer().GetRuntime()->GetAppData(0).FeatureFlags.SetEnableImplicitQueryParameterTypes(true);
542+
NKikimrConfig::TAppConfig appConfig;
543+
appConfig.MutableTableServiceConfig()->SetEnableImplicitQueryParameterTypes(true);
544+
auto serverSettings = TKikimrSettings()
545+
.SetAppConfig(appConfig)
546+
.SetKqpSettings({NKikimrKqp::TKqpSetting()});
547+
TKikimrRunner kikimr(serverSettings);
524548
auto db = kikimr.GetTableClient();
525549
auto session = db.CreateSession().GetValueSync().GetSession();
526550

ydb/core/protos/feature_flags.proto

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ message TFeatureFlags {
105105
optional bool EnableSeparationComputeActorsFromRead = 90 [default = false];
106106
optional bool EnablePQConfigTransactionsAtSchemeShard = 91 [default = false];
107107
optional bool EnableScriptExecutionOperations = 92 [default = true];
108-
optional bool EnableImplicitQueryParameterTypes = 93 [default = false];
108+
reserved 93; // optional bool EnableImplicitQueryParameterTypes = 93 [default = false];
109109
optional bool EnableForceImmediateEffectsExecution = 94 [default = false];
110110
optional bool EnableTopicSplitMerge = 95 [default = false];
111111
optional bool EnableChangefeedDynamoDBStreamsFormat = 96 [default = true];

ydb/core/protos/table_service_config.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,4 +294,6 @@ message TTableServiceConfig {
294294
optional uint64 QueryReplayCacheUploadTTLSec = 62 [default = 36000];
295295

296296
optional bool EnableQueryServiceSpilling = 63 [ default = true ];
297+
298+
optional bool EnableImplicitQueryParameterTypes = 66 [ default = false ];
297299
};

0 commit comments

Comments
 (0)