mirror of
https://github.com/isar/libmdbx.git
synced 2025-01-30 22:47:16 +08:00
mdbx++: добавление в C++ API методов txn::rename_map()
.
This commit is contained in:
parent
5c84c405ac
commit
7b1f8ba642
23
mdbx.h++
23
mdbx.h++
@ -4338,6 +4338,21 @@ public:
|
|||||||
inline bool clear_map(const ::std::string &name,
|
inline bool clear_map(const ::std::string &name,
|
||||||
bool throw_if_absent = false);
|
bool throw_if_absent = false);
|
||||||
|
|
||||||
|
/// \brief Переименовывает таблицу ключ-значение.
|
||||||
|
inline void rename_map(map_handle map, const char *new_name);
|
||||||
|
/// \brief Переименовывает таблицу ключ-значение.
|
||||||
|
inline void rename_map(map_handle map, const ::std::string &new_name);
|
||||||
|
/// \brief Переименовывает таблицу ключ-значение.
|
||||||
|
/// \return `True` если таблица существует и была переименована, либо
|
||||||
|
/// `false` в случае отсутствия исходной таблицы.
|
||||||
|
bool rename_map(const char *old_name, const char *new_name,
|
||||||
|
bool throw_if_absent = false);
|
||||||
|
/// \brief Переименовывает таблицу ключ-значение.
|
||||||
|
/// \return `True` если таблица существует и была переименована, либо
|
||||||
|
/// `false` в случае отсутствия исходной таблицы.
|
||||||
|
bool rename_map(const ::std::string &old_name, const ::std::string &new_name,
|
||||||
|
bool throw_if_absent = false);
|
||||||
|
|
||||||
using map_stat = ::MDBX_stat;
|
using map_stat = ::MDBX_stat;
|
||||||
/// \brief Returns statistics for a sub-database.
|
/// \brief Returns statistics for a sub-database.
|
||||||
inline map_stat get_map_stat(map_handle map) const;
|
inline map_stat get_map_stat(map_handle map) const;
|
||||||
@ -6319,6 +6334,14 @@ inline bool txn::clear_map(const ::std::string &name, bool throw_if_absent) {
|
|||||||
return clear_map(name.c_str(), throw_if_absent);
|
return clear_map(name.c_str(), throw_if_absent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void txn::rename_map(map_handle map, const char *new_name) {
|
||||||
|
error::success_or_throw(::mdbx_dbi_rename(handle_, map, new_name));
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void txn::rename_map(map_handle map, const ::std::string &new_name) {
|
||||||
|
return rename_map(map, new_name.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
inline txn::map_stat txn::get_map_stat(map_handle map) const {
|
inline txn::map_stat txn::get_map_stat(map_handle map) const {
|
||||||
txn::map_stat r;
|
txn::map_stat r;
|
||||||
error::success_or_throw(::mdbx_dbi_stat(handle_, map.dbi, &r, sizeof(r)));
|
error::success_or_throw(::mdbx_dbi_stat(handle_, map.dbi, &r, sizeof(r)));
|
||||||
|
23
src/mdbx.c++
23
src/mdbx.c++
@ -1586,6 +1586,29 @@ bool txn::clear_map(const char *name, bool throw_if_absent) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool txn::rename_map(const char *old_name, const char *new_name,
|
||||||
|
bool throw_if_absent) {
|
||||||
|
map_handle map;
|
||||||
|
const int err = ::mdbx_dbi_open(handle_, old_name, MDBX_DB_ACCEDE, &map.dbi);
|
||||||
|
switch (err) {
|
||||||
|
case MDBX_SUCCESS:
|
||||||
|
rename_map(map, new_name);
|
||||||
|
return true;
|
||||||
|
case MDBX_NOTFOUND:
|
||||||
|
case MDBX_BAD_DBI:
|
||||||
|
if (!throw_if_absent)
|
||||||
|
return false;
|
||||||
|
MDBX_CXX17_FALLTHROUGH /* fallthrough */;
|
||||||
|
default:
|
||||||
|
MDBX_CXX20_UNLIKELY error::throw_exception(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool txn::rename_map(const ::std::string &old_name,
|
||||||
|
const ::std::string &new_name, bool throw_if_absent) {
|
||||||
|
return rename_map(old_name.c_str(), new_name.c_str(), throw_if_absent);
|
||||||
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
void cursor_managed::close() {
|
void cursor_managed::close() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user