Skip to content

Commit 3974aec

Browse files
authored
Merge 53bb8ff into da20d39
2 parents da20d39 + 53bb8ff commit 3974aec

File tree

3 files changed

+97
-12
lines changed

3 files changed

+97
-12
lines changed

ydb/core/kqp/ut/olap/tiering_ut.cpp

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,54 @@ Y_UNIT_TEST_SUITE(KqpOlapTiering) {
159159
UNIT_ASSERT_VALUES_UNEQUAL(result.GetStatus(), NYdb::EStatus::SUCCESS);
160160
}
161161
}
162+
163+
Y_UNIT_TEST(InitSettings) {
164+
auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NOlap::TWaitCompactionController>();
165+
csController->SetSkipSpecialCheckForEvict(true);
166+
167+
TKikimrSettings runnerSettings;
168+
runnerSettings.WithSampleTables = false;
169+
TTestHelper testHelper(runnerSettings);
170+
TLocalHelper localHelper(testHelper.GetKikimr());
171+
NYdb::NTable::TTableClient tableClient = testHelper.GetKikimr().GetTableClient();
172+
Tests::NCommon::TLoggerInit(testHelper.GetKikimr()).Initialize();
173+
174+
localHelper.CreateTestOlapTable();
175+
{
176+
const TString query = R"(ALTER TABLE `/Root/olapTable` SET TTL Interval("P0D") ON timestamp)";
177+
auto result = testHelper.GetSession().ExecuteSchemeQuery(query).GetValueSync();
178+
UNIT_ASSERT_VALUES_UNEQUAL(result.GetStatus(), NYdb::EStatus::SUCCESS);
179+
}
180+
{
181+
const TString query = R"(ALTER TABLE `/Root/olapTable` SET RESET TTL Interval("P0D") ON timestamp)";
182+
auto result = testHelper.GetSession().ExecuteSchemeQuery(query).GetValueSync();
183+
UNIT_ASSERT_VALUES_UNEQUAL(result.GetStatus(), NYdb::EStatus::SUCCESS);
184+
}
185+
186+
for (ui64 i = 0; i < 100; ++i) {
187+
WriteTestData(testHelper.GetKikimr(), "/Root/olapStore/olapTable", 0, i * 10000, 1000);
188+
}
189+
190+
csController->WaitCompactions(TDuration::Seconds(5));
191+
csController->WaitActualization(TDuration::Seconds(5));
192+
193+
{
194+
auto selectQuery = TString(R"(
195+
SELECT
196+
TierName, SUM(ColumnRawBytes) As RawBytes
197+
FROM `/Root/olapStore/olapTable/.sys/primary_index_portion_stats`
198+
WHERE Activity == 1
199+
GROUP BY TierName
200+
)");
201+
202+
auto rows = ExecuteScanQuery(tableClient, selectQuery);
203+
UNIT_ASSERT_VALUES_EQUAL(rows.size(), 1);
204+
UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[0].at("TierName")), "__DEFAULT");
205+
UNIT_ASSERT_VALUES_EQUAL_C(GetUint64(rows[0].at("RawBytes")), columnRawBytes,
206+
TStringBuilder() << "RawBytes changed after resetting tiering: before=" << columnRawBytes
207+
<< " after=" << GetUint64(rows[0].at("RawBytes")));
208+
}
209+
}
162210
}
163211

164212
} // namespace NKikimr::NKqp

ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10343,6 +10343,50 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) {
1034310343
}
1034410344
}
1034510345

