From ed4ab064a079a738fa16e2c695ef4d6bb1a16032 Mon Sep 17 00:00:00 2001 From: Alexandr Gorshenin Date: Mon, 1 Dec 2025 16:45:37 +0000 Subject: [PATCH] Added support of SnapshotRW transaction level --- .../src/main/java/tech/ydb/common/transaction/TxMode.java | 1 + query/src/main/java/tech/ydb/query/impl/TxControl.java | 6 ++++++ table/src/main/java/tech/ydb/table/impl/TxControlToPb.java | 4 +++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/tech/ydb/common/transaction/TxMode.java b/common/src/main/java/tech/ydb/common/transaction/TxMode.java index 5e6307a29..455b4ae95 100644 --- a/common/src/main/java/tech/ydb/common/transaction/TxMode.java +++ b/common/src/main/java/tech/ydb/common/transaction/TxMode.java @@ -9,6 +9,7 @@ public enum TxMode { SERIALIZABLE_RW, SNAPSHOT_RO, + SNAPSHOT_RW, STALE_RO, ONLINE_RO, diff --git a/query/src/main/java/tech/ydb/query/impl/TxControl.java b/query/src/main/java/tech/ydb/query/impl/TxControl.java index e0174958f..9b58b2839 100644 --- a/query/src/main/java/tech/ydb/query/impl/TxControl.java +++ b/query/src/main/java/tech/ydb/query/impl/TxControl.java @@ -16,6 +16,10 @@ class TxControl { .setSnapshotReadOnly(YdbQuery.SnapshotModeSettings.getDefaultInstance()) .build(); + private static final YdbQuery.TransactionSettings TS_SNAPSHOT_RW = YdbQuery.TransactionSettings.newBuilder() + .setSnapshotReadWrite(YdbQuery.SnapshotRWModeSettings.getDefaultInstance()) + .build(); + private static final YdbQuery.TransactionSettings TS_STALE = YdbQuery.TransactionSettings.newBuilder() .setStaleReadOnly(YdbQuery.StaleModeSettings.getDefaultInstance()) .build(); @@ -55,6 +59,8 @@ public static YdbQuery.TransactionSettings txSettings(TxMode tx) { return TS_SERIALIZABLE; case SNAPSHOT_RO: return TS_SNAPSHOT; + case SNAPSHOT_RW: + return TS_SNAPSHOT_RW; case STALE_RO: return TS_STALE; case ONLINE_RO: diff --git a/table/src/main/java/tech/ydb/table/impl/TxControlToPb.java b/table/src/main/java/tech/ydb/table/impl/TxControlToPb.java index 517dbad06..da567f0c4 100644 --- a/table/src/main/java/tech/ydb/table/impl/TxControlToPb.java +++ b/table/src/main/java/tech/ydb/table/impl/TxControlToPb.java @@ -61,9 +61,11 @@ public static YdbTable.TransactionSettings txSettings(TxMode tx) { return TS_ONLINE; case ONLINE_INCONSISTENT_RO: return TS_ONLINE_INCONSISTENT; + case NONE: + case SNAPSHOT_RW: default: - return null; + throw new IllegalArgumentException("Tx mode " + tx + " is not supported in TableService"); } } }