Skip to content

Commit

Permalink
save
Browse files Browse the repository at this point in the history
  • Loading branch information
AskAlexSharov committed Jun 9, 2024
1 parent c37a1cd commit a15bd8c
Show file tree
Hide file tree
Showing 15 changed files with 4,109 additions and 3,987 deletions.
3,980 changes: 2,007 additions & 1,973 deletions mdbx/mdbx.c

Large diffs are not rendered by default.

37 changes: 26 additions & 11 deletions mdbx/mdbx.h
Original file line number Diff line number Diff line change
Expand Up @@ -4961,6 +4961,7 @@ LIBMDBX_API int mdbx_cursor_bind(const MDBX_txn *txn, MDBX_cursor *cursor,
* \see mdbx_cursor_renew()
* \see mdbx_cursor_bind()
* \see mdbx_cursor_close()
* \see mdbx_cursor_reset()
*
* \note In contrast to LMDB, the MDBX required that any opened cursors can be
* reused and must be freed explicitly, regardless ones was opened in a
Expand All @@ -4973,6 +4974,20 @@ LIBMDBX_API int mdbx_cursor_bind(const MDBX_txn *txn, MDBX_cursor *cursor,
* \returns A non-zero error value on failure and 0 on success. */
LIBMDBX_API int mdbx_cursor_unbind(MDBX_cursor *cursor);

/** \brief Сбрасывает состояние курсора.
* \ingroup c_cursors
*
* В результате сброса курсор становится неустановленным и не позволяет
* выполнять операции относительного позиционирования, получения или изменения
* данных, до установки на позицию не зависящую от текущей. Что позволяет
* приложению пресекать дальнейшие операции без предварительного
* позиционирования курсора.
*
* \param [in] cursor Указатель на курсор.
*
* \returns Результат операции сканирования, либо код ошибки. */
LIBMDBX_API int mdbx_cursor_reset(MDBX_cursor *cursor);

/** \brief Create a cursor handle for the specified transaction and DBI handle.
* \ingroup c_cursors
*
Expand Down Expand Up @@ -5163,7 +5178,9 @@ LIBMDBX_API int mdbx_cursor_get(MDBX_cursor *cursor, MDBX_val *key,
* Эта функция отключает контроль порядка следования ключей на страницах при
* чтении страниц БД для этого курсора, и таким образом, позволяет прочитать
* данные при отсутствии/недоступности использованных функций сравнения.
* \see avoid_custom_comparators */
* \see avoid_custom_comparators
*
* \returns Результат операции сканирования, либо код ошибки. */
LIBMDBX_API int mdbx_cursor_ignord(MDBX_cursor *cursor);

/** \brief Тип предикативных функций обратного вызова используемых
Expand Down Expand Up @@ -5393,18 +5410,16 @@ LIBMDBX_API int mdbx_cursor_scan_from(MDBX_cursor *cursor,
* \param [in] limit The size of pairs buffer as the number of items,
* but not a pairs.
* \param [in] op A cursor operation \ref MDBX_cursor_op (only
* \ref MDBX_FIRST, \ref MDBX_NEXT, \ref MDBX_GET_CURRENT
* are supported).
* \ref MDBX_FIRST and \ref MDBX_NEXT are supported).
*
* \returns A non-zero error value on failure and 0 on success,
* some possible errors are:
* \retval MDBX_THREAD_MISMATCH Given transaction is not owned
* by current thread.
* \retval MDBX_NOTFOUND No more key-value pairs are available.
* \retval MDBX_NOTFOUND No any key-value pairs are available.
* \retval MDBX_ENODATA The cursor is already at the end of data.
* \retval MDBX_RESULT_TRUE The specified limit is less than the available
* key-value pairs on the current page/position
* that the cursor points to.
* \retval MDBX_RESULT_TRUE The returned chunk is the last one,
* and there are no pairs left.
* \retval MDBX_EINVAL An invalid parameter was specified. */
LIBMDBX_API int mdbx_cursor_get_batch(MDBX_cursor *cursor, size_t *count,
MDBX_val *pairs, size_t limit,
Expand Down Expand Up @@ -6183,11 +6198,11 @@ typedef enum MDBX_chk_stage {
MDBX_chk_init,
MDBX_chk_lock,
MDBX_chk_meta,
MDBX_chk_traversal_tree,
MDBX_chk_traversal_freedb,
MDBX_chk_tree,
MDBX_chk_gc,
MDBX_chk_space,
MDBX_chk_traversal_maindb,
MDBX_chk_traversal_subdbs,
MDBX_chk_maindb,
MDBX_chk_subdbs,
MDBX_chk_conclude,
MDBX_chk_unlock,
MDBX_chk_finalize
Expand Down
10 changes: 9 additions & 1 deletion mdbxdist/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,13 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic

Новое:

- Изменение лицензии на Apache 2.0, пояснения и подробности в файле `COPYRIGHT`.

- Реструктуризация исходного кода с рефакторингом.

- Переработка курсоров для унификации поведения, более регулярного
кода, уменьшения количества ветвлений и машинных операций.

- Перенос функционала утилиты `mdbx_chk` внутрь библиотеки в виде
функции `mdbx_env_chk() `для проверка целостности структуры БД, в том
числе с вовлечением логики приложения.
Expand Down Expand Up @@ -68,7 +75,7 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic

- Опция `MDBX_opt_prefer_waf_insteadof_balance`.

- TODO: Опции `MDBX_opt_subpage_limit`, `MDBX_opt_subpage_room_threshold`, `MDBX_opt_subpage_reserve_prereq`, `MDBX_opt_subpage_reserve_limit`.
- Опции `MDBX_opt_subpage_limit`, `MDBX_opt_subpage_room_threshold`, `MDBX_opt_subpage_reserve_prereq`, `MDBX_opt_subpage_reserve_limit`.

- Управление основной блокировкой lock/unlock/upgrade/downgrade для координации пишущих транзакций.

Expand Down Expand Up @@ -99,6 +106,7 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic
- Опция сборки `MDBX_USE_VALGRIND` заменена на общепринятую `ENABLE_MEMCHECK`.
- В структуре `MDBX_envinfo` серии полей вида `meta1`, `meta2` и `meta3` заменены на массивы вида `meta[3]`.
- В шаблонных классах и функциях С++ API по-умолчанию вместо `mdbx::legacy_buffer` использован тип `mdbx::default_buffer` использующий полиморфные аллокаторы С++ 17.
- Удаление `DEFAULT_MAPSIZE` и изменение геометрии по-умолчанию при создании БД.


## v0.13.0 от 2023-04-23
Expand Down
16 changes: 14 additions & 2 deletions mdbxdist/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -379,9 +379,19 @@ The origin for now is at [GitFlic](https://gitflic.ru/project/erthink/libmdbx)
with backup at [ABF by ROSA Лаб](https://abf.rosalinux.ru/erthink/libmdbx).
For the same reason ~~Github~~ is blacklisted forever.

Начиная с 2021 года наблюдаются устойчивые тенденции к распространению
недостоверной информации о libmdbx в странах НАТО, политизированной
критики, а также отказу от использования библиотеки в пользу LMDB,
несмотря на явные проблемы с одной стороны и преимущества с другой.
Поэтому, начиная с 17 марта 2024 года, прекращается документирование и
сопровождение проекта на английском языке. Новая функциональность будет
документироваться только на русском языке, однако, целенаправленного
переписывания/перевода документации пока не планируется.

Since May 2024 and version v0.13 _libmdbx_ was re-licensed under Apache-2.0 license.
Please refer to the `COPYRIGHT` file for license change explanations.


## Acknowledgments
Howard Chu <[email protected]> and Hallvard Furuseth
<[email protected]> are the authors of _LMDB_, from which _libmdbx_
Expand Down Expand Up @@ -496,8 +506,10 @@ There are no special traits nor quirks if you use libmdbx ONLY inside the single
But in a cross-container cases or with a host-container(s) mix the two major things MUST be
guaranteed:

1. Coherence of memory mapping content and unified page cache inside OS kernel for host and all container(s) operated with a DB.
Basically this means must be only a single physical copy of each memory mapped DB' page in the system memory.
1. Coherence of memory mapping content and unified page cache inside OS
kernel for host and all container(s) operated with a DB. Basically this
means must be only a single physical copy of each memory mapped DB' page
in the system memory.

2. Uniqueness of [PID](https://en.wikipedia.org/wiki/Process_identifier) values and/or a common space for ones:
- for POSIX systems: PID uniqueness for all processes operated with a DB.
Expand Down
2 changes: 1 addition & 1 deletion mdbxdist/VERSION.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.13.0.54
0.13.0.57
Loading

0 comments on commit a15bd8c

Please sign in to comment.