ensure you can export a version 0 DB using a new binary

This commit is contained in:
Doug Hoyte
2023-02-09 04:31:31 -05:00
parent cdb25aed45
commit 3d4b8853f1
11 changed files with 44 additions and 28 deletions

View File

@ -24,12 +24,23 @@ void cmd_export(const std::vector<std::string> &subArgs) {
auto txn = env.txn_ro();
env.generic_foreachFull(txn, env.dbi_Event__createdAt, lmdb::to_sv<uint64_t>(since), lmdb::to_sv<uint64_t>(0), [&](auto k, auto v) {
auto dbVersion = getDBVersion(txn);
auto qdb = getQdbInstance(txn);
env.generic_foreachFull(txn, env.dbi_Event__created_at, lmdb::to_sv<uint64_t>(since), lmdb::to_sv<uint64_t>(0), [&](auto k, auto v) {
if (lmdb::from_sv<uint64_t>(k) > until) return false;
auto view = env.lookup_Event(txn, lmdb::from_sv<uint64_t>(v));
if (!view) throw herr("missing event from index, corrupt DB?");
if (dbVersion == 0) {
std::string_view raw;
bool found = qdb.dbi_nodesLeaf.get(txn, lmdb::to_sv<uint64_t>(view->primaryKeyId), raw);
if (!found) throw herr("couldn't find leaf node in quadrable, corrupted DB?");
std::cout << raw.substr(8 + 32 + 32) << "\n";
return true;
}
if (!args["--include-ephemeral"].asBool()) {
if (isEphemeralEvent(view->flat_nested()->kind())) return true;
}