Skip to content

Commit 3a1c845

Browse files
authored
Don't replace EvWrite/ProposeTx in tests (#14898)
1 parent 4b7849e commit 3a1c845

File tree

6 files changed

+39
-156
lines changed

6 files changed

+39
-156
lines changed

ydb/core/kqp/runtime/kqp_write_actor.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1028,8 +1028,10 @@ class TKqpTableWriteActor : public TActorBootstrapped<TKqpTableWriteActor> {
10281028
switch (shardState) {
10291029
case IKqpTransactionManager::EXECUTING:
10301030
YQL_ENSURE(Mode == EMode::COMMIT || Mode == EMode::IMMEDIATE_COMMIT);
1031+
break;
10311032
case IKqpTransactionManager::PREPARED:
10321033
YQL_ENSURE(Mode == EMode::PREPARE);
1034+
break;
10331035
case IKqpTransactionManager::PREPARING:
10341036
case IKqpTransactionManager::FINISHED:
10351037
case IKqpTransactionManager::ERROR:

ydb/core/tx/datashard/datashard_ut_order.cpp

Lines changed: 7 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1354,6 +1354,7 @@ Y_UNIT_TEST_QUAD(TestOutOfOrderReadOnlyAllowed, StreamLookup, EvWrite) {
13541354
TPortManager pm;
13551355
NKikimrConfig::TAppConfig app;
13561356
app.MutableTableServiceConfig()->SetEnableKqpDataQueryStreamLookup(StreamLookup);
1357+
app.MutableTableServiceConfig()->SetEnableOltpSink(EvWrite);
13571358
TServerSettings serverSettings(pm.GetPort(2134));
13581359
serverSettings.SetDomainName("Root")
13591360
.SetUseRealThreads(false)
@@ -1374,9 +1375,6 @@ Y_UNIT_TEST_QUAD(TestOutOfOrderReadOnlyAllowed, StreamLookup, EvWrite) {
13741375
auto [shards2, tableId2] = CreateShardedTable(server, sender, "/Root", "table-2", 1);
13751376

13761377
{
1377-
auto rows = EvWrite ? TEvWriteRows{{tableId1, {1, 1}}, {tableId2, {2, 1}}} : TEvWriteRows{};
1378-
auto evWriteObservers = ReplaceEvProposeTransactionWithEvWrite(runtime, rows);
1379-
13801378
ExecSQL(server, sender, Q_("UPSERT INTO `/Root/table-1` (key, value) VALUES (1, 1);"));
13811379
ExecSQL(server, sender, Q_("UPSERT INTO `/Root/table-2` (key, value) VALUES (2, 1);"));
13821380
}
@@ -1407,16 +1405,11 @@ Y_UNIT_TEST_QUAD(TestOutOfOrderReadOnlyAllowed, StreamLookup, EvWrite) {
14071405
};
14081406
auto prevObserverFunc = runtime.SetObserverFunc(captureRS);
14091407

1410-
auto rows = EvWrite ? TEvWriteRows{{tableId1, {3, 2}}, {tableId2, {4, 2}}} : TEvWriteRows{};
1411-
auto evWriteObservers = ReplaceEvProposeTransactionWithEvWrite(runtime, rows);
1412-
14131408
// Send a commit request, it would block on readset exchange
14141409
auto f2 = SendRequest(runtime, MakeSimpleRequestRPC(Q_(R"(
14151410
UPSERT INTO `/Root/table-1` (key, value) VALUES (3, 2);
14161411
UPSERT INTO `/Root/table-2` (key, value) VALUES (4, 2))"), sessionId, txId, true));
14171412

1418-
evWriteObservers = TTestActorRuntimeBase::TEventObserverHolderPair{};
1419-
14201413
// Wait until we captured both readsets
14211414
const size_t expectedReadSets = usesVolatileTxs ? 4 : 2;
14221415
{
@@ -1467,6 +1460,7 @@ Y_UNIT_TEST_QUAD(TestOutOfOrderNonConflictingWrites, StreamLookup, EvWrite) {
14671460
TPortManager pm;
14681461
NKikimrConfig::TAppConfig app;
14691462
app.MutableTableServiceConfig()->SetEnableKqpDataQueryStreamLookup(StreamLookup);
1463+
app.MutableTableServiceConfig()->SetEnableOltpSink(EvWrite);
14701464
TServerSettings serverSettings(pm.GetPort(2134));
14711465
serverSettings.SetDomainName("Root")
14721466
.SetAppConfig(app)
@@ -1487,9 +1481,6 @@ Y_UNIT_TEST_QUAD(TestOutOfOrderNonConflictingWrites, StreamLookup, EvWrite) {
14871481
auto [shards2, tableId2] = CreateShardedTable(server, sender, "/Root", "table-2", 1);
14881482

14891483
{
1490-
auto rows = EvWrite ? TEvWriteRows{{tableId1, {1, 1}}, {tableId2, {2, 1}}} : TEvWriteRows{};
1491-
auto evWriteObservers = ReplaceEvProposeTransactionWithEvWrite(runtime, rows);
1492-
14931484
ExecSQL(server, sender, Q_("UPSERT INTO `/Root/table-1` (key, value) VALUES (1, 1);"));
14941485
ExecSQL(server, sender, Q_("UPSERT INTO `/Root/table-2` (key, value) VALUES (2, 1);"));
14951486
}
@@ -1521,16 +1512,11 @@ Y_UNIT_TEST_QUAD(TestOutOfOrderNonConflictingWrites, StreamLookup, EvWrite) {
15211512
};
15221513
auto prevObserverFunc = runtime.SetObserverFunc(captureRS);
15231514

1524-
auto rows = EvWrite ? TEvWriteRows{{tableId1, {3, 2}}, {tableId2, {4, 2}}} : TEvWriteRows{};
1525-
auto evWriteObservers = ReplaceEvProposeTransactionWithEvWrite(runtime, rows);
1526-
15271515
// Send a commit request, it would block on readset exchange
15281516
auto f2 = SendRequest(runtime, MakeSimpleRequestRPC(Q_(R"(
15291517
UPSERT INTO `/Root/table-1` (key, value) VALUES (3, 2);
15301518
UPSERT INTO `/Root/table-2` (key, value) VALUES (4, 2))"), sessionId, txId, true));
15311519

1532-
evWriteObservers = TTestActorRuntimeBase::TEventObserverHolderPair{};
1533-
15341520
// Wait until we captured both readsets
15351521
const size_t expectedReadSets = usesVolatileTxs ? 4 : 2;
15361522
if (readSets.size() < expectedReadSets) {
@@ -1545,9 +1531,6 @@ Y_UNIT_TEST_QUAD(TestOutOfOrderNonConflictingWrites, StreamLookup, EvWrite) {
15451531

15461532
// Now send non-conflicting upsert to both tables
15471533
{
1548-
auto rows1 = EvWrite ? TEvWriteRows{{tableId1, {5, 3}}, {tableId2, {6, 3}}} : TEvWriteRows{};
1549-
auto evWriteObservers1 = ReplaceEvProposeTransactionWithEvWrite(runtime, rows1);
1550-
15511534
blockReadSets = false; // needed for volatile transactions
15521535
auto result = KqpSimpleExec(runtime, Q_(R"(
15531536
UPSERT INTO `/Root/table-1` (key, value) VALUES (5, 3);
@@ -1558,9 +1541,6 @@ Y_UNIT_TEST_QUAD(TestOutOfOrderNonConflictingWrites, StreamLookup, EvWrite) {
15581541

15591542
// Check that immediate non-conflicting upsert is working too
15601543
{
1561-
auto rows1 = EvWrite ? TEvWriteRows{{tableId1, {7, 4}}} : TEvWriteRows{};
1562-
auto evWriteObservers1 = ReplaceEvProposeTransactionWithEvWrite(runtime, rows1);
1563-
15641544
auto result = KqpSimpleExec(runtime, Q_("UPSERT INTO `/Root/table-1` (key, value) VALUES (7, 4)"));
15651545
UNIT_ASSERT_VALUES_EQUAL(result, "<empty>");
15661546
}
@@ -2970,6 +2950,7 @@ Y_UNIT_TEST_QUAD(TestShardRestartPlannedCommitShouldSucceed, StreamLookup, EvWri
29702950
TPortManager pm;
29712951
NKikimrConfig::TAppConfig app;
29722952
app.MutableTableServiceConfig()->SetEnableKqpDataQueryStreamLookup(StreamLookup);
2953+
app.MutableTableServiceConfig()->SetEnableOltpSink(EvWrite);
29732954
TServerSettings serverSettings(pm.GetPort(2134));
29742955
serverSettings.SetDomainName("Root")
29752956
.SetUseRealThreads(false)
@@ -2990,9 +2971,6 @@ Y_UNIT_TEST_QUAD(TestShardRestartPlannedCommitShouldSucceed, StreamLookup, EvWri
29902971
auto [shards2, tableId2] = CreateShardedTable(server, sender, "/Root", "table-2", 1);
29912972

29922973
{
2993-
auto rows = EvWrite ? TEvWriteRows{{tableId1, {1, 1}}, {tableId2, {2, 1}}} : TEvWriteRows{};
2994-
auto evWriteObservers = ReplaceEvProposeTransactionWithEvWrite(runtime, rows);
2995-
29962974
Cerr << "===== UPSERT initial rows" << Endl;
29972975

29982976
ExecSQL(server, sender, Q_("UPSERT INTO `/Root/table-1` (key, value) VALUES (1, 1)"));
@@ -3042,9 +3020,6 @@ Y_UNIT_TEST_QUAD(TestShardRestartPlannedCommitShouldSucceed, StreamLookup, EvWri
30423020
};
30433021
auto prevObserverFunc = runtime.SetObserverFunc(captureRS);
30443022

3045-
auto rows = EvWrite ? TEvWriteRows{{tableId1, {3, 2}}, {tableId2, {4, 2}}} : TEvWriteRows{};
3046-
auto evWriteObservers = ReplaceEvProposeTransactionWithEvWrite(runtime, rows);
3047-
30483023
Cerr << "===== UPSERT and commit" << Endl;
30493024

30503025
// Send a commit request, it would block on readset exchange
@@ -3070,8 +3045,6 @@ Y_UNIT_TEST_QUAD(TestShardRestartPlannedCommitShouldSucceed, StreamLookup, EvWri
30703045
UNIT_ASSERT_VALUES_EQUAL(response.operation().status(), Ydb::StatusIds::SUCCESS);
30713046
}
30723047

3073-
evWriteObservers = TTestActorRuntimeBase::TEventObserverHolderPair{};
3074-
30753048
// Select key 3 and verify its value was updated
30763049
{
30773050
Cerr << "===== Last SELECT" << Endl;
@@ -3291,10 +3264,13 @@ Y_UNIT_TEST(TestShardSnapshotReadNoEarlyReply) {
32913264
}
32923265

32933266
Y_UNIT_TEST_TWIN(TestSnapshotReadAfterBrokenLock, EvWrite) {
3267+
NKikimrConfig::TAppConfig app;
3268+
app.MutableTableServiceConfig()->SetEnableOltpSink(EvWrite);
32943269
TPortManager pm;
32953270
TServerSettings serverSettings(pm.GetPort(2134));
32963271
serverSettings.SetDomainName("Root")
3297-
.SetUseRealThreads(false);
3272+
.SetUseRealThreads(false)
3273+
.SetAppConfig(app);
32983274

32993275
Tests::TServer::TPtr server = new TServer(serverSettings);
33003276
auto &runtime = *server->GetRuntime();
@@ -3305,9 +3281,6 @@ Y_UNIT_TEST_TWIN(TestSnapshotReadAfterBrokenLock, EvWrite) {
33053281
CreateShardedTable(server, sender, "/Root", "table-1", 1);
33063282
CreateShardedTable(server, sender, "/Root", "table-2", 1);
33073283

3308-
auto rows = EvWrite ? TEvWriteRows{{{1, 1}}, {{2, 2}}, {{3, 3}}, {{5, 5}}} : TEvWriteRows{};
3309-
auto evWriteObservers = ReplaceEvProposeTransactionWithEvWrite(runtime, rows);
3310-
33113284
ExecSQL(server, sender, Q_("UPSERT INTO `/Root/table-1` (key, value) VALUES (1, 1)"));
33123285
ExecSQL(server, sender, Q_("UPSERT INTO `/Root/table-2` (key, value) VALUES (2, 2)"));
33133286

ydb/core/tx/datashard/datashard_ut_read_iterator.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3705,7 +3705,16 @@ Y_UNIT_TEST_SUITE(DataShardReadIterator) {
37053705
// 2. tx2: upsert into range2 > range1 range and commit.
37063706
// 3. tx1: read range2 -> lock should be broken
37073707

3708-
TTestHelper helper;
3708+
NKikimrConfig::TAppConfig app;
3709+
app.MutableTableServiceConfig()->SetEnableOltpSink(EvWrite);
3710+
TPortManager pm;
3711+
TServerSettings serverSettings(pm.GetPort(2134));
3712+
serverSettings
3713+
.SetDomainName("Root")
3714+
.SetUseRealThreads(false)
3715+
.SetAppConfig(app);
3716+
3717+
TTestHelper helper(serverSettings);
37093718

37103719
auto readVersion = CreateVolatileSnapshot(
37113720
helper.Server,
@@ -3724,9 +3733,6 @@ Y_UNIT_TEST_SUITE(DataShardReadIterator) {
37243733
UNIT_ASSERT_VALUES_EQUAL(readResult1->Record.TxLocksSize(), 1);
37253734
UNIT_ASSERT_VALUES_EQUAL(readResult1->Record.BrokenTxLocksSize(), 0);
37263735

3727-
auto rows = EvWrite ? TEvWriteRows{{{300, 0, 0, 3000}}} : TEvWriteRows{};
3728-
auto evWriteObservers = ReplaceEvProposeTransactionWithEvWrite(*helper.Server->GetRuntime(), rows);
3729-
37303736
// write new data above snapshot
37313737
ExecSQL(helper.Server, helper.Sender, R"(
37323738
SELECT * FROM `/Root/table-1` WHERE key1 == 300;

ydb/core/tx/datashard/datashard_ut_write.cpp

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,20 @@ Y_UNIT_TEST_SUITE(DataShardWrite) {
4040
}
4141

4242
Y_UNIT_TEST_TWIN(ExecSQLUpsertImmediate, EvWrite) {
43-
auto [runtime, server, sender] = TestCreateServer();
43+
NKikimrConfig::TAppConfig app;
44+
app.MutableTableServiceConfig()->SetEnableOltpSink(EvWrite);
45+
TPortManager pm;
46+
TServerSettings serverSettings(pm.GetPort(2134));
47+
serverSettings
48+
.SetDomainName("Root")
49+
.SetUseRealThreads(false)
50+
.SetAppConfig(app);
51+
52+
auto [runtime, server, sender] = TestCreateServer(serverSettings);
4453

4554
TShardedTableOptions opts;
4655
auto [shards, tableId] = CreateShardedTable(server, sender, "/Root", "table-1", opts);
4756

48-
auto rows = EvWrite ? TEvWriteRows{{{0, 1}}, {{2, 3}}, {{4, 5}}} : TEvWriteRows{};
49-
auto evWriteObservers = ReplaceEvProposeTransactionWithEvWrite(runtime, rows);
50-
5157
Cout << "========= Send immediate write =========\n";
5258
{
5359
ExecSQL(server, sender, Q_("UPSERT INTO `/Root/table-1` (key, value) VALUES (0, 1);"));
@@ -63,17 +69,23 @@ Y_UNIT_TEST_SUITE(DataShardWrite) {
6369
}
6470

6571
Y_UNIT_TEST_QUAD(ExecSQLUpsertPrepared, EvWrite, Volatile) {
66-
auto [runtime, server, sender] = TestCreateServer();
72+
NKikimrConfig::TAppConfig app;
73+
app.MutableTableServiceConfig()->SetEnableOltpSink(EvWrite);
74+
TPortManager pm;
75+
TServerSettings serverSettings(pm.GetPort(2134));
76+
serverSettings
77+
.SetDomainName("Root")
78+
.SetUseRealThreads(false)
79+
.SetAppConfig(app);
80+
81+
auto [runtime, server, sender] = TestCreateServer(serverSettings);
6782

6883
runtime.GetAppData().FeatureFlags.SetEnableDataShardVolatileTransactions(Volatile);
6984

7085
TShardedTableOptions opts;
7186
auto [shards1, tableId1] = CreateShardedTable(server, sender, "/Root", "table-1", opts);
7287
auto [shards2, tableId2] = CreateShardedTable(server, sender, "/Root", "table-2", opts);
7388

74-
auto rows = EvWrite ? TEvWriteRows{{tableId1, {0, 1}}, {tableId2, {2, 3}}} : TEvWriteRows{};
75-
auto evWriteObservers = ReplaceEvProposeTransactionWithEvWrite(runtime, rows);
76-
7789
Cout << "========= Send distributed write =========\n";
7890
{
7991
ExecSQL(server, sender, Q_(

ydb/core/tx/datashard/ut_common/datashard_ut_common.cpp

Lines changed: 0 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -2257,114 +2257,6 @@ NKikimrDataEvents::TEvWriteResult Update(TTestActorRuntime& runtime, TActorId se
22572257
return Write(runtime, sender, shardId, std::move(request), expectedStatus);
22582258
}
22592259

2260-
TTestActorRuntimeBase::TEventObserverHolderPair ReplaceEvProposeTransactionWithEvWrite(TTestActorRuntime& runtime, TEvWriteRows& rows) {
2261-
if (rows.empty())
2262-
return {};
2263-
2264-
auto requestObserver = runtime.AddObserver([&rows](TAutoPtr<IEventHandle>& event) {
2265-
if (event->GetTypeRewrite() != TEvDataShard::EvProposeTransaction)
2266-
return;
2267-
2268-
const auto& record = event->Get<TEvDataShard::TEvProposeTransaction>()->Record;
2269-
2270-
if (record.GetTxKind() != NKikimrTxDataShard::TX_KIND_DATA)
2271-
return;
2272-
2273-
// Parse original TEvProposeTransaction
2274-
const ui64 txId = record.GetTxId();
2275-
const TString& txBody = record.GetTxBody();
2276-
NKikimrTxDataShard::TDataTransaction tx;
2277-
Y_VERIFY(tx.ParseFromArray(txBody.data(), txBody.size()));
2278-
2279-
// Construct new EvWrite
2280-
TVector<TCell> cells;
2281-
TTableId tableId;
2282-
ui16 colCount = 0;
2283-
for (const auto& task : tx.GetKqpTransaction().GetTasks()) {
2284-
NKikimrTxDataShard::TKqpTransaction::TDataTaskMeta meta;
2285-
Y_VERIFY(task.GetMeta().UnpackTo(&meta));
2286-
if (!meta.HasWrites())
2287-
continue;
2288-
2289-
const auto& tableMeta = meta.GetTable();
2290-
TTableId tableIdProto(tableMeta.GetTableId().GetOwnerId(), tableMeta.GetTableId().GetTableId(), tableMeta.GetSchemaVersion());
2291-
Y_VERIFY_S(tableId == TTableId{} || tableId == tableIdProto, "Only writes to one table is supported now");
2292-
tableId = tableIdProto;
2293-
const auto& writes = meta.GetWrites();
2294-
Y_VERIFY_S(colCount == 0 || colCount == writes.GetColumns().size(), "Only equal column count is supported now.");
2295-
colCount = writes.GetColumns().size();
2296-
2297-
const auto& row = rows.ProcessRow(tableId, txId);
2298-
Y_VERIFY(row.Cells.size() == colCount);
2299-
std::copy(row.Cells.begin(), row.Cells.end(), std::back_inserter(cells));
2300-
}
2301-
2302-
Cerr << "TEvProposeTransaction " << txId << " is observed and will be replaced with EvWrite: " << record.ShortDebugString() << Endl;
2303-
2304-
auto txMode = NKikimr::NDataShard::NEvWrite::TConvertor::GetTxMode(record.GetFlags());
2305-
2306-
auto evWrite = std::make_unique<NKikimr::NEvents::TDataEvents::TEvWrite>(txId, txMode);
2307-
2308-
if (!cells.empty()) {
2309-
TSerializedCellMatrix matrix(cells, cells.size() / colCount, colCount);
2310-
TString blobData = matrix.ReleaseBuffer();
2311-
2312-
UNIT_ASSERT(blobData.size() < 8_MB);
2313-
2314-
std::vector<ui32> columnIds(colCount);
2315-
std::iota(columnIds.begin(), columnIds.end(), 1);
2316-
2317-
ui64 payloadIndex = NKikimr::NEvWrite::TPayloadWriter<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(std::move(blobData));
2318-
evWrite->AddOperation(NKikimrDataEvents::TEvWrite::TOperation::OPERATION_UPSERT, tableId, columnIds, payloadIndex, NKikimrDataEvents::FORMAT_CELLVEC);
2319-
}
2320-
2321-
// Copy locks
2322-
if (tx.HasLockTxId())
2323-
evWrite->Record.SetLockTxId(tx.GetLockTxId());
2324-
if (tx.HasLockNodeId())
2325-
evWrite->Record.SetLockNodeId(tx.GetLockNodeId());
2326-
if (tx.GetKqpTransaction().HasLocks())
2327-
evWrite->Record.MutableLocks()->CopyFrom(tx.GetKqpTransaction().GetLocks());
2328-
2329-
if (record.HasMvccSnapshot()) {
2330-
*evWrite->Record.MutableMvccSnapshot() = record.GetMvccSnapshot();
2331-
}
2332-
2333-
// Replace event
2334-
auto handle = new IEventHandle(event->Recipient, event->Sender, evWrite.release(), 0, event->Cookie);
2335-
handle->Rewrite(handle->GetTypeRewrite(), event->GetRecipientRewrite());
2336-
event.Reset(handle);
2337-
});
2338-
2339-
auto responseObserver = runtime.AddObserver([](TAutoPtr<IEventHandle>& event) {
2340-
if (event->GetTypeRewrite() != NEvents::TDataEvents::EvWriteResult)
2341-
return;
2342-
2343-
const auto& record = event->Get<NEvents::TDataEvents::TEvWriteResult>()->Record;
2344-
ui64 txId = record.GetTxId();
2345-
2346-
Cerr << "EvWriteResult " << txId << " is observed and will be replaced with EvProposeTransactionResult: " << record.ShortDebugString() << Endl;
2347-
2348-
// Construct new EvProposeTransactionResult
2349-
ui64 origin = record.GetOrigin();
2350-
auto status = NKikimr::NDataShard::NEvWrite::TConvertor::GetStatus(record.GetStatus());
2351-
2352-
auto evResult = std::make_unique<TEvDataShard::TEvProposeTransactionResult>(NKikimrTxDataShard::TX_KIND_DATA, origin, txId, status);
2353-
2354-
if (status == NKikimrTxDataShard::TEvProposeTransactionResult::PREPARED) {
2355-
evResult->SetPrepared(record.GetMinStep(), record.GetMaxStep(), {});
2356-
evResult->Record.MutableDomainCoordinators()->CopyFrom(record.GetDomainCoordinators());
2357-
}
2358-
2359-
// Replace event
2360-
auto handle = new IEventHandle(event->Recipient, event->Sender, evResult.release(), 0, event->Cookie);
2361-
handle->Rewrite(handle->GetTypeRewrite(), event->GetRecipientRewrite());
2362-
event.Reset(handle);
2363-
});
2364-
2365-
return {std::move(requestObserver), std::move(responseObserver)};
2366-
}
2367-
23682260
NKikimrDataEvents::TEvWriteResult WaitForWriteCompleted(TTestActorRuntime& runtime, TActorId sender, NKikimrDataEvents::TEvWriteResult::EStatus expectedStatus)
23692261
{
23702262
auto ev = runtime.GrabEdgeEventRethrow<NEvents::TDataEvents::TEvWriteResult>(sender);

ydb/core/tx/datashard/ut_common/datashard_ut_common.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -836,8 +836,6 @@ class TEvWriteRows : public std::vector<TEvWriteRow> {
836836
}
837837
};
838838

839-
TTestActorRuntimeBase::TEventObserverHolderPair ReplaceEvProposeTransactionWithEvWrite(TTestActorRuntime& runtime, TEvWriteRows& rows);
840-
841839
void UploadRows(TTestActorRuntime& runtime, const TString& tablePath, const TVector<std::pair<TString, Ydb::Type_PrimitiveTypeId>>& types, const TVector<TCell>& keys, const TVector<TCell>& values);
842840

843841
struct TSendProposeToCoordinatorOptions {

0 commit comments

Comments
 (0)