mirror of
https://github.com/matrix-construct/construct
synced 2024-10-01 21:28:53 +02:00
ircd::db: Rename txn to iov.
This commit is contained in:
parent
fb026f58a7
commit
c50461c4c6
3 changed files with 77 additions and 77 deletions
|
@ -122,7 +122,7 @@ enum class ircd::db::pos
|
||||||
#include "db/row.h"
|
#include "db/row.h"
|
||||||
#include "db/index.h"
|
#include "db/index.h"
|
||||||
#include "db/json.h"
|
#include "db/json.h"
|
||||||
#include "db/txn.h"
|
#include "db/iov.h"
|
||||||
#include "db/where.h"
|
#include "db/where.h"
|
||||||
#include "db/cursor.h"
|
#include "db/cursor.h"
|
||||||
|
|
||||||
|
|
|
@ -21,27 +21,27 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
#define HAVE_IRCD_DB_TXN_H
|
#define HAVE_IRCD_DB_IOV_H
|
||||||
|
|
||||||
namespace ircd::db
|
namespace ircd::db
|
||||||
{
|
{
|
||||||
struct txn;
|
struct iov;
|
||||||
|
|
||||||
bool until(const txn &, const std::function<bool (const delta &)> &);
|
bool until(const iov &, const std::function<bool (const delta &)> &);
|
||||||
void for_each(const txn &, const std::function<void (const delta &)> &);
|
void for_each(const iov &, const std::function<void (const delta &)> &);
|
||||||
std::string debug(const txn &);
|
std::string debug(const iov &);
|
||||||
}
|
}
|
||||||
|
|
||||||
class ircd::db::txn
|
class ircd::db::iov
|
||||||
{
|
{
|
||||||
database *d {nullptr};
|
database *d {nullptr};
|
||||||
std::unique_ptr<rocksdb::WriteBatch> wb;
|
std::unique_ptr<rocksdb::WriteBatch> wb;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
struct opts;
|
struct opts;
|
||||||
|
struct checkpoint;
|
||||||
struct append;
|
struct append;
|
||||||
struct handler;
|
struct handler;
|
||||||
struct checkpoint;
|
|
||||||
|
|
||||||
explicit operator const rocksdb::WriteBatch &() const;
|
explicit operator const rocksdb::WriteBatch &() const;
|
||||||
explicit operator const database &() const;
|
explicit operator const database &() const;
|
||||||
|
@ -67,31 +67,31 @@ class ircd::db::txn
|
||||||
// clear
|
// clear
|
||||||
void clear();
|
void clear();
|
||||||
|
|
||||||
txn() = default;
|
iov() = default;
|
||||||
txn(database &);
|
iov(database &);
|
||||||
txn(database &, const opts &);
|
iov(database &, const opts &);
|
||||||
~txn() noexcept;
|
~iov() noexcept;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ircd::db::txn::checkpoint
|
struct ircd::db::iov::append
|
||||||
{
|
{
|
||||||
txn &t;
|
append(iov &, database &, const delta &);
|
||||||
|
append(iov &, column &, const column::delta &);
|
||||||
|
append(iov &, const cell::delta &);
|
||||||
|
append(iov &, const row::delta &);
|
||||||
|
append(iov &, const delta &);
|
||||||
|
append(iov &, const string_view &key, const json::iov &);
|
||||||
|
};
|
||||||
|
|
||||||
checkpoint(txn &);
|
struct ircd::db::iov::checkpoint
|
||||||
|
{
|
||||||
|
iov &t;
|
||||||
|
|
||||||
|
checkpoint(iov &);
|
||||||
~checkpoint() noexcept;
|
~checkpoint() noexcept;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ircd::db::txn::append
|
struct ircd::db::iov::opts
|
||||||
{
|
|
||||||
append(txn &, database &, const delta &);
|
|
||||||
append(txn &, column &, const column::delta &);
|
|
||||||
append(txn &, const cell::delta &);
|
|
||||||
append(txn &, const row::delta &);
|
|
||||||
append(txn &, const delta &);
|
|
||||||
append(txn &, const string_view &key, const json::iov &);
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ircd::db::txn::opts
|
|
||||||
{
|
{
|
||||||
size_t reserve_bytes = 0;
|
size_t reserve_bytes = 0;
|
||||||
size_t max_bytes = 0;
|
size_t max_bytes = 0;
|
102
ircd/db.cc
102
ircd/db.cc
|
@ -1295,10 +1295,10 @@ ircd::db::database::events::OnColumnFamilyHandleDeletionStarted(rocksdb::ColumnF
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// db/txn.h
|
// db/iov.h
|
||||||
//
|
//
|
||||||
|
|
||||||
struct ircd::db::txn::handler
|
struct ircd::db::iov::handler
|
||||||
:rocksdb::WriteBatch::Handler
|
:rocksdb::WriteBatch::Handler
|
||||||
{
|
{
|
||||||
using Status = rocksdb::Status;
|
using Status = rocksdb::Status;
|
||||||
|
@ -1331,14 +1331,14 @@ struct ircd::db::txn::handler
|
||||||
};
|
};
|
||||||
|
|
||||||
std::string
|
std::string
|
||||||
ircd::db::debug(const txn &t)
|
ircd::db::debug(const iov &t)
|
||||||
{
|
{
|
||||||
const rocksdb::WriteBatch &wb(t);
|
const rocksdb::WriteBatch &wb(t);
|
||||||
return db::debug(wb);
|
return db::debug(wb);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ircd::db::for_each(const txn &t,
|
ircd::db::for_each(const iov &t,
|
||||||
const std::function<void (const delta &)> &closure)
|
const std::function<void (const delta &)> &closure)
|
||||||
{
|
{
|
||||||
const auto re{[&closure]
|
const auto re{[&closure]
|
||||||
|
@ -1350,17 +1350,17 @@ ircd::db::for_each(const txn &t,
|
||||||
|
|
||||||
const database &d(t);
|
const database &d(t);
|
||||||
const rocksdb::WriteBatch &wb{t};
|
const rocksdb::WriteBatch &wb{t};
|
||||||
txn::handler h{d, re};
|
iov::handler h{d, re};
|
||||||
wb.Iterate(&h);
|
wb.Iterate(&h);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ircd::db::until(const txn &t,
|
ircd::db::until(const iov &t,
|
||||||
const std::function<bool (const delta &)> &closure)
|
const std::function<bool (const delta &)> &closure)
|
||||||
{
|
{
|
||||||
const database &d(t);
|
const database &d(t);
|
||||||
const rocksdb::WriteBatch &wb{t};
|
const rocksdb::WriteBatch &wb{t};
|
||||||
txn::handler h{d, closure};
|
iov::handler h{d, closure};
|
||||||
wb.Iterate(&h);
|
wb.Iterate(&h);
|
||||||
return h._continue;
|
return h._continue;
|
||||||
}
|
}
|
||||||
|
@ -1370,7 +1370,7 @@ ircd::db::until(const txn &t,
|
||||||
///
|
///
|
||||||
|
|
||||||
rocksdb::Status
|
rocksdb::Status
|
||||||
ircd::db::txn::handler::PutCF(const uint32_t cfid,
|
ircd::db::iov::handler::PutCF(const uint32_t cfid,
|
||||||
const Slice &key,
|
const Slice &key,
|
||||||
const Slice &val)
|
const Slice &val)
|
||||||
noexcept
|
noexcept
|
||||||
|
@ -1379,7 +1379,7 @@ noexcept
|
||||||
}
|
}
|
||||||
|
|
||||||
rocksdb::Status
|
rocksdb::Status
|
||||||
ircd::db::txn::handler::DeleteCF(const uint32_t cfid,
|
ircd::db::iov::handler::DeleteCF(const uint32_t cfid,
|
||||||
const Slice &key)
|
const Slice &key)
|
||||||
noexcept
|
noexcept
|
||||||
{
|
{
|
||||||
|
@ -1387,7 +1387,7 @@ noexcept
|
||||||
}
|
}
|
||||||
|
|
||||||
rocksdb::Status
|
rocksdb::Status
|
||||||
ircd::db::txn::handler::DeleteRangeCF(const uint32_t cfid,
|
ircd::db::iov::handler::DeleteRangeCF(const uint32_t cfid,
|
||||||
const Slice &begin,
|
const Slice &begin,
|
||||||
const Slice &end)
|
const Slice &end)
|
||||||
noexcept
|
noexcept
|
||||||
|
@ -1396,7 +1396,7 @@ noexcept
|
||||||
}
|
}
|
||||||
|
|
||||||
rocksdb::Status
|
rocksdb::Status
|
||||||
ircd::db::txn::handler::SingleDeleteCF(const uint32_t cfid,
|
ircd::db::iov::handler::SingleDeleteCF(const uint32_t cfid,
|
||||||
const Slice &key)
|
const Slice &key)
|
||||||
noexcept
|
noexcept
|
||||||
{
|
{
|
||||||
|
@ -1404,7 +1404,7 @@ noexcept
|
||||||
}
|
}
|
||||||
|
|
||||||
rocksdb::Status
|
rocksdb::Status
|
||||||
ircd::db::txn::handler::MergeCF(const uint32_t cfid,
|
ircd::db::iov::handler::MergeCF(const uint32_t cfid,
|
||||||
const Slice &key,
|
const Slice &key,
|
||||||
const Slice &value)
|
const Slice &value)
|
||||||
noexcept
|
noexcept
|
||||||
|
@ -1413,35 +1413,35 @@ noexcept
|
||||||
}
|
}
|
||||||
|
|
||||||
rocksdb::Status
|
rocksdb::Status
|
||||||
ircd::db::txn::handler::MarkBeginPrepare()
|
ircd::db::iov::handler::MarkBeginPrepare()
|
||||||
noexcept
|
noexcept
|
||||||
{
|
{
|
||||||
return Status::OK();
|
return Status::OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
rocksdb::Status
|
rocksdb::Status
|
||||||
ircd::db::txn::handler::MarkEndPrepare(const Slice &xid)
|
ircd::db::iov::handler::MarkEndPrepare(const Slice &xid)
|
||||||
noexcept
|
noexcept
|
||||||
{
|
{
|
||||||
return Status::OK();
|
return Status::OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
rocksdb::Status
|
rocksdb::Status
|
||||||
ircd::db::txn::handler::MarkCommit(const Slice &xid)
|
ircd::db::iov::handler::MarkCommit(const Slice &xid)
|
||||||
noexcept
|
noexcept
|
||||||
{
|
{
|
||||||
return Status::OK();
|
return Status::OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
rocksdb::Status
|
rocksdb::Status
|
||||||
ircd::db::txn::handler::MarkRollback(const Slice &xid)
|
ircd::db::iov::handler::MarkRollback(const Slice &xid)
|
||||||
noexcept
|
noexcept
|
||||||
{
|
{
|
||||||
return Status::OK();
|
return Status::OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
rocksdb::Status
|
rocksdb::Status
|
||||||
ircd::db::txn::handler::callback(const uint32_t &cfid,
|
ircd::db::iov::handler::callback(const uint32_t &cfid,
|
||||||
const op &op,
|
const op &op,
|
||||||
const Slice &a,
|
const Slice &a,
|
||||||
const Slice &b)
|
const Slice &b)
|
||||||
|
@ -1461,12 +1461,12 @@ noexcept try
|
||||||
catch(const std::exception &e)
|
catch(const std::exception &e)
|
||||||
{
|
{
|
||||||
_continue = false;
|
_continue = false;
|
||||||
log::critical("txn::handler: cfid[%u]: %s", cfid, e.what());
|
log::critical("iov::handler: cfid[%u]: %s", cfid, e.what());
|
||||||
std::terminate();
|
std::terminate();
|
||||||
}
|
}
|
||||||
|
|
||||||
rocksdb::Status
|
rocksdb::Status
|
||||||
ircd::db::txn::handler::callback(const delta &delta)
|
ircd::db::iov::handler::callback(const delta &delta)
|
||||||
noexcept try
|
noexcept try
|
||||||
{
|
{
|
||||||
_continue = cb(delta);
|
_continue = cb(delta);
|
||||||
|
@ -1479,22 +1479,22 @@ catch(const std::exception &e)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ircd::db::txn::handler::Continue()
|
ircd::db::iov::handler::Continue()
|
||||||
noexcept
|
noexcept
|
||||||
{
|
{
|
||||||
return _continue;
|
return _continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// txn
|
// iov
|
||||||
//
|
//
|
||||||
|
|
||||||
ircd::db::txn::txn(database &d)
|
ircd::db::iov::iov(database &d)
|
||||||
:txn{d, {}}
|
:iov{d, {}}
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
ircd::db::txn::txn(database &d,
|
ircd::db::iov::iov(database &d,
|
||||||
const opts &opts)
|
const opts &opts)
|
||||||
:d{&d}
|
:d{&d}
|
||||||
,wb
|
,wb
|
||||||
|
@ -1504,20 +1504,20 @@ ircd::db::txn::txn(database &d,
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
ircd::db::txn::~txn()
|
ircd::db::iov::~iov()
|
||||||
noexcept
|
noexcept
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ircd::db::txn::operator()(const sopts &opts)
|
ircd::db::iov::operator()(const sopts &opts)
|
||||||
{
|
{
|
||||||
assert(bool(d));
|
assert(bool(d));
|
||||||
operator()(*d, opts);
|
operator()(*d, opts);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ircd::db::txn::operator()(database &d,
|
ircd::db::iov::operator()(database &d,
|
||||||
const sopts &opts)
|
const sopts &opts)
|
||||||
{
|
{
|
||||||
assert(bool(wb));
|
assert(bool(wb));
|
||||||
|
@ -1525,14 +1525,14 @@ ircd::db::txn::operator()(database &d,
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ircd::db::txn::clear()
|
ircd::db::iov::clear()
|
||||||
{
|
{
|
||||||
assert(bool(wb));
|
assert(bool(wb));
|
||||||
wb->Clear();
|
wb->Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t
|
size_t
|
||||||
ircd::db::txn::size()
|
ircd::db::iov::size()
|
||||||
const
|
const
|
||||||
{
|
{
|
||||||
assert(bool(wb));
|
assert(bool(wb));
|
||||||
|
@ -1540,7 +1540,7 @@ const
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t
|
size_t
|
||||||
ircd::db::txn::bytes()
|
ircd::db::iov::bytes()
|
||||||
const
|
const
|
||||||
{
|
{
|
||||||
assert(bool(wb));
|
assert(bool(wb));
|
||||||
|
@ -1548,7 +1548,7 @@ const
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ircd::db::txn::has(const op &op)
|
ircd::db::iov::has(const op &op)
|
||||||
const
|
const
|
||||||
{
|
{
|
||||||
assert(bool(wb));
|
assert(bool(wb));
|
||||||
|
@ -1566,7 +1566,7 @@ const
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ircd::db::txn::has(const op &op,
|
ircd::db::iov::has(const op &op,
|
||||||
const string_view &col)
|
const string_view &col)
|
||||||
const
|
const
|
||||||
{
|
{
|
||||||
|
@ -1579,7 +1579,7 @@ const
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ircd::db::txn::has(const op &op,
|
ircd::db::iov::has(const op &op,
|
||||||
const string_view &col,
|
const string_view &col,
|
||||||
const string_view &key)
|
const string_view &key)
|
||||||
const
|
const
|
||||||
|
@ -1594,20 +1594,20 @@ const
|
||||||
}
|
}
|
||||||
|
|
||||||
ircd::db::delta
|
ircd::db::delta
|
||||||
ircd::db::txn::at(const op &op,
|
ircd::db::iov::at(const op &op,
|
||||||
const string_view &col)
|
const string_view &col)
|
||||||
const
|
const
|
||||||
{
|
{
|
||||||
const auto ret(get(op, col));
|
const auto ret(get(op, col));
|
||||||
if(unlikely(!std::get<2>(ret)))
|
if(unlikely(!std::get<2>(ret)))
|
||||||
throw not_found("db::txn::at(%s, %s): no matching delta in transaction",
|
throw not_found("db::iov::at(%s, %s): no matching delta in transaction",
|
||||||
reflect(op),
|
reflect(op),
|
||||||
col);
|
col);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ircd::db::delta
|
ircd::db::delta
|
||||||
ircd::db::txn::get(const op &op,
|
ircd::db::iov::get(const op &op,
|
||||||
const string_view &col)
|
const string_view &col)
|
||||||
const
|
const
|
||||||
{
|
{
|
||||||
|
@ -1628,14 +1628,14 @@ const
|
||||||
}
|
}
|
||||||
|
|
||||||
ircd::string_view
|
ircd::string_view
|
||||||
ircd::db::txn::at(const op &op,
|
ircd::db::iov::at(const op &op,
|
||||||
const string_view &col,
|
const string_view &col,
|
||||||
const string_view &key)
|
const string_view &key)
|
||||||
const
|
const
|
||||||
{
|
{
|
||||||
const auto ret(get(op, col, key));
|
const auto ret(get(op, col, key));
|
||||||
if(unlikely(!ret))
|
if(unlikely(!ret))
|
||||||
throw not_found("db::txn::at(%s, %s, %s): no matching delta in transaction",
|
throw not_found("db::iov::at(%s, %s, %s): no matching delta in transaction",
|
||||||
reflect(op),
|
reflect(op),
|
||||||
col,
|
col,
|
||||||
key);
|
key);
|
||||||
|
@ -1643,7 +1643,7 @@ const
|
||||||
}
|
}
|
||||||
|
|
||||||
ircd::string_view
|
ircd::string_view
|
||||||
ircd::db::txn::get(const op &op,
|
ircd::db::iov::get(const op &op,
|
||||||
const string_view &col,
|
const string_view &col,
|
||||||
const string_view &key)
|
const string_view &key)
|
||||||
const
|
const
|
||||||
|
@ -1665,21 +1665,21 @@ const
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ircd::db::txn::operator
|
ircd::db::iov::operator
|
||||||
ircd::db::database &()
|
ircd::db::database &()
|
||||||
{
|
{
|
||||||
assert(bool(d));
|
assert(bool(d));
|
||||||
return *d;
|
return *d;
|
||||||
}
|
}
|
||||||
|
|
||||||
ircd::db::txn::operator
|
ircd::db::iov::operator
|
||||||
rocksdb::WriteBatch &()
|
rocksdb::WriteBatch &()
|
||||||
{
|
{
|
||||||
assert(bool(wb));
|
assert(bool(wb));
|
||||||
return *wb;
|
return *wb;
|
||||||
}
|
}
|
||||||
|
|
||||||
ircd::db::txn::operator
|
ircd::db::iov::operator
|
||||||
const ircd::db::database &()
|
const ircd::db::database &()
|
||||||
const
|
const
|
||||||
{
|
{
|
||||||
|
@ -1687,7 +1687,7 @@ const
|
||||||
return *d;
|
return *d;
|
||||||
}
|
}
|
||||||
|
|
||||||
ircd::db::txn::operator
|
ircd::db::iov::operator
|
||||||
const rocksdb::WriteBatch &()
|
const rocksdb::WriteBatch &()
|
||||||
const
|
const
|
||||||
{
|
{
|
||||||
|
@ -1699,14 +1699,14 @@ const
|
||||||
// Checkpoint
|
// Checkpoint
|
||||||
//
|
//
|
||||||
|
|
||||||
ircd::db::txn::checkpoint::checkpoint(txn &t)
|
ircd::db::iov::checkpoint::checkpoint(iov &t)
|
||||||
:t{t}
|
:t{t}
|
||||||
{
|
{
|
||||||
assert(bool(t.wb));
|
assert(bool(t.wb));
|
||||||
t.wb->SetSavePoint();
|
t.wb->SetSavePoint();
|
||||||
}
|
}
|
||||||
|
|
||||||
ircd::db::txn::checkpoint::~checkpoint()
|
ircd::db::iov::checkpoint::~checkpoint()
|
||||||
noexcept
|
noexcept
|
||||||
{
|
{
|
||||||
if(likely(!std::uncaught_exception()))
|
if(likely(!std::uncaught_exception()))
|
||||||
|
@ -1715,7 +1715,7 @@ noexcept
|
||||||
throw_on_error { t.wb->RollbackToSavePoint() };
|
throw_on_error { t.wb->RollbackToSavePoint() };
|
||||||
}
|
}
|
||||||
|
|
||||||
ircd::db::txn::append::append(txn &t,
|
ircd::db::iov::append::append(iov &t,
|
||||||
const string_view &key,
|
const string_view &key,
|
||||||
const json::iov &iov)
|
const json::iov &iov)
|
||||||
{
|
{
|
||||||
|
@ -1734,33 +1734,33 @@ ircd::db::txn::append::append(txn &t,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
ircd::db::txn::append::append(txn &t,
|
ircd::db::iov::append::append(iov &t,
|
||||||
const delta &delta)
|
const delta &delta)
|
||||||
{
|
{
|
||||||
assert(bool(t.d));
|
assert(bool(t.d));
|
||||||
append(t, *t.d, delta);
|
append(t, *t.d, delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
ircd::db::txn::append::append(txn &t,
|
ircd::db::iov::append::append(iov &t,
|
||||||
const row::delta &delta)
|
const row::delta &delta)
|
||||||
{
|
{
|
||||||
assert(0);
|
assert(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
ircd::db::txn::append::append(txn &t,
|
ircd::db::iov::append::append(iov &t,
|
||||||
const cell::delta &delta)
|
const cell::delta &delta)
|
||||||
{
|
{
|
||||||
db::append(*t.wb, delta);
|
db::append(*t.wb, delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
ircd::db::txn::append::append(txn &t,
|
ircd::db::iov::append::append(iov &t,
|
||||||
column &c,
|
column &c,
|
||||||
const column::delta &delta)
|
const column::delta &delta)
|
||||||
{
|
{
|
||||||
db::append(*t.wb, c, delta);
|
db::append(*t.wb, c, delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
ircd::db::txn::append::append(txn &t,
|
ircd::db::iov::append::append(iov &t,
|
||||||
database &d,
|
database &d,
|
||||||
const delta &delta)
|
const delta &delta)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue