aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorulya-sidorina <yulia@ydb.tech>2023-05-18 11:45:01 +0300
committerulya-sidorina <yulia@ydb.tech>2023-05-18 11:45:01 +0300
commit17685fd08f59368fa7cdda98ae40e66c425643e3 (patch)
tree1b645e654e3ae8dbdb9ba0d576227fc7f7265a0f
parent97ad50c6ad821532af89637a8b2ca8aaa61c1650 (diff)
downloadydb-17685fd08f59368fa7cdda98ae40e66c425643e3.tar.gz
move EnableKqpImmediateEffects flag to TTableServiceConfig
refactor(kqp): move EnableKqpImmediateEffects flag to TTableServiceConfig
-rw-r--r--ydb/core/kqp/compile_service/kqp_compile_actor.cpp1
-rw-r--r--ydb/core/kqp/provider/yql_kikimr_exec.cpp7
-rw-r--r--ydb/core/kqp/provider/yql_kikimr_provider.h24
-rw-r--r--ydb/core/kqp/provider/yql_kikimr_settings.h2
-rw-r--r--ydb/core/kqp/session_actor/kqp_query_state.h2
-rw-r--r--ydb/core/kqp/session_actor/kqp_session_actor.cpp10
-rw-r--r--ydb/core/kqp/session_actor/kqp_tx.cpp2
-rw-r--r--ydb/core/kqp/session_actor/kqp_tx.h11
-rw-r--r--ydb/core/kqp/ut/common/kqp_ut_common.cpp9
-rw-r--r--ydb/core/kqp/ut/effects/kqp_immediate_effects_ut.cpp200
-rw-r--r--ydb/core/kqp/ut/query/kqp_query_ut.cpp2
-rw-r--r--ydb/core/protos/config.proto4
-rw-r--r--ydb/core/testlib/basics/feature_flags.h1
-rw-r--r--ydb/core/tx/datashard/datashard_ut_volatile.cpp4
14 files changed, 159 insertions, 120 deletions
diff --git a/ydb/core/kqp/compile_service/kqp_compile_actor.cpp b/ydb/core/kqp/compile_service/kqp_compile_actor.cpp
index 6952bf9ea88..34757a637ec 100644
--- a/ydb/core/kqp/compile_service/kqp_compile_actor.cpp
+++ b/ydb/core/kqp/compile_service/kqp_compile_actor.cpp
@@ -368,6 +368,7 @@ void ApplyServiceConfig(TKikimrConfiguration& kqpConfig, const TTableServiceConf
kqpConfig.EnablePredicateExtractForDataQuery = serviceConfig.GetEnablePredicateExtractForDataQueries();
kqpConfig.EnablePredicateExtractForScanQuery = serviceConfig.GetEnablePredicateExtractForScanQueries();
kqpConfig.EnableSequentialHints = serviceConfig.GetEnableSequentialHints();
+ kqpConfig.EnableKqpImmediateEffects = serviceConfig.GetEnableKqpImmediateEffects();
}
IActor* CreateKqpCompileActor(const TActorId& owner, const TKqpSettings::TConstPtr& kqpSettings,
diff --git a/ydb/core/kqp/provider/yql_kikimr_exec.cpp b/ydb/core/kqp/provider/yql_kikimr_exec.cpp
index 684a6cd207d..6848f5098b2 100644
--- a/ydb/core/kqp/provider/yql_kikimr_exec.cpp
+++ b/ydb/core/kqp/provider/yql_kikimr_exec.cpp
@@ -1817,7 +1817,6 @@ private:
std::pair<bool, TIssues> ApplyTableOperations(const TString& cluster, const TVector<NKqpProto::TKqpTableOp>& tableOps)
{
- bool enableImmediateEffects = SessionCtx->Config().FeatureFlags.GetEnableKqpImmediateEffects();
auto queryType = SessionCtx->Query().Type;
TVector<NKqpProto::TKqpTableInfo> tableInfo;
@@ -1830,11 +1829,11 @@ private:
}
if (!SessionCtx->HasTx()) {
- TKikimrTransactionContextBase emptyCtx;
- return emptyCtx.ApplyTableOperations(tableOps, tableInfo, enableImmediateEffects, queryType);
+ TKikimrTransactionContextBase emptyCtx(SessionCtx->Config().EnableKqpImmediateEffects);
+ return emptyCtx.ApplyTableOperations(tableOps, tableInfo, queryType);
}
- return SessionCtx->Tx().ApplyTableOperations(tableOps, tableInfo, enableImmediateEffects, queryType);
+ return SessionCtx->Tx().ApplyTableOperations(tableOps, tableInfo, queryType);
}
bool ApplyDdlOperation(const TString& cluster, TPositionHandle pos, const TString& table,
diff --git a/ydb/core/kqp/provider/yql_kikimr_provider.h b/ydb/core/kqp/provider/yql_kikimr_provider.h
index 02d9ae3a69d..e45598a5c0b 100644
--- a/ydb/core/kqp/provider/yql_kikimr_provider.h
+++ b/ydb/core/kqp/provider/yql_kikimr_provider.h
@@ -240,13 +240,8 @@ bool AddDmlIssue(const TIssue& issue, TExprContext& ctx);
class TKikimrTransactionContextBase : public TThrRefBase {
public:
- THashMap<TString, TYdbOperations> TableOperations;
- bool HasUncommittedChangesRead = false;
- THashMap<TKikimrPathId, TString> TableByIdMap;
- TMaybe<NKikimrKqp::EIsolationLevel> EffectiveIsolationLevel;
- bool Readonly = false;
- bool Invalidated = false;
- bool Closed = false;
+ explicit TKikimrTransactionContextBase(bool enableImmediateEffects) : EnableImmediateEffects(enableImmediateEffects) {
+ }
bool HasStarted() const {
return EffectiveIsolationLevel.Defined();
@@ -282,7 +277,7 @@ public:
template<class IterableKqpTableOps, class IterableKqpTableInfos>
std::pair<bool, TIssues> ApplyTableOperations(const IterableKqpTableOps& operations,
- const IterableKqpTableInfos& tableInfos, bool enableImmediateEffects, EKikimrQueryType queryType)
+ const IterableKqpTableInfos& tableInfos, EKikimrQueryType queryType)
{
TIssues issues;
if (IsClosed()) {
@@ -366,7 +361,7 @@ public:
bool currentModify = currentOps & KikimrModifyOps();
if (currentModify) {
if (KikimrReadOps() & newOp) {
- if (!enableImmediateEffects) {
+ if (!EnableImmediateEffects) {
TString message = TStringBuilder() << "Data modifications previously made to table '" << table
<< "' in current transaction won't be seen by operation: '"
<< newOp << "'";
@@ -379,7 +374,7 @@ public:
}
if (info->GetHasIndexTables()) {
- if (!enableImmediateEffects) {
+ if (!EnableImmediateEffects) {
TString message = TStringBuilder()
<< "Multiple modification of table with secondary indexes is not supported yet";
issues.AddIssue(YqlIssue(pos, TIssuesIds::KIKIMR_BAD_OPERATION, message));
@@ -398,6 +393,15 @@ public:
virtual ~TKikimrTransactionContextBase() = default;
+public:
+ THashMap<TString, TYdbOperations> TableOperations;
+ bool HasUncommittedChangesRead = false;
+ const bool EnableImmediateEffects;
+ THashMap<TKikimrPathId, TString> TableByIdMap;
+ TMaybe<NKikimrKqp::EIsolationLevel> EffectiveIsolationLevel;
+ bool Readonly = false;
+ bool Invalidated = false;
+ bool Closed = false;
};
class TKikimrSessionContext : public TThrRefBase {
diff --git a/ydb/core/kqp/provider/yql_kikimr_settings.h b/ydb/core/kqp/provider/yql_kikimr_settings.h
index ae76d4c484c..1b9793a6933 100644
--- a/ydb/core/kqp/provider/yql_kikimr_settings.h
+++ b/ydb/core/kqp/provider/yql_kikimr_settings.h
@@ -137,7 +137,7 @@ struct TKikimrConfiguration : public TKikimrSettings, public NCommon::TSettingDi
bool EnableKqpScanQueryStreamIdxLookupJoin = false;
bool EnablePredicateExtractForScanQuery = true;
bool EnablePredicateExtractForDataQuery = false;
-
+ bool EnableKqpImmediateEffects = false;
bool EnableSequentialHints = false;
};
diff --git a/ydb/core/kqp/session_actor/kqp_query_state.h b/ydb/core/kqp/session_actor/kqp_query_state.h
index 139a536e266..5ab09057b0b 100644
--- a/ydb/core/kqp/session_actor/kqp_query_state.h
+++ b/ydb/core/kqp/session_actor/kqp_query_state.h
@@ -242,7 +242,7 @@ public:
}
if (TxCtx->HasUncommittedChangesRead) {
- YQL_ENSURE(AppData()->FeatureFlags.GetEnableKqpImmediateEffects());
+ YQL_ENSURE(TxCtx->EnableImmediateEffects);
if (tx && tx->GetHasEffects()) {
YQL_ENSURE(tx->ResultsSize() == 0);
diff --git a/ydb/core/kqp/session_actor/kqp_session_actor.cpp b/ydb/core/kqp/session_actor/kqp_session_actor.cpp
index 4b576ff2a38..1c99d959823 100644
--- a/ydb/core/kqp/session_actor/kqp_session_actor.cpp
+++ b/ydb/core/kqp/session_actor/kqp_session_actor.cpp
@@ -562,7 +562,8 @@ public:
void BeginTx(const Ydb::Table::TransactionSettings& settings) {
QueryState->TxId = UlidGen.Next();
- QueryState->TxCtx = MakeIntrusive<TKqpTransactionContext>(false, AppData()->FunctionRegistry, AppData()->TimeProvider, AppData()->RandomProvider);
+ QueryState->TxCtx = MakeIntrusive<TKqpTransactionContext>(false, AppData()->FunctionRegistry,
+ AppData()->TimeProvider, AppData()->RandomProvider, Config->EnableKqpImmediateEffects);
QueryState->QueryData = std::make_shared<TQueryData>(QueryState->TxCtx->TxAlloc);
QueryState->TxCtx->SetIsolationLevel(settings);
QueryState->TxCtx->OnBeginQuery();
@@ -609,7 +610,7 @@ public:
}
} else {
QueryState->TxCtx = MakeIntrusive<TKqpTransactionContext>(false, AppData()->FunctionRegistry,
- AppData()->TimeProvider, AppData()->RandomProvider);
+ AppData()->TimeProvider, AppData()->RandomProvider, Config->EnableKqpImmediateEffects);
QueryState->QueryData = std::make_shared<TQueryData>(QueryState->TxCtx->TxAlloc);
QueryState->TxCtx->EffectiveIsolationLevel = NKikimrKqp::ISOLATION_LEVEL_UNDEFINED;
}
@@ -624,9 +625,8 @@ public:
}
const NKqpProto::TKqpPhyQuery& phyQuery = QueryState->PreparedQuery->GetPhysicalQuery();
- bool enableImmediateEffects = Config->FeatureFlags.GetEnableKqpImmediateEffects();
auto [success, issues] = QueryState->TxCtx->ApplyTableOperations(phyQuery.GetTableOps(), phyQuery.GetTableInfos(),
- enableImmediateEffects, EKikimrQueryType::Dml);
+ EKikimrQueryType::Dml);
if (!success) {
YQL_ENSURE(!issues.Empty());
ReplyQueryError(GetYdbStatus(issues), "", MessageFromIssues(issues));
@@ -950,7 +950,7 @@ public:
request.AcquireLocksTxId = txCtx.Locks.GetLockTxId();
if (txCtx.HasUncommittedChangesRead) {
- YQL_ENSURE(Config->FeatureFlags.GetEnableKqpImmediateEffects());
+ YQL_ENSURE(txCtx.EnableImmediateEffects);
request.UseImmediateEffects = true;
}
}
diff --git a/ydb/core/kqp/session_actor/kqp_tx.cpp b/ydb/core/kqp/session_actor/kqp_tx.cpp
index deb3ec70903..034c65a0a37 100644
--- a/ydb/core/kqp/session_actor/kqp_tx.cpp
+++ b/ydb/core/kqp/session_actor/kqp_tx.cpp
@@ -157,7 +157,7 @@ bool NeedSnapshot(const TKqpTransactionContext& txCtx, const NYql::TKikimrConfig
}
if (txCtx.HasUncommittedChangesRead) {
- YQL_ENSURE(config.FeatureFlags.GetEnableKqpImmediateEffects());
+ YQL_ENSURE(txCtx.EnableImmediateEffects);
return true;
}
diff --git a/ydb/core/kqp/session_actor/kqp_tx.h b/ydb/core/kqp/session_actor/kqp_tx.h
index 179b8ed6b62..642f5c07b6d 100644
--- a/ydb/core/kqp/session_actor/kqp_tx.h
+++ b/ydb/core/kqp/session_actor/kqp_tx.h
@@ -123,8 +123,9 @@ private:
class TKqpTransactionContext : public NYql::TKikimrTransactionContextBase {
public:
explicit TKqpTransactionContext(bool implicit, const NMiniKQL::IFunctionRegistry* funcRegistry,
- TIntrusivePtr<ITimeProvider> timeProvider, TIntrusivePtr<IRandomProvider> randomProvider)
- : Implicit(implicit)
+ TIntrusivePtr<ITimeProvider> timeProvider, TIntrusivePtr<IRandomProvider> randomProvider, bool enableImmediateEffects)
+ : NYql::TKikimrTransactionContextBase(enableImmediateEffects)
+ , Implicit(implicit)
, ParamsState(MakeIntrusive<TParamsState>())
{
CreationTime = TInstant::Now();
@@ -223,7 +224,7 @@ public:
bool ShouldExecuteDeferredEffects() const {
if (HasUncommittedChangesRead) {
- YQL_ENSURE(AppData()->FeatureFlags.GetEnableKqpImmediateEffects());
+ YQL_ENSURE(EnableImmediateEffects);
return !DeferredEffects.Empty();
}
@@ -231,8 +232,8 @@ public:
}
bool CanDeferEffects() const {
- if (HasUncommittedChangesRead) {
- YQL_ENSURE(AppData()->FeatureFlags.GetEnableKqpImmediateEffects());
+ if (HasUncommittedChangesRead || AppData()->FeatureFlags.GetEnableForceImmediateEffectsExecution()) {
+ YQL_ENSURE(EnableImmediateEffects);
return false;
}
diff --git a/ydb/core/kqp/ut/common/kqp_ut_common.cpp b/ydb/core/kqp/ut/common/kqp_ut_common.cpp
index 4a439610231..9df8580af7b 100644
--- a/ydb/core/kqp/ut/common/kqp_ut_common.cpp
+++ b/ydb/core/kqp/ut/common/kqp_ut_common.cpp
@@ -104,15 +104,6 @@ TKikimrRunner::TKikimrRunner(const TKikimrSettings& settings) {
ServerSettings->SetFrFactory(&UdfFrFactory);
ServerSettings->SetEnableNotNullColumns(true);
ServerSettings->SetEnableMoveIndex(true);
-
- if (settings.FeatureFlags.GetEnableKqpImmediateEffects()) {
- Tests::TServerSettings::TControls controls;
- controls.MutableDataShardControls()->SetPrioritizedMvccSnapshotReads(1);
- controls.MutableDataShardControls()->SetUnprotectedMvccSnapshotReads(1);
- controls.MutableDataShardControls()->SetEnableLockedWrites(1);
-
- ServerSettings->SetControls(controls);
- }
if (settings.LogStream)
ServerSettings->SetLogBackend(new TStreamLogBackend(settings.LogStream));
diff --git a/ydb/core/kqp/ut/effects/kqp_immediate_effects_ut.cpp b/ydb/core/kqp/ut/effects/kqp_immediate_effects_ut.cpp
index c99e549d43e..bf66ee01bdb 100644
--- a/ydb/core/kqp/ut/effects/kqp_immediate_effects_ut.cpp
+++ b/ydb/core/kqp/ut/effects/kqp_immediate_effects_ut.cpp
@@ -57,8 +57,9 @@ namespace {
Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
Y_UNIT_TEST(Upsert) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -113,8 +114,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(UpsertDuplicates) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -146,8 +148,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(UpsertExistingKey) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -192,8 +195,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(Replace) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -248,8 +252,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(ReplaceDuplicates) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -281,8 +286,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(ReplaceExistingKey) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -327,8 +333,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(Insert) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -383,8 +390,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(InsertDuplicates) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -410,8 +418,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(InsertExistingKey) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -436,8 +445,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(UpdateOn) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -488,8 +498,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(Delete) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -536,8 +547,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(UpdateAfterUpsert) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -565,8 +577,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(DeleteAfterUpsert) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -603,8 +616,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(UpdateAfterInsert) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -632,8 +646,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(DeleteAfterInsert) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -671,8 +686,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(UpsertAfterInsert) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -696,8 +712,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(UpsertAfterInsertWithIndex) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -771,8 +788,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(DeleteOnAfterInsertWithIndex) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -832,8 +850,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(MultipleEffectsWithIndex) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -872,8 +891,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(InsertConflictTxAborted) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -912,8 +932,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(UpsertConflictInteractiveTxAborted) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session1 = db.CreateSession().GetValueSync().GetSession();
@@ -984,8 +1005,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(MultiShardUpsertAfterRead) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -1016,8 +1038,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(TxWithReadAtTheEnd) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -1059,8 +1082,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(InteractiveTxWithReadAtTheEnd) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -1121,8 +1145,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(TxWithWriteAtTheEnd) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -1163,8 +1188,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(InteractiveTxWithWriteAtTheEnd) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -1224,8 +1250,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(UnobservedUncommittedChangeConflict) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -1302,8 +1329,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(AlreadyBrokenImmediateEffects) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -1389,8 +1417,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(WriteThenReadWithCommit) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
@@ -1439,8 +1468,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(ConflictingKeyR1WR2) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session1 = db.CreateSession().GetValueSync().GetSession();
@@ -1496,8 +1526,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(ConflictingKeyR1RWR2) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session1 = db.CreateSession().GetValueSync().GetSession();
@@ -1557,8 +1588,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(ConflictingKeyR1WRR2) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session1 = db.CreateSession().GetValueSync().GetSession();
@@ -1618,8 +1650,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(ConflictingKeyW1RR2) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session1 = db.CreateSession().GetValueSync().GetSession();
@@ -1675,8 +1708,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(ConflictingKeyW1WR2) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session1 = db.CreateSession().GetValueSync().GetSession();
@@ -1730,8 +1764,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(ConflictingKeyW1RWR2) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session1 = db.CreateSession().GetValueSync().GetSession();
@@ -1786,8 +1821,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(ConflictingKeyW1WRR2) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session1 = db.CreateSession().GetValueSync().GetSession();
@@ -1842,8 +1878,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(ConflictingKeyRW1RR2) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session1 = db.CreateSession().GetValueSync().GetSession();
@@ -1903,8 +1940,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(ConflictingKeyRW1WR2) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session1 = db.CreateSession().GetValueSync().GetSession();
@@ -1959,8 +1997,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(ConflictingKeyRW1RWR2) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session1 = db.CreateSession().GetValueSync().GetSession();
@@ -2016,8 +2055,9 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
}
Y_UNIT_TEST(ConflictingKeyRW1WRR2) {
- auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(true);
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
+ auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
TKikimrRunner kikimr(serverSettings);
auto db = kikimr.GetTableClient();
auto session1 = db.CreateSession().GetValueSync().GetSession();
diff --git a/ydb/core/kqp/ut/query/kqp_query_ut.cpp b/ydb/core/kqp/ut/query/kqp_query_ut.cpp
index 39dcf24159f..16ee2974d1f 100644
--- a/ydb/core/kqp/ut/query/kqp_query_ut.cpp
+++ b/ydb/core/kqp/ut/query/kqp_query_ut.cpp
@@ -309,8 +309,8 @@ Y_UNIT_TEST_SUITE(KqpQuery) {
Y_UNIT_TEST_TWIN(QueryClientTimeout, EnableImmediateEffects) {
NKikimrConfig::TAppConfig app;
app.MutableTableServiceConfig()->SetEnableKqpDataQuerySourceRead(false);
+ app.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(EnableImmediateEffects);
auto serverSettings = TKikimrSettings()
- .SetEnableKqpImmediateEffects(EnableImmediateEffects)
.SetAppConfig(app);
TKikimrRunner kikimr(serverSettings);
diff --git a/ydb/core/protos/config.proto b/ydb/core/protos/config.proto
index 5cecf835a6d..16c93660415 100644
--- a/ydb/core/protos/config.proto
+++ b/ydb/core/protos/config.proto
@@ -788,7 +788,7 @@ message TFeatureFlags {
optional bool EnableChangefeedInitialScan = 77 [default = false];
reserved 78; // EnableKqpScanQuerySourceRead
optional bool EnableDynamicNodeAuthorization = 79 [default = false];
- optional bool EnableKqpImmediateEffects = 80 [default = false];
+ reserved 80; // EnableKqpImmediateEffect
optional bool EnableDataShardGenericReadSets = 81 [default = false];
// enable alter database operation to create subdomain's system tablets
// directly in subdomain's hive
@@ -804,6 +804,7 @@ message TFeatureFlags {
optional bool EnablePQConfigTransactionsAtSchemeShard = 91 [default = false];
optional bool EnableScriptExecutionOperations = 92 [default = false];
optional bool EnableImplicitQueryParameterTypes = 93 [default = true];
+ optional bool EnableForceImmediateEffectsExecution = 94 [default = false];
}
@@ -1284,6 +1285,7 @@ message TTableServiceConfig {
optional bool EnablePredicateExtractForScanQueries = 36 [default = true];
optional bool EnablePredicateExtractForDataQueries = 37 [default = true];
optional bool EnableSequentialHints = 38 [default = false];
+ optional bool EnableKqpImmediateEffects = 39 [default = false];
};
// Config describes immediate controls and allows
diff --git a/ydb/core/testlib/basics/feature_flags.h b/ydb/core/testlib/basics/feature_flags.h
index a13a33b802d..4eef0b5ea43 100644
--- a/ydb/core/testlib/basics/feature_flags.h
+++ b/ydb/core/testlib/basics/feature_flags.h
@@ -38,7 +38,6 @@ public:
FEATURE_FLAG_SETTER(EnableArrowFormatAtDatashard)
FEATURE_FLAG_SETTER(EnableGrpcAudit)
FEATURE_FLAG_SETTER(EnableChangefeedInitialScan)
- FEATURE_FLAG_SETTER(EnableKqpImmediateEffects)
FEATURE_FLAG_SETTER(EnableDataShardGenericReadSets)
FEATURE_FLAG_SETTER(EnableAlterDatabaseCreateHiveFirst)
FEATURE_FLAG_SETTER(EnableDataShardVolatileTransactions)
diff --git a/ydb/core/tx/datashard/datashard_ut_volatile.cpp b/ydb/core/tx/datashard/datashard_ut_volatile.cpp
index 8fac76fa665..36d60abbeab 100644
--- a/ydb/core/tx/datashard/datashard_ut_volatile.cpp
+++ b/ydb/core/tx/datashard/datashard_ut_volatile.cpp
@@ -1706,10 +1706,12 @@ Y_UNIT_TEST_SUITE(DataShardVolatile) {
Y_UNIT_TEST(DistributedWriteThenLateWriteReadCommit) {
TPortManager pm;
TServerSettings serverSettings(pm.GetPort(2134));
+ NKikimrConfig::TAppConfig appCfg;
+ appCfg.MutableTableServiceConfig()->SetEnableKqpImmediateEffects(true);
serverSettings.SetDomainName("Root")
.SetUseRealThreads(false)
.SetDomainPlanResolution(1000)
- .SetEnableKqpImmediateEffects(true)
+ .SetAppConfig(appCfg)
.SetEnableDataShardVolatileTransactions(true);
Tests::TServer::TPtr server = new TServer(serverSettings);