aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkungasc <kungasc@yandex-team.com>2023-09-27 13:07:12 +0300
committerkungasc <kungasc@yandex-team.com>2023-09-27 13:40:14 +0300
commitcc271cdcd8792ac27caefcbe45c7349ccd5b5765 (patch)
treeb046182938710b14dd3c65765525d4a32bf73f51
parent8ab67a498f8ce3c89b63b3683c039b52a6de8848 (diff)
downloadydb-cc271cdcd8792ac27caefcbe45c7349ccd5b5765.tar.gz
KIKIMR-19139 Load index in Dump
-rw-r--r--ydb/core/tablet_flat/flat_part_dump.cpp58
-rw-r--r--ydb/core/tablet_flat/flat_part_index_iter.h8
-rw-r--r--ydb/core/tablet_flat/flat_table.h2
3 files changed, 48 insertions, 20 deletions
diff --git a/ydb/core/tablet_flat/flat_part_dump.cpp b/ydb/core/tablet_flat/flat_part_dump.cpp
index 45652216204..cb710af7e30 100644
--- a/ydb/core/tablet_flat/flat_part_dump.cpp
+++ b/ydb/core/tablet_flat/flat_part_dump.cpp
@@ -1,6 +1,6 @@
#include "flat_part_dump.h"
#include "flat_part_iface.h"
-#include "flat_page_index.h"
+#include "flat_part_index_iter.h"
#include "flat_page_data.h"
#include "flat_page_frames.h"
#include "flat_page_blobs.h"
@@ -51,10 +51,20 @@ namespace {
Index(part, depth);
if (depth > 2) {
- for (auto iter = part.Index->Begin(); iter; ++iter) {
+ auto index = TPartIndexIt(&part, Env, { });
+
+ for (ssize_t i = 0; ; i++) {
+ auto ready = i == 0 ? index.Seek(0) : index.Next();
+ if (ready != EReady::Data) {
+ if (ready == EReady::Page) {
+ Out << " | -- the rest of the index rows aren't loaded" << Endl;
+ }
+ break;
+ }
+
Out << Endl;
- DataPage(part, iter->GetPageId());
+ DataPage(part, index.GetPageId());
}
}
}
@@ -90,15 +100,21 @@ namespace {
{
Key.reserve(part.Scheme->Groups[0].KeyTypes.size());
- auto label = part.Index.Label();
-
- const auto items = (part.Index->End() - part.Index->Begin() + 1);
+ auto index = TPartIndexIt(&part, Env, { });
+ auto label = index.TryGetLabel();
- Out
- << " + Index{" << (ui16)label.Type << " rev "
- << label.Format << ", " << label.Size << "b}"
- << " " << items << " rec" << Endl
- << " | Page Row Bytes (";
+ if (label) {
+ Out
+ << " + Index{" << (ui16)label->Type << " rev "
+ << label->Format << ", " << label->Size << "b}"
+ << Endl
+ << " | Page Row Bytes (";
+ } else {
+ Out
+ << " + Index{unknown}"
+ << Endl
+ << " | Page Row Bytes (";
+ }
for (auto off : xrange(part.Scheme->Groups[0].KeyTypes.size())) {
Out << (off ? ", " : "");
@@ -108,20 +124,24 @@ namespace {
Out << ")" << Endl;
- ssize_t seen = 0;
-
- for (ssize_t i = 0; i < items; i++) {
+ for (ssize_t i = 0; ; i++) {
Key.clear();
- if (depth < 2 && (seen += 1) > 10) {
- Out
- << " | -- skipped " << (items - Min(items, seen - 1))
- << " entries, depth level " << depth << Endl;
+ if (depth < 2 && i >= 10) {
+ Out << " | -- skipped the rest entries, depth level " << depth << Endl;
+ break;
+ }
+ // prints without LastKeyRecord, but it seems ok for now
+ auto ready = i == 0 ? index.Seek(0) : index.Next();
+ if (ready != EReady::Data) {
+ if (ready == EReady::Page) {
+ Out << " | -- the rest of the index rows aren't loaded" << Endl;
+ }
break;
}
- auto record = part.Index.At(i);
+ auto record = index.GetRecord();
for (const auto &info: part.Scheme->Groups[0].ColsKeyIdx)
Key.push_back(record->Cell(info));
diff --git a/ydb/core/tablet_flat/flat_part_index_iter.h b/ydb/core/tablet_flat/flat_part_index_iter.h
index 23e133a3575..07e886e497b 100644
--- a/ydb/core/tablet_flat/flat_part_index_iter.h
+++ b/ydb/core/tablet_flat/flat_part_index_iter.h
@@ -98,6 +98,14 @@ public:
return TryGetIndex();
}
+ std::optional<NPage::TLabel> TryGetLabel() {
+ auto index = TryGetIndex();
+ if (!index) {
+ return { };
+ }
+ return index->Label();
+ }
+
public:
TRowId GetEndRowId() const {
return EndRowId;
diff --git a/ydb/core/tablet_flat/flat_table.h b/ydb/core/tablet_flat/flat_table.h
index 71fd8ffdb30..0b0cf796393 100644
--- a/ydb/core/tablet_flat/flat_table.h
+++ b/ydb/core/tablet_flat/flat_table.h
@@ -303,7 +303,7 @@ public:
for (const auto& flat : Flatten) {
if (const TPartView &partView = flat.second) {
size += partView->DataSize();
- rows += partView->Index.Rows();
+ rows += partView.Part->Stat.Rows;
}
}