diff --git a/ydb/core/kqp/session_actor/kqp_query_state.cpp b/ydb/core/kqp/session_actor/kqp_query_state.cpp index b15ad8449b08..008d036808c3 100644 --- a/ydb/core/kqp/session_actor/kqp_query_state.cpp +++ b/ydb/core/kqp/session_actor/kqp_query_state.cpp @@ -16,26 +16,23 @@ using namespace NSchemeCache; TKqpQueryState::TQueryTxId::TQueryTxId(const TQueryTxId& other) { - YQL_ENSURE(!IsValueSet); + YQL_ENSURE(!Id); Id = other.Id; - IsValueSet = true; } TKqpQueryState::TQueryTxId& TKqpQueryState::TQueryTxId::operator=(const TQueryTxId& id) { - YQL_ENSURE(!IsValueSet); + YQL_ENSURE(!Id); Id = id.Id; - IsValueSet = true; return *this; } void TKqpQueryState::TQueryTxId::SetValue(const TTxId& id) { - YQL_ENSURE(!IsValueSet); + YQL_ENSURE(!Id); Id = id.Id; - IsValueSet = true; } TTxId TKqpQueryState::TQueryTxId::GetValue() { - return Id; + return Id ? *Id : TTxId(); } void TKqpQueryState::TQueryTxId::Reset() { diff --git a/ydb/core/kqp/session_actor/kqp_query_state.h b/ydb/core/kqp/session_actor/kqp_query_state.h index ec414385cb24..23ec65e7d2ef 100644 --- a/ydb/core/kqp/session_actor/kqp_query_state.h +++ b/ydb/core/kqp/session_actor/kqp_query_state.h @@ -45,8 +45,7 @@ class TKqpQueryState : public TNonCopyable { void Reset(); private: - TTxId Id; - bool IsValueSet = false; + TMaybe Id; }; TKqpQueryState(TEvKqp::TEvQueryRequest::TPtr& ev, ui64 queryId, const TString& database, const TMaybe& applicationName, @@ -148,7 +147,7 @@ class TKqpQueryState : public TNonCopyable { NYql::TIssues Issues; TVector Statements; - TMaybe ImpliedTxId = {}; // Implied tx + TMaybe ImplicitTxId = {}; // Implicit tx for all statements ui32 CurrentStatementId = 0; ui32 StatementResultIndex = 0; ui32 StatementResultSize = 0; diff --git a/ydb/core/kqp/session_actor/kqp_session_actor.cpp b/ydb/core/kqp/session_actor/kqp_session_actor.cpp index b30957f22038..f8db4f14ce88 100644 --- a/ydb/core/kqp/session_actor/kqp_session_actor.cpp +++ b/ydb/core/kqp/session_actor/kqp_session_actor.cpp @@ -543,7 +543,7 @@ class TKqpSessionActor : public TActorBootstrapped { Ydb::Table::TransactionSettings settings; settings.mutable_serializable_read_write(); BeginTx(settings); - QueryState->ImpliedTxId = QueryState->TxId; + QueryState->ImplicitTxId = QueryState->TxId; CompileStatement(); } @@ -724,8 +724,8 @@ class TKqpSessionActor : public TActorBootstrapped { Ydb::Table::TransactionControl GetImpliedTxControl() { Ydb::Table::TransactionControl control; control.set_commit_tx(QueryState->ProcessingLastStatement()); - if (QueryState->ImpliedTxId) { - control.set_tx_id(QueryState->ImpliedTxId->GetValue().GetHumanStr()); + if (QueryState->ImplicitTxId) { + control.set_tx_id(QueryState->ImplicitTxId->GetValue().GetHumanStr()); } else { control.mutable_begin_tx()->mutable_serializable_read_write(); } @@ -748,7 +748,8 @@ class TKqpSessionActor : public TActorBootstrapped { } QueryState->TxCtx = txCtx; QueryState->QueryData = std::make_shared(QueryState->TxCtx->TxAlloc); - if (QueryState->TxId.GetValue() != txId) { + if (hasTxControl) { + LOG_E("AAA"); QueryState->TxId.SetValue(txId); } break;