summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ydb/core/tx/schemeshard/schemeshard_build_index__progress.cpp5
-rw-r--r--ydb/core/tx/schemeshard/ut_helpers/helpers.cpp30
-rw-r--r--ydb/core/tx/schemeshard/ut_helpers/helpers.h5
-rw-r--r--ydb/core/tx/schemeshard/ut_index/ut_async_index.cpp22
-rw-r--r--ydb/core/tx/schemeshard/ut_index_build/ut_vector_index_build.cpp148
-rw-r--r--ydb/core/tx/schemeshard/ut_restore/ut_restore.cpp123
6 files changed, 196 insertions, 137 deletions
diff --git a/ydb/core/tx/schemeshard/schemeshard_build_index__progress.cpp b/ydb/core/tx/schemeshard/schemeshard_build_index__progress.cpp
index 9052410f638..05b5dd3c0e5 100644
--- a/ydb/core/tx/schemeshard/schemeshard_build_index__progress.cpp
+++ b/ydb/core/tx/schemeshard/schemeshard_build_index__progress.cpp
@@ -372,9 +372,10 @@ THolder<TEvSchemeShard::TEvModifySchemeTransaction> CreateBuildPropose(
auto cell = TCell::Make(i);
op.AddSplitBoundary()->SetSerializedKeyPrefix(TSerializedCellVec::Serialize({&cell, 1}));
}
+ // Prevent merging partitions
+ policy.SetMinPartitionsCount(32768);
+ policy.SetMaxPartitionsCount(0);
}
- policy.SetMinPartitionsCount(op.SplitBoundarySize() + 1);
- policy.SetMaxPartitionsCount(op.SplitBoundarySize() + 1);
LOG_DEBUG_S((TlsActivationContext->AsActorContext()), NKikimrServices::BUILD_INDEX,
"CreateBuildPropose " << buildInfo.Id << " " << buildInfo.State << " " << propose->Record.ShortDebugString());
diff --git a/ydb/core/tx/schemeshard/ut_helpers/helpers.cpp b/ydb/core/tx/schemeshard/ut_helpers/helpers.cpp
index f33f680667a..039be70a57a 100644
--- a/ydb/core/tx/schemeshard/ut_helpers/helpers.cpp
+++ b/ydb/core/tx/schemeshard/ut_helpers/helpers.cpp
@@ -1774,9 +1774,9 @@ namespace NSchemeShardUT_Private {
if (cfg.KMeansTreeSettings) {
cfg.KMeansTreeSettings->SerializeTo(kmeansTreeSettings);
} else {
- // some random valid settings
- kmeansTreeSettings.mutable_settings()->set_vector_type(Ydb::Table::VectorIndexSettings::VECTOR_TYPE_FLOAT);
- kmeansTreeSettings.mutable_settings()->set_vector_dimension(42);
+ // valid settings for tests - uint8 vectors of size 4
+ kmeansTreeSettings.mutable_settings()->set_vector_type(Ydb::Table::VectorIndexSettings::VECTOR_TYPE_UINT8);
+ kmeansTreeSettings.mutable_settings()->set_vector_dimension(4);
kmeansTreeSettings.mutable_settings()->set_metric(Ydb::Table::VectorIndexSettings::DISTANCE_COSINE);
kmeansTreeSettings.set_clusters(4);
// More than 2 is too long for reboot tests
@@ -2663,4 +2663,28 @@ namespace NSchemeShardUT_Private {
SendNextValRequest(runtime, sender, path);
return WaitNextValResult(runtime, sender, expectedStatus);
}
+
+ NKikimrMiniKQL::TResult ReadTable(TTestActorRuntime& runtime, ui64 tabletId,
+ const TString& table, const TVector<TString>& pk, const TVector<TString>& columns,
+ const TString& rangeFlags)
+ {
+ TStringBuilder keyFmt;
+ for (const auto& k : pk) {
+ keyFmt << "'('" << k << " (Null) (Void)) ";
+ }
+ const auto columnsFmt = "'" + JoinSeq(" '", columns);
+
+ NKikimrMiniKQL::TResult result;
+ TString error;
+ NKikimrProto::EReplyStatus status = LocalMiniKQL(runtime, tabletId, Sprintf(R"((
+ (let range '(%s%s))
+ (let columns '(%s))
+ (let result (SelectRange '__user__%s range columns '()))
+ (return (AsList (SetResult 'Result result) ))
+ ))", rangeFlags.data(), keyFmt.data(), columnsFmt.data(), table.data()), result, error);
+ UNIT_ASSERT_VALUES_EQUAL_C(status, NKikimrProto::EReplyStatus::OK, error);
+ UNIT_ASSERT_VALUES_EQUAL(error, "");
+
+ return result;
+ }
}
diff --git a/ydb/core/tx/schemeshard/ut_helpers/helpers.h b/ydb/core/tx/schemeshard/ut_helpers/helpers.h
index 5bfdc665f14..f1e56dddaa1 100644
--- a/ydb/core/tx/schemeshard/ut_helpers/helpers.h
+++ b/ydb/core/tx/schemeshard/ut_helpers/helpers.h
@@ -641,6 +641,7 @@ namespace NSchemeShardUT_Private {
void UpdateRow(TTestActorRuntime& runtime, const TString& table, const ui32 key, const TString& value, ui64 tabletId = TTestTxConfig::FakeHiveTablets);
void UpdateRowPg(TTestActorRuntime& runtime, const TString& table, const ui32 key, ui32 value, ui64 tabletId = TTestTxConfig::FakeHiveTablets);
void UploadRow(TTestActorRuntime& runtime, const TString& tablePath, int partitionIdx, const TVector<ui32>& keyTags, const TVector<ui32>& valueTags, const TVector<TCell>& keys, const TVector<TCell>& values);
+ void WriteOp(TTestActorRuntime& runtime, ui64 schemeshardId, const ui64 txId, const TString& tablePath, int partitionIdx, NKikimrDataEvents::TEvWrite_TOperation::EOperationType operationType, const std::vector<ui32>& columnIds, TSerializedCellMatrix&& data, bool successIsExpected);
void WriteRow(TTestActorRuntime& runtime, ui64 schemeshardId, const ui64 txId, const TString& tablePath, int partitionIdx, const ui32 key, const TString& value, bool successIsExpected = true);
void WriteRow(TTestActorRuntime& runtime, const ui64 txId, const TString& tablePath, int partitionIdx, const ui32 key, const TString& value, bool successIsExpected = true);
void DeleteRow(TTestActorRuntime& runtime, ui64 schemeshardId, const ui64 txId, const TString& tablePath, int partitionIdx, const ui32 key, bool successIsExpected = true);
@@ -654,4 +655,8 @@ namespace NSchemeShardUT_Private {
TTestActorRuntime& runtime, const TString& path,
Ydb::StatusIds::StatusCode expectedStatus = Ydb::StatusIds::SUCCESS);
+ NKikimrMiniKQL::TResult ReadTable(TTestActorRuntime& runtime, ui64 tabletId,
+ const TString& table, const TVector<TString>& pk, const TVector<TString>& columns, const TString& rangeFlags = "");
+
+
} //NSchemeShardUT_Private
diff --git a/ydb/core/tx/schemeshard/ut_index/ut_async_index.cpp b/ydb/core/tx/schemeshard/ut_index/ut_async_index.cpp
index 80e7a447236..f6c737b6212 100644
--- a/ydb/core/tx/schemeshard/ut_index/ut_async_index.cpp
+++ b/ydb/core/tx/schemeshard/ut_index/ut_async_index.cpp
@@ -119,28 +119,6 @@ Y_UNIT_TEST_SUITE(TAsyncIndexTests) {
return mainTabletIds;
}
- NKikimrMiniKQL::TResult ReadTable(TTestActorRuntime& runtime, ui64 tabletId,
- const TString& table, const TVector<TString>& pk, const TVector<TString>& columns)
- {
- TStringBuilder keyFmt;
- for (const auto& k : pk) {
- keyFmt << "'('" << k << " (Null) (Void)) ";
- }
- const auto columnsFmt = "'" + JoinSeq(" '", columns);
-
- NKikimrMiniKQL::TResult result;
- TString error;
- NKikimrProto::EReplyStatus status = LocalMiniKQL(runtime, tabletId, Sprintf(R"((
- (let range '(%s))
- (let columns '(%s))
- (let result (SelectRange '__user__%s range columns '()))
- (return (AsList (SetResult 'Result result) ))
- ))", keyFmt.data(), columnsFmt.data(), table.data()), result, error);
- UNIT_ASSERT_VALUES_EQUAL_C(status, NKikimrProto::EReplyStatus::OK, error);
-
- return result;
- }
-
struct TTableTraits {
TString Path;
TVector<TString> Key;
diff --git a/ydb/core/tx/schemeshard/ut_index_build/ut_vector_index_build.cpp b/ydb/core/tx/schemeshard/ut_index_build/ut_vector_index_build.cpp
index 95c8758208c..dd8a13050c9 100644
--- a/ydb/core/tx/schemeshard/ut_index_build/ut_vector_index_build.cpp
+++ b/ydb/core/tx/schemeshard/ut_index_build/ut_vector_index_build.cpp
@@ -8,6 +8,7 @@
#include <ydb/core/tx/datashard/datashard.h>
#include <ydb/core/metering/metering.h>
+#include <ydb/public/lib/deprecated/kicli/kicli.h>
#include <ydb/public/sdk/cpp/include/ydb-cpp-sdk/client/table/table.h>
using namespace NKikimr;
@@ -79,30 +80,37 @@ Y_UNIT_TEST_SUITE (VectorIndexBuildTest) {
// Just create main table
TestCreateTable(runtime, tenantSchemeShard, ++txId, "/MyRoot/ServerLessDB", R"(
- Name: "Table"
- Columns { Name: "key" Type: "Uint32" }
- Columns { Name: "embedding" Type: "String" }
- KeyColumnNames: ["key"]
+ Name: "Table"
+ Columns { Name: "key" Type: "Uint32" }
+ Columns { Name: "embedding" Type: "String" }
+ KeyColumnNames: ["key"]
+ SplitBoundary { KeyPrefix { Tuple { Optional { Uint32: 50 } } } }
+ SplitBoundary { KeyPrefix { Tuple { Optional { Uint32: 150 } } } }
)");
env.TestWaitNotification(runtime, txId, tenantSchemeShard);
- auto fnWriteRow = [&](ui64 tabletId, ui32 key, TString embedding, const char* table) {
- TString writeQuery = Sprintf(R"(
- (
- (let key '( '('key (Uint32 '%u ) ) ) )
- (let row '( '('embedding (String '%s ) ) ) )
- (return (AsList (UpdateRow '__user__%s key row) ))
- )
- )", key, embedding.c_str(), table);
- NKikimrMiniKQL::TResult result;
- TString err;
- NKikimrProto::EReplyStatus status = LocalMiniKQL(runtime, tabletId, writeQuery, result, err);
- UNIT_ASSERT_VALUES_EQUAL(err, "");
- UNIT_ASSERT_VALUES_EQUAL(status, NKikimrProto::EReplyStatus::OK);
+ // Write data directly into shards
+ auto fillRows = [&](const TString & tablePath, ui32 shard, ui32 min, ui32 max) {
+ TVector<TCell> cells;
+ ui8 str[6] = { 0 };
+ str[4] = (ui8)Ydb::Table::VectorIndexSettings::VECTOR_TYPE_UINT8;
+ for (ui32 key = min; key < max; ++key) {
+ str[0] = ((key+106)* 7) % 256;
+ str[1] = ((key+106)*17) % 256;
+ str[2] = ((key+106)*37) % 256;
+ str[3] = ((key+106)*47) % 256;
+ cells.emplace_back(TCell::Make(key));
+ cells.emplace_back(TCell((const char*)str, 5));
+ }
+ std::vector<ui32> columnIds{1, 2};
+ TSerializedCellMatrix matrix(cells, max-min, 2);
+ WriteOp(runtime, tenantSchemeShard, ++txId, tablePath,
+ shard, NKikimrDataEvents::TEvWrite::TOperation::OPERATION_UPSERT,
+ columnIds, std::move(matrix), true);
};
- for (ui32 key = 0; key < 200; ++key) {
- fnWriteRow(TTestTxConfig::FakeHiveTablets + 6, key, std::to_string(key), "Table");
- }
+ fillRows("/MyRoot/ServerLessDB/Table", 0, 0, 50);
+ fillRows("/MyRoot/ServerLessDB/Table", 1, 50, 150);
+ fillRows("/MyRoot/ServerLessDB/Table", 2, 150, 200);
runtime.SetLogPriority(NKikimrServices::TX_DATASHARD, NLog::PRI_TRACE);
runtime.SetLogPriority(NKikimrServices::BUILD_INDEX, NLog::PRI_TRACE);
@@ -118,18 +126,95 @@ Y_UNIT_TEST_SUITE (VectorIndexBuildTest) {
meteringMessages << event->Get()->MeteringJson;
});
- TestBuildVectorIndex(runtime, ++txId, tenantSchemeShard, "/MyRoot/ServerLessDB", "/MyRoot/ServerLessDB/Table", "index1", "embedding");
+ TBlockEvents<TEvDataShard::TEvReshuffleKMeansRequest> reshuffleBlocker(runtime, [&](const auto& ) {
+ return true;
+ });
+
+ AsyncBuildVectorIndex(runtime, ++txId, tenantSchemeShard, "/MyRoot/ServerLessDB", "/MyRoot/ServerLessDB/Table", "index1", "embedding");
ui64 buildIndexId = txId;
+ // Wait for the first "reshuffle" request (samples will be already collected on the first level)
+ // and reboot the scheme shard to verify that its intermediate state is persisted correctly.
+ // The bug checked here: Sample.Probability was not persisted (#18236).
+ runtime.WaitFor("ReshuffleKMeansRequest", [&]{ return reshuffleBlocker.size(); });
+ Cerr << "... rebooting scheme shard" << Endl;
+ RebootTablet(runtime, tenantSchemeShard, runtime.AllocateEdgeActor());
+
+ // Now wait for the 1st level to be finalized
+ TBlockEvents<TEvSchemeShard::TEvModifySchemeTransaction> level1Blocker(runtime, [&](auto& ev) {
+ const auto& record = ev->Get()->Record;
+ if (record.GetTransaction(0).GetOperationType() == NKikimrSchemeOp::ESchemeOpInitiateBuildIndexImplTable) {
+ txId = record.GetTxId();
+ return true;
+ }
+ return false;
+ });
+ reshuffleBlocker.Stop();
+ reshuffleBlocker.Unblock(reshuffleBlocker.size());
+
+ // Reshard the first level table (0build)
+ // First bug checked here: after restarting the schemeshard during reshuffle it
+ // generates more clusters than requested and dies with VERIFY on shard boundaries (#18278).
+ // Second bug checked here: posting table doesn't contain all rows from the main table
+ // when the build table is resharded during build (#18355).
+ {
+ auto indexDesc = DescribePath(runtime, tenantSchemeShard, "/MyRoot/ServerLessDB/Table/index1/indexImplPostingTable0build", true, true, true);
+ auto parts = indexDesc.GetPathDescription().GetTablePartitions();
+ UNIT_ASSERT_EQUAL(parts.size(), 4);
+ ui64 cluster = 1;
+ for (const auto & x: parts) {
+ TestSplitTable(runtime, tenantSchemeShard, ++txId, "/MyRoot/ServerLessDB/Table/index1/indexImplPostingTable0build", Sprintf(R"(
+ SourceTabletId: %lu
+ SplitBoundary { KeyPrefix { Tuple { Optional { Uint64: %lu } } Tuple { Optional { Uint32: 50 } } } }
+ SplitBoundary { KeyPrefix { Tuple { Optional { Uint64: %lu } } Tuple { Optional { Uint32: 150 } } } }
+ )", x.GetDatashardId(), cluster, cluster));
+ env.TestWaitNotification(runtime, txId);
+ cluster++;
+ }
+ }
+
+ level1Blocker.Stop();
+ level1Blocker.Unblock(level1Blocker.size());
+
+ // Now wait for the index build
+ {
+ auto expectedStatus = Ydb::StatusIds::SUCCESS;
+ TAutoPtr<IEventHandle> handle;
+ TEvIndexBuilder::TEvCreateResponse* event = runtime.GrabEdgeEvent<TEvIndexBuilder::TEvCreateResponse>(handle);
+ UNIT_ASSERT(event);
+
+ Cerr << "BUILDINDEX RESPONSE CREATE: " << event->ToString() << Endl;
+ UNIT_ASSERT_EQUAL_C(event->Record.GetStatus(), expectedStatus,
+ "status mismatch"
+ << " got " << Ydb::StatusIds::StatusCode_Name(event->Record.GetStatus())
+ << " expected " << Ydb::StatusIds::StatusCode_Name(expectedStatus)
+ << " issues was " << event->Record.GetIssues());
+ }
+
+ env.TestWaitNotification(runtime, buildIndexId, tenantSchemeShard);
+
+ // Check row count in the posting table
+ {
+ auto indexDesc = DescribePath(runtime, tenantSchemeShard, "/MyRoot/ServerLessDB/Table/index1/indexImplPostingTable", true, true, true);
+ auto parts = indexDesc.GetPathDescription().GetTablePartitions();
+ ui32 rows = 0;
+ for (const auto & x: parts) {
+ auto result = ReadTable(runtime, x.GetDatashardId(), "indexImplPostingTable",
+ {NKikimr::NTableIndex::NTableVectorKmeansTreeIndex::ParentColumn, "key"}, {"key"});
+ auto value = NClient::TValue::Create(result);
+ rows += value["Result"]["List"].Size();
+ }
+ Cerr << "... posting table contains " << rows << " rows" << Endl;
+ UNIT_ASSERT_VALUES_EQUAL(rows, 200);
+ }
+
auto listing = TestListBuildIndex(runtime, tenantSchemeShard, "/MyRoot/ServerLessDB");
UNIT_ASSERT_VALUES_EQUAL(listing.EntriesSize(), 1);
- env.TestWaitNotification(runtime, txId, tenantSchemeShard);
-
- auto descr = TestGetBuildIndex(runtime, tenantSchemeShard, "/MyRoot/ServerLessDB", txId);
+ auto descr = TestGetBuildIndex(runtime, tenantSchemeShard, "/MyRoot/ServerLessDB", buildIndexId);
UNIT_ASSERT_VALUES_EQUAL(descr.GetIndexBuild().GetState(), Ydb::Table::IndexBuildState::STATE_DONE);
- const TString meteringData = R"({"usage":{"start":0,"quantity":128,"finish":0,"unit":"request_unit","type":"delta"},"tags":{},"id":"106-72075186233409549-2-0-0-0-0-200-0-1290-0","cloud_id":"CLOUD_ID_VAL","source_wt":0,"source_id":"sless-docapi-ydb-ss","resource_id":"DATABASE_ID_VAL","schema":"ydb.serverless.requests.v1","folder_id":"FOLDER_ID_VAL","version":"1.0.0"})""\n";
+ const TString meteringData = R"({"usage":{"start":0,"quantity":431,"finish":0,"unit":"request_unit","type":"delta"},"tags":{},"id":"109-72075186233409549-2-0-0-0-0-619-605-11328-10960","cloud_id":"CLOUD_ID_VAL","source_wt":0,"source_id":"sless-docapi-ydb-ss","resource_id":"DATABASE_ID_VAL","schema":"ydb.serverless.requests.v1","folder_id":"FOLDER_ID_VAL","version":"1.0.0"})""\n";
UNIT_ASSERT_NO_DIFF(meteringMessages, meteringData);
@@ -152,6 +237,7 @@ Y_UNIT_TEST_SUITE (VectorIndexBuildTest) {
)");
env.TestWaitNotification(runtime, txId, tenantSchemeShard);
+ Cerr << "... rebooting scheme shard" << Endl;
RebootTablet(runtime, tenantSchemeShard, runtime.AllocateEdgeActor());
TestDescribeResult(DescribePath(runtime, tenantSchemeShard, "/MyRoot/ServerLessDB/Table"),
@@ -200,16 +286,14 @@ Y_UNIT_TEST_SUITE (VectorIndexBuildTest) {
NLs::ExtractTenantSchemeshard(&tenantSchemeShard)});
TestCreateTable(runtime, tenantSchemeShard, ++txId, "/MyRoot/CommonDB", R"(
- Name: "Table"
- Columns { Name: "key" Type: "Uint32" }
- Columns { Name: "embedding" Type: "String" }
- KeyColumnNames: ["key"]
+ Name: "Table"
+ Columns { Name: "key" Type: "Uint32" }
+ Columns { Name: "embedding" Type: "String" }
+ KeyColumnNames: ["key"]
)");
env.TestWaitNotification(runtime, txId, tenantSchemeShard);
- for (ui32 key = 100; key < 300; ++key) {
- fnWriteRow(TTestTxConfig::FakeHiveTablets + 6, key, std::to_string(key), "Table");
- }
+ fillRows("/MyRoot/CommonDB/Table", 0, 100, 300);
TVector<TString> billRecords;
observerHolder = runtime.AddObserver<NMetering::TEvMetering::TEvWriteMeteringJson>([&](NMetering::TEvMetering::TEvWriteMeteringJson::TPtr& event) {
diff --git a/ydb/core/tx/schemeshard/ut_restore/ut_restore.cpp b/ydb/core/tx/schemeshard/ut_restore/ut_restore.cpp
index fcd16bdfe6b..8f5bfaf83a5 100644
--- a/ydb/core/tx/schemeshard/ut_restore/ut_restore.cpp
+++ b/ydb/core/tx/schemeshard/ut_restore/ut_restore.cpp
@@ -399,42 +399,12 @@ namespace {
return ConvertTestData({{"", data}});
}
- NKikimrMiniKQL::TResult ReadTableImpl(TTestActorRuntime& runtime, ui64 tabletId, const TString& query) {
- NKikimrMiniKQL::TResult result;
-
- TString error;
- NKikimrProto::EReplyStatus status = LocalMiniKQL(runtime, tabletId, query, result, error);
- UNIT_ASSERT_VALUES_EQUAL_C(status, NKikimrProto::EReplyStatus::OK, error);
- UNIT_ASSERT_VALUES_EQUAL(error, "");
-
- return result;
- }
-
struct TReadKeyDesc {
TString Name;
TString Type;
TString Atom;
};
- NKikimrMiniKQL::TResult ReadTable(TTestActorRuntime& runtime, ui64 tabletId,
- const TString& table = "Table",
- const TReadKeyDesc& keyDesc = {"key", "Utf8", "\"\""},
- const TVector<TString>& columns = {"key", "value"},
- const TString& rangeFlags = "") {
-
- const auto rangeFmt = Sprintf("'%s (%s '%s)", keyDesc.Name.data(), keyDesc.Type.data(), keyDesc.Atom.data());
- const auto columnsFmt = "'" + JoinSeq(" '", columns);
-
- return ReadTableImpl(runtime, tabletId, Sprintf(R"(
- (
- (let range '(%s '(%s (Void) )))
- (let columns '(%s) )
- (let result (SelectRange '__user__%s range columns '()))
- (return (AsList (SetResult 'Result result) ))
- )
- )", rangeFlags.c_str(), rangeFmt.data(), columnsFmt.data(), table.data()));
- }
-
using TDelayFunc = std::function<bool(TAutoPtr<IEventHandle>&)>;
auto SetDelayObserver(TTestActorRuntime& runtime, THolder<IEventHandle>& delayed, TDelayFunc delayFunc) {
@@ -518,7 +488,7 @@ Y_UNIT_TEST_SUITE(TRestoreTests) {
KeyColumnNames: ["key"]
)", {data});
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.YsonStr, content);
}
@@ -600,7 +570,7 @@ value {
KeyColumnNames: ["key"]
)", {data});
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.YsonStr, content);
const auto desc = DescribePath(runtime, "/MyRoot/Table", true, true);
@@ -630,11 +600,11 @@ value {
)", {a, b});
{
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 0);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 0, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(a.YsonStr, content);
}
{
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 1);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 1, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(b.YsonStr, content);
}
}
@@ -652,7 +622,7 @@ value {
KeyColumnNames: ["key"]
)", {data});
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key", "Uint32", "0"});
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.YsonStr, content);
}
@@ -668,7 +638,7 @@ value {
KeyColumnNames: ["key"]
)", {data}, batchSize);
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.YsonStr, content);
}
@@ -750,7 +720,7 @@ value {
UNIT_ASSERT_VALUES_EQUAL(result->GetRowsProcessed(), 2);
env.TestWaitNotification(runtime, txId);
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.YsonStr, content);
}
@@ -792,7 +762,7 @@ value {
KeyColumnNames: ["key"]
)", {data}, batchSize);
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.YsonStr, content);
}
@@ -887,7 +857,7 @@ value {
KeyColumnNames: ["key"]
)_", {data}, data.Data.size() + 1);
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key", "Uint64", "0"}, {
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {
"key",
"int32_value",
"uint32_value",
@@ -1409,7 +1379,7 @@ value {
<< R"(["valueA"])" // value
<< "];"
<< "];\%false]]]";
- auto content = ReadTable(runtime, restoredFirstTablet, "Restored", {"key", "Uint32", "0"});
+ auto content = ReadTable(runtime, restoredFirstTablet, "Restored", {"key"}, {"key", "value"});
NKqp::CompareYson(expectedJson, content);
}
{
@@ -1419,7 +1389,7 @@ value {
<< R"(["valueB"])" // value
<< "];"
<< "];\%false]]]";
- auto content = ReadTable(runtime, restoredSecondTablet, "Restored", {"key", "Uint32", "0"});
+ auto content = ReadTable(runtime, restoredSecondTablet, "Restored", {"key"}, {"key", "value"});
NKqp::CompareYson(expectedJson, content);
}
}
@@ -1566,12 +1536,12 @@ value {
<< R"(["valueB"])" // value
<< "];"
<< "];\%false]]]";
- auto content = ReadTable(runtime, restoredFirstTablet, "Restored", {"key", "Uint32", "0"});
+ auto content = ReadTable(runtime, restoredFirstTablet, "Restored", {"key"}, {"key", "value"});
NKqp::CompareYson(expectedJson, content);
}
{
auto expectedJson = "[[[[];\%false]]]";
- auto content = ReadTable(runtime, restoredSecondTablet, "Restored", {"key", "Uint32", "0"});
+ auto content = ReadTable(runtime, restoredSecondTablet, "Restored", {"key"}, {"key", "value"});
NKqp::CompareYson(expectedJson, content);
}
}
@@ -1759,8 +1729,6 @@ value {
<< "[[\"" << "wR7fZX2pskeuVjwCPabujA==" << "\"]]" // uuid
<< "]];\%false]]]";
- const TReadKeyDesc readKeyDesc = {"key", "Uint64", "0"};
-
const TVector<TString> readColumns = {
"key",
"int32_value",
@@ -1789,10 +1757,10 @@ value {
"uuid_value",
};
- auto contentOriginalTable = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", readKeyDesc, readColumns);
+ auto contentOriginalTable = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, readColumns);
NKqp::CompareYson(expectedJson, contentOriginalTable);
- auto contentRestoredTable = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 2, commonPrefix ? "Table" : "Restored", readKeyDesc, readColumns);
+ auto contentRestoredTable = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 2, commonPrefix ? "Table" : "Restored", {"key"}, readColumns);
NKqp::CompareYson(expectedJson, contentRestoredTable);
}
}
@@ -2145,7 +2113,7 @@ value {
<< R"(["valueA"])" // value
<< "];"
<< "];\%false]]]";
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 2, "Restored", {"key", "Uint32", "0"});
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 2, "Restored", {"key"}, {"key", "value"});
NKqp::CompareYson(expectedJson, content);
}
}
@@ -2402,7 +2370,7 @@ value {
UNIT_ASSERT(requests > expected);
UNIT_ASSERT_VALUES_EQUAL(responses, expected);
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key", "Uint32", "0"});
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.YsonStr, content);
}
@@ -2421,7 +2389,7 @@ value {
KeyColumnNames: ["key"]
)", {data}, batchSize);
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.YsonStr, content);
}
@@ -2447,7 +2415,7 @@ value {
KeyColumnNames: ["key"]
)", {data});
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.YsonStr, content);
}
@@ -2465,7 +2433,7 @@ value {
KeyColumnNames: ["key"]
)", {data});
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key", "Uint64", "0"});
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.YsonStr, content);
}
@@ -2488,11 +2456,11 @@ value {
)", {a, b});
{
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 0);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 0, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(a.YsonStr, content);
}
{
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 1);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 1, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(b.YsonStr, content);
}
}
@@ -2510,7 +2478,7 @@ value {
KeyColumnNames: ["key"]
)", {data});
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.YsonStr, content);
}
@@ -2612,7 +2580,7 @@ value {
TestCancelTxTable(runtime, ++txId, restoreTxId);
env.TestWaitNotification(runtime, {restoreTxId, txId});
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.YsonStr, content);
}
@@ -2678,7 +2646,7 @@ value {
runtime.Send(progress.Release(), 0, true);
env.TestWaitNotification(runtime, {restoreTxId, txId});
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.YsonStr, content);
}
}
@@ -2740,7 +2708,7 @@ Y_UNIT_TEST_SUITE(TRestoreWithRebootsTests) {
{
TInactiveZone inactive(activeZone);
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.YsonStr, content);
}
});
@@ -2770,11 +2738,11 @@ Y_UNIT_TEST_SUITE(TRestoreWithRebootsTests) {
{
TInactiveZone inactive(activeZone);
{
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 0);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 0, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(a.YsonStr, content);
}
{
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 1);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 1, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(b.YsonStr, content);
}
}
@@ -2822,11 +2790,11 @@ Y_UNIT_TEST_SUITE(TRestoreWithRebootsTests) {
{
TInactiveZone inactive(activeZone);
{
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 0);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 0, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(a.YsonStr, content);
}
{
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 1);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 1, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(b.YsonStr, content);
}
}
@@ -2852,7 +2820,7 @@ Y_UNIT_TEST_SUITE(TRestoreWithRebootsTests) {
{
TInactiveZone inactive(activeZone);
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key", "Uint32", "0"});
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.YsonStr, content);
}
});
@@ -2877,7 +2845,7 @@ Y_UNIT_TEST_SUITE(TRestoreWithRebootsTests) {
{
TInactiveZone inactive(activeZone);
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.YsonStr, content);
}
});
@@ -2903,7 +2871,7 @@ Y_UNIT_TEST_SUITE(TRestoreWithRebootsTests) {
{
TInactiveZone inactive(activeZone);
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.YsonStr, content);
}
});
@@ -2929,7 +2897,7 @@ Y_UNIT_TEST_SUITE(TRestoreWithRebootsTests) {
{
TInactiveZone inactive(activeZone);
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.YsonStr, content);
}
});
@@ -2955,7 +2923,7 @@ Y_UNIT_TEST_SUITE(TRestoreWithRebootsTests) {
{
TInactiveZone inactive(activeZone);
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key", "Uint64", "0"});
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.YsonStr, content);
}
});
@@ -2985,11 +2953,11 @@ Y_UNIT_TEST_SUITE(TRestoreWithRebootsTests) {
{
TInactiveZone inactive(activeZone);
{
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 0);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 0, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(a.YsonStr, content);
}
{
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 1);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 1, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(b.YsonStr, content);
}
}
@@ -3189,7 +3157,7 @@ Y_UNIT_TEST_SUITE(TImportTests) {
}
)");
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.Data[0].YsonStr, content);
}
@@ -3226,11 +3194,11 @@ Y_UNIT_TEST_SUITE(TImportTests) {
)");
{
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 0);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 0, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.Data[0].YsonStr, content);
}
{
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 1);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 1, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.Data[1].YsonStr, content);
}
}
@@ -3274,13 +3242,12 @@ Y_UNIT_TEST_SUITE(TImportTests) {
)");
{
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 0);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 0, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.Data[0].YsonStr, content);
}
for (ui32 i = 0; i < indexes; ++i) {
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 1 + i,
- "indexImplTable", {"value", "Utf8", "\"\""}, {"value", "key"}, "'ExcFrom");
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 1 + i, "indexImplTable", {"value"}, {"value", "key"}, "'ExcFrom ");
NKqp::CompareYson(data.Data[0].YsonStr, content);
}
}
@@ -3340,11 +3307,11 @@ Y_UNIT_TEST_SUITE(TImportTests) {
)");
{
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 0, "TableA");
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 0, "TableA", {"key"}, {"key", "value"});
NKqp::CompareYson(a.Data[0].YsonStr, content);
}
{
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 1, "TableB");
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets + 1, "TableB", {"key"}, {"key", "value"});
NKqp::CompareYson(b.Data[0].YsonStr, content);
}
}
@@ -3377,7 +3344,7 @@ Y_UNIT_TEST_SUITE(TImportTests) {
}
)");
- auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets);
+ auto content = ReadTable(runtime, TTestTxConfig::FakeHiveTablets, "Table", {"key"}, {"key", "value"});
NKqp::CompareYson(data.Data[0].YsonStr, content);
}