Skip to content

Commit e546733

Browse files
speed up column ids checkers and finder (#8906)
1 parent b51e0c4 commit e546733

File tree

2 files changed

+19
-12
lines changed

2 files changed

+19
-12
lines changed

ydb/core/tx/columnshard/engines/portions/portion_info.h

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -338,22 +338,29 @@ class TPortionInfo {
338338
}
339339

340340
const TColumnRecord* GetRecordPointer(const TChunkAddress& address) const {
341-
for (auto&& i : Records) {
342-
if (i.GetAddress() == address) {
343-
return &i;
344-
}
341+
auto it = std::lower_bound(Records.begin(), Records.end(), address, [](const TColumnRecord& item, const TChunkAddress& address) {
342+
return item.GetAddress() < address;
343+
});
344+
if (it != Records.end() && it->GetAddress() == address) {
345+
return &*it;
345346
}
346347
return nullptr;
347348
}
348349

349350
bool HasEntityAddress(const TChunkAddress& address) const {
350-
for (auto&& c : GetRecords()) {
351-
if (c.GetAddress() == address) {
351+
{
352+
auto it = std::lower_bound(Records.begin(), Records.end(), address, [](const TColumnRecord& item, const TChunkAddress& address) {
353+
return item.GetAddress() < address;
354+
});
355+
if (it != Records.end() && it->GetAddress() == address) {
352356
return true;
353357
}
354358
}
355-
for (auto&& c : GetIndexes()) {
356-
if (c.GetAddress() == address) {
359+
{
360+
auto it = std::lower_bound(Indexes.begin(), Indexes.end(), address, [](const TIndexChunk& item, const TChunkAddress& address) {
361+
return item.GetAddress() < address;
362+
});
363+
if (it != Indexes.end() && it->GetAddress() == address) {
357364
return true;
358365
}
359366
}

ydb/core/tx/columnshard/engines/scheme/versions/filtered_scheme.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ TFilteredSnapshotSchema::TFilteredSnapshotSchema(const ISnapshotSchema::TPtr& or
2121
}
2222

2323
TColumnSaver TFilteredSnapshotSchema::GetColumnSaver(const ui32 columnId) const {
24-
AFL_VERIFY(std::find(ColumnIds.begin(), ColumnIds.end(), columnId) != ColumnIds.end());
24+
AFL_VERIFY(IdIntoIndex.contains(columnId));
2525
return OriginalSnapshot->GetColumnSaver(columnId);
2626
}
2727

2828
std::shared_ptr<TColumnLoader> TFilteredSnapshotSchema::GetColumnLoaderOptional(const ui32 columnId) const {
29-
AFL_VERIFY(std::find(ColumnIds.begin(), ColumnIds.end(), columnId) != ColumnIds.end());
29+
AFL_VERIFY(IdIntoIndex.contains(columnId));
3030
return OriginalSnapshot->GetColumnLoaderOptional(columnId);
3131
}
3232

@@ -35,15 +35,15 @@ std::optional<ui32> TFilteredSnapshotSchema::GetColumnIdOptional(const std::stri
3535
if (!result) {
3636
return result;
3737
}
38-
if (std::find(ColumnIds.begin(), ColumnIds.end(), *result) == ColumnIds.end()) {
38+
if (!IdIntoIndex.contains(*result)) {
3939
return std::nullopt;
4040
}
4141
return result;
4242
}
4343

4444
ui32 TFilteredSnapshotSchema::GetColumnIdVerified(const std::string& columnName) const {
4545
auto result = OriginalSnapshot->GetColumnIdVerified(columnName);
46-
AFL_VERIFY(std::find(ColumnIds.begin(), ColumnIds.end(), result) != ColumnIds.end());
46+
AFL_VERIFY(IdIntoIndex.contains(result));
4747
return result;
4848
}
4949

0 commit comments

Comments
 (0)