10346+
Y_UNIT_TEST(InitTtlSettingsOnShardStart) {
10347+
TKikimrSettings runnerSettings;
10348+
runnerSettings.WithSampleTables = false;
10349+
TTestHelper testHelper(runnerSettings);
10350+
10351+
TVector<TTestHelper::TColumnSchema> schema = {
10352+
TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false),
10353+
TTestHelper::TColumnSchema().SetName("timestamp").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false)
10354+
};
10355+
10356+
TTestHelper::TColumnTable testTable;
10357+
testTable.SetName("/Root/ColumnTableTest").SetPrimaryKey({"id"}).SetSharding({"id"}).SetSchema(schema);
10358+
testHelper.CreateTable(testTable);
10359+
10360+
{
10361+
auto alterQuery = TStringBuilder() << R"(
10362+
--!syntax_v1
10363+
ALTER OBJECT `)" << testTable.GetName() << R"(` (TYPE TABLE) SET (ACTION=UPSERT_INDEX,
10364+
NAME=max_pk_int, TYPE=MAX, FEATURES=`{\"column_name\": \"timestamp\"}`))";
10365+
auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync();
10366+
UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString());
10367+
}
10368+
10369+
{
10370+
auto alterQuery = TStringBuilder() << "ALTER TABLE `" << testTable.GetName() << "`SET (TTL = Interval(\"PT1H\") ON timestamp);";
10371+
auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync();
10372+
UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString());
10373+
}
10374+
10375+
{
10376+
auto alterQuery = TStringBuilder() << "ALTER TABLE `" << testTable.GetName() << "` RESET (TTL);";
10377+
auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync();
10378+
UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString());
10379+
}
10380+
10381+
{
10382+
auto alterQuery = TStringBuilder() << "ALTER TABLE `" << testTable.GetName() << "` DROP COLUMN timestamp;";
10383+
auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync();
10384+
UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString());
10385+
}
10386+
10387+
testHelper.RebootTablets("/Root/ColumnTableTest");
10388+
}
10389+
1034610390
}
1034710391

1034810392
Y_UNIT_TEST_SUITE(KqpOlapTypes) {

ydb/core/tx/columnshard/tables_manager.cpp

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -105,13 +105,13 @@ bool TTablesManager::InitFromDB(NIceDb::TNiceDb& db) {
105105
{
106106
TLoadTimeSignals::TLoadTimer timer = LoadTimeCounters->TableVersionsLoadTimeCounters.StartGuard();
107107
TMemoryProfileGuard g("TTablesManager/InitFromDB::Versions");
108-
auto rowset = db.Table<Schema::TableVersionInfo>().Select();
108+
auto rowset = db.Table<Schema::TableVersionInfo>().Reverse().Select();
109109
if (!rowset.IsReady()) {
110110
timer.AddLoadingFail();
111111
return false;
112112
}
113113

114-
THashMap<ui64, NOlap::TSnapshot> lastVersion;
114+
THashSet<ui64> initializedPaths;
115115
while (!rowset.EndOfSet()) {
116116
const ui64 pathId = rowset.GetValue<Schema::TableVersionInfo::PathId>();
117117
Y_ABORT_UNLESS(Tables.contains(pathId));
@@ -124,18 +124,11 @@ bool TTablesManager::InitFromDB(NIceDb::TNiceDb& db) {
124124
AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "load_table_version")("path_id", pathId)("snapshot", version);
125125
Y_ABORT_UNLESS(schemaPresets.contains(versionInfo.GetSchemaPresetId()));
126126

127-
if (!table.IsDropped()) {
127+
if (initializedPaths.insert(pathId).second && !table.IsDropped()) {
128128
auto& ttlSettings = versionInfo.GetTtlSettings();
129129
if (ttlSettings.HasEnabled()) {
130-
auto vIt = lastVersion.find(pathId);
131-
if (vIt == lastVersion.end()) {
132-
vIt = lastVersion.emplace(pathId, version).first;
133-
}
134-
if (vIt->second <= version) {
135-
TTtl::TDescription description(ttlSettings.GetEnabled());
136-
Ttl.SetPathTtl(pathId, std::move(description));
137-
vIt->second = version;
138-
}
130+
TTtl::TDescription description(ttlSettings.GetEnabled());
131+
Ttl.SetPathTtl(pathId, std::move(description));
139132
}
140133
}
141134
table.AddVersion(version);

0 commit comments

Comments
 (0)