Skip to content

Commit

Permalink
fix TTL initialization from DB on CS (#12210)
Browse files Browse the repository at this point in the history
  • Loading branch information
swalrus1 authored Dec 3, 2024
1 parent 8bff909 commit 73759b6
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 7 deletions.
44 changes: 44 additions & 0 deletions ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10343,6 +10343,50 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) {
}
}

Y_UNIT_TEST(InitTtlSettingsOnShardStart) {
TKikimrSettings runnerSettings;
runnerSettings.WithSampleTables = false;
TTestHelper testHelper(runnerSettings);

TVector<TTestHelper::TColumnSchema> schema = {
TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false),
TTestHelper::TColumnSchema().SetName("timestamp").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false)
};

TTestHelper::TColumnTable testTable;
testTable.SetName("/Root/ColumnTableTest").SetPrimaryKey({"id"}).SetSharding({"id"}).SetSchema(schema);
testHelper.CreateTable(testTable);

{
auto alterQuery = TStringBuilder() << R"(
--!syntax_v1
ALTER OBJECT `)" << testTable.GetName() << R"(` (TYPE TABLE) SET (ACTION=UPSERT_INDEX,
NAME=max_pk_int, TYPE=MAX, FEATURES=`{\"column_name\": \"timestamp\"}`))";
auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString());
}

{
auto alterQuery = TStringBuilder() << "ALTER TABLE `" << testTable.GetName() << "`SET (TTL = Interval(\"PT1H\") ON timestamp);";
auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString());
}

{
auto alterQuery = TStringBuilder() << "ALTER TABLE `" << testTable.GetName() << "` RESET (TTL);";
auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString());
}

{
auto alterQuery = TStringBuilder() << "ALTER TABLE `" << testTable.GetName() << "` DROP COLUMN timestamp;";
auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString());
}

testHelper.RebootTablets("/Root/ColumnTableTest");
}

}

Y_UNIT_TEST_SUITE(KqpOlapTypes) {
Expand Down
16 changes: 9 additions & 7 deletions ydb/core/tx/columnshard/tables_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -126,16 +126,18 @@ bool TTablesManager::InitFromDB(NIceDb::TNiceDb& db) {

if (!table.IsDropped()) {
auto& ttlSettings = versionInfo.GetTtlSettings();
if (ttlSettings.HasEnabled()) {
auto vIt = lastVersion.find(pathId);
if (vIt == lastVersion.end()) {
vIt = lastVersion.emplace(pathId, version).first;
}
if (vIt->second <= version) {
auto vIt = lastVersion.find(pathId);
if (vIt == lastVersion.end()) {
vIt = lastVersion.emplace(pathId, version).first;
}
if (vIt->second <= version) {
if (ttlSettings.HasEnabled()) {
TTtl::TDescription description(ttlSettings.GetEnabled());
Ttl.SetPathTtl(pathId, std::move(description));
vIt->second = version;
} else {
Ttl.DropPathTtl(pathId);
}
vIt->second = version;
}
}
table.AddVersion(version);
Expand Down

0 comments on commit 73759b6

Please sign in to comment.