From f80aaa7904e43c1e26a131b6cf04e8fb1713a711 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Thu, 20 Sep 2018 15:56:46 -0700 Subject: [PATCH] ircd::db: Add util to get file list for specific column. --- include/ircd/db/column.h | 1 + ircd/db.cc | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/include/ircd/db/column.h b/include/ircd/db/column.h index c0b194309..c72b3eef8 100644 --- a/include/ircd/db/column.h +++ b/include/ircd/db/column.h @@ -19,6 +19,7 @@ namespace ircd::db uint32_t id(const column &); const std::string &name(const column &); const descriptor &describe(const column &); + std::vector files(const column &); size_t file_count(const column &); size_t bytes(const column &); diff --git a/ircd/db.cc b/ircd/db.cc index faa7e577d..fc29d328b 100644 --- a/ircd/db.cc +++ b/ircd/db.cc @@ -7324,6 +7324,28 @@ ircd::db::describe(const column &column) return describe(c); } +std::vector +ircd::db::files(const column &column) +{ + database::column &c(const_cast(column)); + database &d(*c.d); + + rocksdb::ColumnFamilyMetaData cfmd; + d.d->GetColumnFamilyMetaData(c, &cfmd); + + size_t count(0); + for(const auto &level : cfmd.levels) + count += level.files.size(); + + std::vector ret; + ret.reserve(count); + for(auto &level : cfmd.levels) + for(auto &file : level.files) + ret.emplace_back(std::move(file.name)); + + return ret; +} + void ircd::db::sort(column &column, const bool &blocking)