mdbx: корректировка mdbx_enumerate_subdb().

This commit is contained in:
Леонид Юрьев (Leonid Yuriev) 2024-07-13 16:13:11 +03:00
parent bdfec14992
commit 8e8ac09e14
2 changed files with 15 additions and 6 deletions

13
mdbx.h
View File

@ -4583,17 +4583,24 @@ typedef int(MDBX_subdb_enum_func)(void *ctx, const MDBX_txn *txn,
const struct MDBX_stat *stat,
MDBX_dbi dbi) MDBX_CXX17_NOEXCEPT;
/** \brief Enumerate the entries in the reader lock table.
/** \brief Перечисляет пользовательские именнованные таблицы.
*
* Производит перечисление пользовательских именнованных таблиц, вызывая
* специфицируемую пользователем функцию-визитер для каждой именованной таблицы.
* Перечисление продолжается до исчерпания именованных таблиц, либо до возврата
* отличного от нуля результата из заданной пользователем функции, которое будет
* сразу возвращено в качестве результата.
*
* \ingroup c_statinfo
* \see MDBX_subdb_enum_func
*
* \param [in] txn Транзакция запущенная посредством
* \ref mdbx_txn_begin().
* \param [in] func Указатель на пользовательскую функцию-перечислитель
* \param [in] func Указатель на пользовательскую функцию
* с сигнатурой \ref MDBX_subdb_enum_func,
* которая будет вызвана для каждой таблицы.
* \param [in] ctx Указатель на некоторый контект, который будет передан
* в функцию-перечислитель как есть.
* в функцию `func()` как есть.
*
* \returns Ненулевое значение кода ошибки, либо 0 при успешном выполнении. */
LIBMDBX_API int mdbx_enumerate_subdb(const MDBX_txn *txn,

View File

@ -1026,9 +1026,11 @@ __cold int mdbx_enumerate_subdb(const MDBX_txn *txn, MDBX_subdb_enum_func *func,
stat_get(tree, &stat, sizeof(stat));
rc = func(ctx, txn, &name, tree->flags, &stat, dbi);
if (rc != MDBX_SUCCESS)
break;
goto bailout;
}
txn->cursors[MAIN_DBI] = cx.outer.next;
rc = (rc == MDBX_NOTFOUND) ? MDBX_SUCCESS : rc;
return (rc == MDBX_NOTFOUND) ? MDBX_SUCCESS : rc;
bailout:
txn->cursors[MAIN_DBI] = cx.outer.next;
return rc;
}