Skip to content

TRowVersion -> TSnapshot #921

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ydb/core/tx/columnshard/columnshard.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ ui64 TColumnShard::MemoryUsage() const {
CommitsInFlight.size() * sizeof(TCommitMeta) +
LongTxWrites.size() * (sizeof(TWriteId) + sizeof(TLongTxWriteInfo)) +
LongTxWritesByUniqueId.size() * (sizeof(TULID) + sizeof(void*)) +
(WaitingReads.size() + WaitingScans.size()) * (sizeof(TRowVersion) + sizeof(void*)) +
(WaitingReads.size() + WaitingScans.size()) * (sizeof(NOlap::TSnapshot) + sizeof(void*)) +
TabletCounters->Simple()[COUNTER_PREPARED_RECORDS].Get() * sizeof(NOlap::TInsertedData) +
TabletCounters->Simple()[COUNTER_COMMITTED_RECORDS].Get() * sizeof(NOlap::TInsertedData);
memory += TablesManager.GetMemoryUsage();
Expand Down
2 changes: 1 addition & 1 deletion ydb/core/tx/columnshard/columnshard__progress_tx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ class TColumnShard::TTxProgressTx : public TTransactionBase<TColumnShard> {
case NKikimrTxColumnShard::TX_KIND_SCHEMA:
{
auto& meta = Self->AltersInFlight.at(txId);
Self->RunSchemaTx(meta.Body, TRowVersion(step, txId), txc);
Self->RunSchemaTx(meta.Body, NOlap::TSnapshot(step, txId), txc);
Self->ProtectSchemaSeqNo(meta.Body.GetSeqNo(), txc);
for (TActorId subscriber : meta.NotifySubscribers) {
TxEvents.emplace_back(subscriber, 0,
Expand Down
6 changes: 3 additions & 3 deletions ydb/core/tx/columnshard/columnshard__read.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -149,13 +149,13 @@ void TColumnShard::Handle(TEvColumnShard::TEvRead::TPtr& ev, const TActorContext
LastAccessTime = TAppData::TimeProvider->Now();

const auto* msg = ev->Get();
TRowVersion readVersion(msg->Record.GetPlanStep(), msg->Record.GetTxId());
TRowVersion maxReadVersion = GetMaxReadVersion();
NOlap::TSnapshot readVersion(msg->Record.GetPlanStep(), msg->Record.GetTxId());
NOlap::TSnapshot maxReadVersion = GetMaxReadVersion();
LOG_S_DEBUG("Read at tablet " << TabletID() << " version=" << readVersion << " readable=" << maxReadVersion);

if (maxReadVersion < readVersion) {
WaitingReads.emplace(readVersion, std::move(ev));
WaitPlanStep(readVersion.Step);
WaitPlanStep(readVersion.GetPlanStep());
return;
}

Expand Down
6 changes: 3 additions & 3 deletions ydb/core/tx/columnshard/columnshard__scan.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -878,8 +878,8 @@ void TColumnShard::Handle(TEvColumnShard::TEvScan::TPtr& ev, const TActorContext
const auto& scanId = record.GetScanId();
const auto& snapshot = record.GetSnapshot();

TRowVersion readVersion(snapshot.GetStep(), snapshot.GetTxId());
TRowVersion maxReadVersion = GetMaxReadVersion();
NOlap::TSnapshot readVersion(snapshot.GetStep(), snapshot.GetTxId());
NOlap::TSnapshot maxReadVersion = GetMaxReadVersion();

LOG_S_DEBUG("EvScan txId: " << txId
<< " scanId: " << scanId
Expand All @@ -889,7 +889,7 @@ void TColumnShard::Handle(TEvColumnShard::TEvScan::TPtr& ev, const TActorContext

if (maxReadVersion < readVersion) {
WaitingScans.emplace(readVersion, std::move(ev));
WaitPlanStep(readVersion.Step);
WaitPlanStep(readVersion.GetPlanStep());
return;
}

Expand Down
25 changes: 13 additions & 12 deletions ydb/core/tx/columnshard/columnshard_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -256,18 +256,18 @@ void TColumnShard::SendWaitPlanStep(ui64 step) {

void TColumnShard::RescheduleWaitingReads() {
ui64 minWaitingStep = Max<ui64>();
TRowVersion maxReadVersion = GetMaxReadVersion();
NOlap::TSnapshot maxReadVersion = GetMaxReadVersion();
for (auto it = WaitingReads.begin(); it != WaitingReads.end();) {
if (maxReadVersion < it->first) {
minWaitingStep = Min(minWaitingStep, it->first.Step);
minWaitingStep = Min(minWaitingStep, it->first.GetPlanStep());
break;
}
TActivationContext::Send(it->second.Release());
it = WaitingReads.erase(it);
}
for (auto it = WaitingScans.begin(); it != WaitingScans.end();) {
if (maxReadVersion < it->first) {
minWaitingStep = Min(minWaitingStep, it->first.Step);
minWaitingStep = Min(minWaitingStep, it->first.GetPlanStep());
break;
}
TActivationContext::Send(it->second.Release());
Expand All @@ -278,18 +278,19 @@ void TColumnShard::RescheduleWaitingReads() {
}
}

TRowVersion TColumnShard::GetMaxReadVersion() const {
NOlap::TSnapshot TColumnShard::GetMaxReadVersion() const {
auto plannedTx = ProgressTxController->GetPlannedTx();
if (plannedTx) {
// We may only read just before the first transaction in the queue
return TRowVersion(plannedTx->Step, plannedTx->TxId).Prev();
auto maxReadVersion = TRowVersion(plannedTx->Step, plannedTx->TxId).Prev();
return NOlap::TSnapshot(maxReadVersion.Step, maxReadVersion.TxId);
}
ui64 step = LastPlannedStep;
if (MediatorTimeCastEntry) {
ui64 mediatorStep = MediatorTimeCastEntry->Get(TabletID());
step = Max(step, mediatorStep);
}
return TRowVersion(step, Max<ui64>());
return NOlap::TSnapshot(step, Max<ui64>());
}

ui64 TColumnShard::GetOutdatedStep() const {
Expand Down Expand Up @@ -450,7 +451,7 @@ void TColumnShard::ProtectSchemaSeqNo(const NKikimrTxColumnShard::TSchemaSeqNo&
}
}

void TColumnShard::RunSchemaTx(const NKikimrTxColumnShard::TSchemaTxBody& body, const TRowVersion& version,
void TColumnShard::RunSchemaTx(const NKikimrTxColumnShard::TSchemaTxBody& body, const NOlap::TSnapshot& version,
NTabletFlatExecutor::TTransactionContext& txc) {
switch (body.TxBody_case()) {
case NKikimrTxColumnShard::TSchemaTxBody::kInitShard: {
Expand Down Expand Up @@ -483,7 +484,7 @@ void TColumnShard::RunSchemaTx(const NKikimrTxColumnShard::TSchemaTxBody& body,
Y_ABORT("Unsupported schema tx type");
}

void TColumnShard::RunInit(const NKikimrTxColumnShard::TInitShard& proto, const TRowVersion& version,
void TColumnShard::RunInit(const NKikimrTxColumnShard::TInitShard& proto, const NOlap::TSnapshot& version,
NTabletFlatExecutor::TTransactionContext& txc) {
Y_UNUSED(version);

Expand All @@ -504,7 +505,7 @@ void TColumnShard::RunInit(const NKikimrTxColumnShard::TInitShard& proto, const
}
}

void TColumnShard::RunEnsureTable(const NKikimrTxColumnShard::TCreateTable& tableProto, const TRowVersion& version,
void TColumnShard::RunEnsureTable(const NKikimrTxColumnShard::TCreateTable& tableProto, const NOlap::TSnapshot& version,
NTabletFlatExecutor::TTransactionContext& txc) {
NIceDb::TNiceDb db(txc.DB);

Expand Down Expand Up @@ -560,7 +561,7 @@ void TColumnShard::RunEnsureTable(const NKikimrTxColumnShard::TCreateTable& tabl
SetCounter(COUNTER_TABLE_TTLS, TablesManager.GetTtl().PathsCount());
}

void TColumnShard::RunAlterTable(const NKikimrTxColumnShard::TAlterTable& alterProto, const TRowVersion& version,
void TColumnShard::RunAlterTable(const NKikimrTxColumnShard::TAlterTable& alterProto, const NOlap::TSnapshot& version,
NTabletFlatExecutor::TTransactionContext& txc) {
NIceDb::TNiceDb db(txc.DB);

Expand Down Expand Up @@ -593,7 +594,7 @@ void TColumnShard::RunAlterTable(const NKikimrTxColumnShard::TAlterTable& alterP
TablesManager.AddTableVersion(pathId, version, tableVerProto, db);
}

void TColumnShard::RunDropTable(const NKikimrTxColumnShard::TDropTable& dropProto, const TRowVersion& version,
void TColumnShard::RunDropTable(const NKikimrTxColumnShard::TDropTable& dropProto, const NOlap::TSnapshot& version,
NTabletFlatExecutor::TTransactionContext& txc) {
NIceDb::TNiceDb db(txc.DB);

Expand All @@ -614,7 +615,7 @@ void TColumnShard::RunDropTable(const NKikimrTxColumnShard::TDropTable& dropProt
TryAbortWrites(db, dbTable, std::move(writesToAbort));
}

void TColumnShard::RunAlterStore(const NKikimrTxColumnShard::TAlterStore& proto, const TRowVersion& version,
void TColumnShard::RunAlterStore(const NKikimrTxColumnShard::TAlterStore& proto, const NOlap::TSnapshot& version,
NTabletFlatExecutor::TTransactionContext& txc) {
NIceDb::TNiceDb db(txc.DB);

Expand Down
19 changes: 9 additions & 10 deletions ydb/core/tx/columnshard/columnshard_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -428,8 +428,8 @@ class TColumnShard
THashMap<TWriteId, TLongTxWriteInfo> LongTxWrites;
using TPartsForLTXShard = THashMap<ui32, TLongTxWriteInfo*>;
THashMap<TULID, TPartsForLTXShard> LongTxWritesByUniqueId;
TMultiMap<TRowVersion, TEvColumnShard::TEvRead::TPtr> WaitingReads;
TMultiMap<TRowVersion, TEvColumnShard::TEvScan::TPtr> WaitingScans;
TMultiMap<NOlap::TSnapshot, TEvColumnShard::TEvRead::TPtr> WaitingReads;
TMultiMap<NOlap::TSnapshot, TEvColumnShard::TEvScan::TPtr> WaitingScans;
TBackgroundController BackgroundController;
TSettings Settings;
TLimits Limits;
Expand All @@ -442,7 +442,7 @@ class TColumnShard
bool WaitPlanStep(ui64 step);
void SendWaitPlanStep(ui64 step);
void RescheduleWaitingReads();
TRowVersion GetMaxReadVersion() const;
NOlap::TSnapshot GetMaxReadVersion() const;
ui64 GetMinReadStep() const;
ui64 GetOutdatedStep() const;

Expand All @@ -465,12 +465,12 @@ class TColumnShard
void UpdateSchemaSeqNo(const TMessageSeqNo& seqNo, NTabletFlatExecutor::TTransactionContext& txc);
void ProtectSchemaSeqNo(const NKikimrTxColumnShard::TSchemaSeqNo& seqNoProto, NTabletFlatExecutor::TTransactionContext& txc);

void RunSchemaTx(const NKikimrTxColumnShard::TSchemaTxBody& body, const TRowVersion& version, NTabletFlatExecutor::TTransactionContext& txc);
void RunInit(const NKikimrTxColumnShard::TInitShard& body, const TRowVersion& version, NTabletFlatExecutor::TTransactionContext& txc);
void RunEnsureTable(const NKikimrTxColumnShard::TCreateTable& body, const TRowVersion& version, NTabletFlatExecutor::TTransactionContext& txc);
void RunAlterTable(const NKikimrTxColumnShard::TAlterTable& body, const TRowVersion& version, NTabletFlatExecutor::TTransactionContext& txc);
void RunDropTable(const NKikimrTxColumnShard::TDropTable& body, const TRowVersion& version, NTabletFlatExecutor::TTransactionContext& txc);
void RunAlterStore(const NKikimrTxColumnShard::TAlterStore& body, const TRowVersion& version, NTabletFlatExecutor::TTransactionContext& txc);
void RunSchemaTx(const NKikimrTxColumnShard::TSchemaTxBody& body, const NOlap::TSnapshot& version, NTabletFlatExecutor::TTransactionContext& txc);
void RunInit(const NKikimrTxColumnShard::TInitShard& body, const NOlap::TSnapshot& version, NTabletFlatExecutor::TTransactionContext& txc);
void RunEnsureTable(const NKikimrTxColumnShard::TCreateTable& body, const NOlap::TSnapshot& version, NTabletFlatExecutor::TTransactionContext& txc);
void RunAlterTable(const NKikimrTxColumnShard::TAlterTable& body, const NOlap::TSnapshot& version, NTabletFlatExecutor::TTransactionContext& txc);
void RunDropTable(const NKikimrTxColumnShard::TDropTable& body, const NOlap::TSnapshot& version, NTabletFlatExecutor::TTransactionContext& txc);
void RunAlterStore(const NKikimrTxColumnShard::TAlterStore& body, const NOlap::TSnapshot& version, NTabletFlatExecutor::TTransactionContext& txc);

void StartIndexTask(std::vector<const NOlap::TInsertedData*>&& dataToIndex, const i64 bytesToIndex);
void SetupIndexation();
Expand All @@ -493,7 +493,6 @@ class TColumnShard

static TDuration GetControllerPeriodicWakeupActivationPeriod();
static TDuration GetControllerStatsReportInterval();

public:
const std::shared_ptr<NOlap::IStoragesManager>& GetStoragesManager() const {
return StoragesManager;
Expand Down
22 changes: 11 additions & 11 deletions ydb/core/tx/columnshard/columnshard_schema.h
Original file line number Diff line number Diff line change
Expand Up @@ -392,23 +392,23 @@ struct Schema : NIceDb::Schema {

static void SaveSchemaPresetVersionInfo(
NIceDb::TNiceDb& db,
ui64 id, const TRowVersion& version,
ui64 id, const NOlap::TSnapshot& version,
const NKikimrTxColumnShard::TSchemaPresetVersionInfo& info)
{
TString serialized;
Y_ABORT_UNLESS(info.SerializeToString(&serialized));
db.Table<SchemaPresetVersionInfo>().Key(id, version.Step, version.TxId).Update(
db.Table<SchemaPresetVersionInfo>().Key(id, version.GetPlanStep(), version.GetTxId()).Update(
NIceDb::TUpdate<SchemaPresetVersionInfo::InfoProto>(serialized));
}

static void SaveSchemaPresetDropVersion(NIceDb::TNiceDb& db, ui64 id, const TRowVersion& dropVersion) {
static void SaveSchemaPresetDropVersion(NIceDb::TNiceDb& db, ui64 id, const NOlap::TSnapshot& dropVersion) {
db.Table<SchemaPresetInfo>().Key(id).Update(
NIceDb::TUpdate<SchemaPresetInfo::DropStep>(dropVersion.Step),
NIceDb::TUpdate<SchemaPresetInfo::DropTxId>(dropVersion.TxId));
NIceDb::TUpdate<SchemaPresetInfo::DropStep>(dropVersion.GetPlanStep()),
NIceDb::TUpdate<SchemaPresetInfo::DropTxId>(dropVersion.GetTxId()));
}

static void EraseSchemaPresetVersionInfo(NIceDb::TNiceDb& db, ui64 id, const TRowVersion& version) {
db.Table<SchemaPresetVersionInfo>().Key(id, version.Step, version.TxId).Delete();
static void EraseSchemaPresetVersionInfo(NIceDb::TNiceDb& db, ui64 id, const NOlap::TSnapshot& version) {
db.Table<SchemaPresetVersionInfo>().Key(id, version.GetPlanStep(), version.GetTxId()).Delete();
}

static void EraseSchemaPresetInfo(NIceDb::TNiceDb& db, ui64 id) {
Expand All @@ -424,12 +424,12 @@ struct Schema : NIceDb::Schema {

static void SaveTableVersionInfo(
NIceDb::TNiceDb& db,
ui64 pathId, const TRowVersion& version,
ui64 pathId, const NOlap::TSnapshot& version,
const NKikimrTxColumnShard::TTableVersionInfo& info)
{
TString serialized;
Y_ABORT_UNLESS(info.SerializeToString(&serialized));
db.Table<TableVersionInfo>().Key(pathId, version.Step, version.TxId).Update(
db.Table<TableVersionInfo>().Key(pathId, version.GetPlanStep(), version.GetTxId()).Update(
NIceDb::TUpdate<TableVersionInfo::InfoProto>(serialized));
}

Expand All @@ -441,8 +441,8 @@ struct Schema : NIceDb::Schema {
NIceDb::TUpdate<TableInfo::DropTxId>(dropTxId));
}

static void EraseTableVersionInfo(NIceDb::TNiceDb& db, ui64 pathId, const TRowVersion& version) {
db.Table<TableVersionInfo>().Key(pathId, version.Step, version.TxId).Delete();
static void EraseTableVersionInfo(NIceDb::TNiceDb& db, ui64 pathId, const NOlap::TSnapshot& version) {
db.Table<TableVersionInfo>().Key(pathId, version.GetPlanStep(), version.GetTxId()).Delete();
}

static void EraseTableInfo(NIceDb::TNiceDb& db, ui64 pathId) {
Expand Down
32 changes: 16 additions & 16 deletions ydb/core/tx/columnshard/tables_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,13 +95,13 @@ bool TTablesManager::InitFromDB(NIceDb::TNiceDb& db) {
return false;
}

THashMap<ui64, TRowVersion> lastVersion;
THashMap<ui64, NOlap::TSnapshot> lastVersion;
while (!rowset.EndOfSet()) {
const ui64 pathId = rowset.GetValue<Schema::TableVersionInfo::PathId>();
Y_ABORT_UNLESS(Tables.contains(pathId));
TRowVersion version(
NOlap::TSnapshot version(
rowset.GetValue<Schema::TableVersionInfo::SinceStep>(),
rowset.GetValue<Schema::TableVersionInfo::SinceTxId>());
rowset.GetValue<Schema::TableVersionInfo::SinceTxId>());

auto& table = Tables.at(pathId);
TTableInfo::TTableVersionInfo versionInfo;
Expand All @@ -112,10 +112,11 @@ bool TTablesManager::InitFromDB(NIceDb::TNiceDb& db) {
if (!table.IsDropped()) {
auto& ttlSettings = versionInfo.GetTtlSettings();
if (ttlSettings.HasEnabled()) {
if (!lastVersion.contains(pathId) || lastVersion[pathId] < version) {
auto vIt = lastVersion.find(pathId);
if (vIt == lastVersion.end() || vIt->second < version) {
TTtl::TDescription description(ttlSettings.GetEnabled());
Ttl.SetPathTtl(pathId, std::move(description));
lastVersion[pathId] = version;
lastVersion.emplace(pathId, version);
}
}
}
Expand All @@ -136,7 +137,7 @@ bool TTablesManager::InitFromDB(NIceDb::TNiceDb& db) {
const ui32 id = rowset.GetValue<Schema::SchemaPresetVersionInfo::Id>();
Y_ABORT_UNLESS(SchemaPresets.contains(id));
auto& preset = SchemaPresets.at(id);
TRowVersion version(
NOlap::TSnapshot version(
rowset.GetValue<Schema::SchemaPresetVersionInfo::SinceStep>(),
rowset.GetValue<Schema::SchemaPresetVersionInfo::SinceTxId>());

Expand Down Expand Up @@ -208,18 +209,18 @@ ui64 TTablesManager::GetMemoryUsage() const {
return memory;
}

void TTablesManager::DropTable(const ui64 pathId, const TRowVersion& version, NIceDb::TNiceDb& db) {
void TTablesManager::DropTable(const ui64 pathId, const NOlap::TSnapshot& version, NIceDb::TNiceDb& db) {
auto& table = Tables.at(pathId);
table.SetDropVersion(version);
PathsToDrop.insert(pathId);
Ttl.DropPathTtl(pathId);
if (PrimaryIndex) {
PrimaryIndex->OnTieringModified(nullptr, Ttl);
}
Schema::SaveTableDropVersion(db, pathId, version.Step, version.TxId);
Schema::SaveTableDropVersion(db, pathId, version.GetPlanStep(), version.GetTxId());
}

void TTablesManager::DropPreset(const ui32 presetId, const TRowVersion& version, NIceDb::TNiceDb& db) {
void TTablesManager::DropPreset(const ui32 presetId, const NOlap::TSnapshot& version, NIceDb::TNiceDb& db) {
auto& preset = SchemaPresets.at(presetId);
Y_ABORT_UNLESS(preset.GetName() != "default", "Cannot drop the default preset");
preset.SetDropVersion(version);
Expand Down Expand Up @@ -247,14 +248,14 @@ bool TTablesManager::RegisterSchemaPreset(const TSchemaPreset& schemaPreset, NIc
return true;
}

void TTablesManager::AddSchemaVersion(const ui32 presetId, const TRowVersion& version, const NKikimrSchemeOp::TColumnTableSchema& schema, NIceDb::TNiceDb& db) {
void TTablesManager::AddSchemaVersion(const ui32 presetId, const NOlap::TSnapshot& version, const NKikimrSchemeOp::TColumnTableSchema& schema, NIceDb::TNiceDb& db) {
Y_ABORT_UNLESS(SchemaPresets.contains(presetId));
auto preset = SchemaPresets.at(presetId);

TSchemaPreset::TSchemaPresetVersionInfo versionInfo;
versionInfo.SetId(presetId);
versionInfo.SetSinceStep(version.Step);
versionInfo.SetSinceTxId(version.TxId);
versionInfo.SetSinceStep(version.GetPlanStep());
versionInfo.SetSinceTxId(version.GetTxId());
*versionInfo.MutableSchema() = schema;

auto& schemaPreset = SchemaPresets.at(presetId);
Expand All @@ -268,7 +269,7 @@ void TTablesManager::AddSchemaVersion(const ui32 presetId, const TRowVersion& ve
}
}

void TTablesManager::AddTableVersion(const ui64 pathId, const TRowVersion& version, const TTableInfo::TTableVersionInfo& versionInfo, NIceDb::TNiceDb& db) {
void TTablesManager::AddTableVersion(const ui64 pathId, const NOlap::TSnapshot& version, const TTableInfo::TTableVersionInfo& versionInfo, NIceDb::TNiceDb& db) {
auto& table = Tables.at(pathId);

if (versionInfo.HasSchemaPresetId()) {
Expand Down Expand Up @@ -300,8 +301,7 @@ void TTablesManager::AddTableVersion(const ui64 pathId, const TRowVersion& versi
table.AddVersion(version, versionInfo);
}

void TTablesManager::IndexSchemaVersion(const TRowVersion& version, const NKikimrSchemeOp::TColumnTableSchema& schema) {
NOlap::TSnapshot snapshot{version.Step, version.TxId};
void TTablesManager::IndexSchemaVersion(const NOlap::TSnapshot& snapshot, const NKikimrSchemeOp::TColumnTableSchema& schema) {
NOlap::TIndexInfo indexInfo = DeserializeIndexInfoFromProto(schema);
indexInfo.SetAllKeys();
const bool isFirstPrimaryIndexInitialization = !PrimaryIndex;
Expand Down Expand Up @@ -341,7 +341,7 @@ bool TTablesManager::TryFinalizeDropPath(NTabletFlatExecutor::TTransactionContex
NIceDb::TNiceDb db(txc.DB);
NColumnShard::Schema::EraseTableInfo(db, pathId);
const auto& table = Tables.find(pathId);
Y_ABORT_UNLESS(table != Tables.end(), "No schema for path %lu", pathId);
Y_ABORT_UNLESS(table != Tables.end(), "No schema for path %lu", pathId);
for (auto&& tableVersion : table->second.GetVersions()) {
NColumnShard::Schema::EraseTableVersionInfo(db, pathId, tableVersion.first);
}
Expand Down
Loading