Skip to content

Commit cbfe631

Browse files
committed
Added test
1 parent 3fe401c commit cbfe631

File tree

1 file changed

+40
-1
lines changed

1 file changed

+40
-1
lines changed

ydb/core/tx/columnshard/ut_rw/ut_normalizer.cpp

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,36 @@ class TColumnChunksCleaner: public NYDBTest::ILocalDBModifier {
152152
}
153153
};
154154

155-
class TPortionsCleaner: public NYDBTest::ILocalDBModifier {
155+
class TSchemaVersionsCleaner : public NYDBTest::ILocalDBModifier {
156+
public:
157+
virtual void Apply(NTabletFlatExecutor::TTransactionContext& txc) const override {
158+
using namespace NColumnShard;
159+
NIceDb::TNiceDb db(txc.DB);
160+
auto rowset = db.Table<Schema::IndexPortions>().Select();
161+
UNIT_ASSERT(rowset.IsReady());
162+
163+
ui64 minVersion = (ui64)-1;
164+
while (!rowset.EndOfSet()) {
165+
auto version = rowset.GetValue<Schema::IndexPortions::SchemaVersion>();
166+
if (version < minVersion) {
167+
minVersion = version;
168+
}
169+
UNIT_ASSERT(rowset.Next());
170+
}
171+
172+
// Add invalid widow schema, if SchemaVersionCleaner will not erase it, then test will fail
173+
TString serialized;
174+
NKikimrTxColumnShard::TSchemaPresetVersionInfo info;
175+
info.MutableSchema()->SetVersion(minVersion - 1);
176+
Y_ABORT_UNLESS(info.SerializeToString(&serialized));
177+
db.Table<Schema::SchemaPresetVersionInfo>().Key(11, 1, 1).Update(NIceDb::TUpdate<Schema::SchemaPresetVersionInfo::InfoProto>(serialized));
178+
179+
db.Table<Schema::SchemaPresetInfo>().Key(10).Update(NIceDb::TUpdate<Schema::SchemaPresetInfo::Name>("default"));
180+
181+
}
182+
};
183+
184+
class TPortionsCleaner : public NYDBTest::ILocalDBModifier {
156185
public:
157186
virtual void Apply(NTabletFlatExecutor::TTransactionContext& txc) const override {
158187
using namespace NColumnShard;
@@ -259,6 +288,11 @@ Y_UNIT_TEST_SUITE(Normalizers) {
259288
TTestBasicRuntime runtime;
260289
TTester::Setup(runtime);
261290

291+
auto* repair = runtime.GetAppData().ColumnShardConfig.MutableRepairs()->Add();
292+
repair->SetClassName("SchemaVersionCleaner");
293+
repair->SetDescription("Removing unused schema versions");
294+
295+
const ui64 ownerId = 0;
262296
const ui64 tableId = 1;
263297
const std::vector<NArrow::NTest::TTestColumn> schema = { NArrow::NTest::TTestColumn("key1", TTypeInfo(NTypeIds::Uint64)),
264298
NArrow::NTest::TTestColumn("key2", TTypeInfo(NTypeIds::Uint64)), NArrow::NTest::TTestColumn("field", TTypeInfo(NTypeIds::Utf8)) };
@@ -308,10 +342,15 @@ Y_UNIT_TEST_SUITE(Normalizers) {
308342
TestNormalizerImpl<TPortionsCleaner>();
309343
}
310344

345+
Y_UNIT_TEST(SchemaVersionsNormalizer) {
346+
TestNormalizerImpl<TSchemaVersionsCleaner>();
347+
}
348+
311349
Y_UNIT_TEST(CleanEmptyPortionsNormalizer) {
312350
TestNormalizerImpl<TEmptyPortionsCleaner>();
313351
}
314352

353+
315354
Y_UNIT_TEST(EmptyTablesNormalizer) {
316355
class TLocalNormalizerChecker: public TNormalizerChecker {
317356
public:

0 commit comments

Comments
 (0)