Skip to content

Commit d911342

Browse files
ssmikeuzhastik
authored andcommitted
introduce snapshot_ro isolation level (#11085) (#11252)
1 parent dbaccba commit d911342

File tree

4 files changed

+5
-4
lines changed

4 files changed

+5
-4
lines changed

ydb/core/kqp/common/kqp_tx.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,8 @@ bool NeedSnapshot(const TKqpTransactionContext& txCtx, const NYql::TKikimrConfig
136136
{
137137
Y_UNUSED(config);
138138

139-
if (*txCtx.EffectiveIsolationLevel != NKikimrKqp::ISOLATION_LEVEL_SERIALIZABLE)
139+
if (*txCtx.EffectiveIsolationLevel != NKikimrKqp::ISOLATION_LEVEL_SERIALIZABLE &&
140+
*txCtx.EffectiveIsolationLevel != NKikimrKqp::ISOLATION_LEVEL_SNAPSHOT_RO)
140141
return false;
141142

142143
if (txCtx.GetSnapshot().IsValid())

ydb/core/kqp/common/kqp_tx.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,7 @@ class TKqpTransactionContext : public NYql::TKikimrTransactionContextBase {
212212
break;
213213

214214
case Ydb::Table::TransactionSettings::kSnapshotReadOnly:
215-
// TODO: (KIKIMR-3374) Use separate isolation mode to avoid optimistic locks.
216-
EffectiveIsolationLevel = NKikimrKqp::ISOLATION_LEVEL_SERIALIZABLE;
215+
EffectiveIsolationLevel = NKikimrKqp::ISOLATION_LEVEL_SNAPSHOT_RO;
217216
Readonly = true;
218217
break;
219218

ydb/core/kqp/executer_actor/kqp_planner.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,8 +187,8 @@ std::unique_ptr<TEvKqpNode::TEvStartKqpTasksRequest> TKqpPlanner::SerializeReque
187187
request.SetTxId(TxId);
188188
if (LockTxId) {
189189
request.SetLockTxId(*LockTxId);
190+
request.SetLockNodeId(LockNodeId);
190191
}
191-
request.SetLockNodeId(LockNodeId);
192192
ActorIdToProto(ExecuterId, request.MutableExecuterActorId());
193193

194194
if (Deadline) {

ydb/core/protos/kqp.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ enum EIsolationLevel {
6464
ISOLATION_LEVEL_READ_COMMITTED = 2;
6565
ISOLATION_LEVEL_READ_UNCOMMITTED = 3;
6666
ISOLATION_LEVEL_READ_STALE = 4;
67+
ISOLATION_LEVEL_SNAPSHOT_RO = 5;
6768
};
6869

6970
enum EQueryReplyFlags {

0 commit comments

Comments
 (0)