158 Commits

Author SHA1 Message Date
Леонид Юрьев (Leonid Yuriev)
5fc3965f5b
mdbx: вливание ветки master в devel. 2024-03-21 01:54:20 +03:00
Леонид Юрьев (Leonid Yuriev)
aea40fb79f
mdbx: выпуск 0.12.10 "СЭМ"
Поддерживающий выпуск с исправлением обнаруженных ошибок и устранением недочетов
в память Героя России гвардии майора Дмитрия Семёнова с позывным "СЭМ".

Значимые исправления и доработки:
---------------------------------

 - Устранение унаследованной от LMDB ошибки приводящей к повреждению БД при использовании `MDBX_DUPFIXED`.

 - Исправление ложной ошибки `MDBX_CORRUPTED (-30796)` в сценарии работы
   в режиме `MDBX_DUPFIXED` и нечетной длинной мульти-значений.

 - Исправление недочета корректировки сопутствующих курсоров при разделении страницы
   по сценарию добавления пустой страницы слева.

 - Доработка `rebalance()` ради уменьшения WAF.

 - Исправление assert-проверки внутри `check_txn()` для случая завершенных транзакций в режиме `MDBX_NO_TLS`.
   Последствий ошибки, кроме срабатывания assert-проверки в отладочных сборках, нет.

 - Устранение ошибки при открытии БД на файловой системе только-для-чтения.

 - Удалены излишне строгие проверки в утилите `mdbx_chk`, которые
   приводили к ложно-позитивным ошибкам при проверке БД после серии
   последних доработок.

Более подробная информация в [ChangeLog](https://libmdbx.dqdkfa.ru/md__change_log.html).

git diff' stat: 19 commits, 57 files changed, 751 insertions(+), 331 deletions(-)
Signed-off-by: Леонид Юрьев (Leonid Yuriev) <leo@yuriev.ru>
2024-03-13 14:57:38 +03:00
Леонид Юрьев (Leonid Yuriev)
1db44c7914 mdbx++: перенос в public типов buffer::move_assign_alloc и buffer::copy_assign_alloc для старых стандартов C++. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
100f07e89a mdbx++: дополнительные операторы преобразования к типам C API. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
e68771df18 mdbx++: Добавление buffer_pair<> и buffer_pair_spec<>. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
0e250a4457 mdbx++: добавление поддержки std::span<>. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
be8428257d mdbx++: переделка поддержки base58 по RFC-draft. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
dd47f1bfd9 mdbx++: переход на использование по-умолчанию default_allocator вместо legacy_allocator. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
b412807fc1 mdbx++: добавление mdbx::default_buffer. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
8a6bddef44 mdbx++: поправка форматирования против бага clang-format. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
304cf25149 mdbx++: использование slice::invalid() для предотвращения незаметного неверного использования API. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
869cfb3fae mdbx++: исправление опечатки в doxygen-описании. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
0a58601cdf mdbx++: добавление pair::invalid() и взаимодействия с std::pair<>. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
355090f02e mdbx++: добавление is_xyz() для key_mode и value_mode. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
55142d8d6f mdbx++: добавление txn::commit_embark_read(). 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
b9e2f6dc09 mdbx++: добавление MDBX_CXXnn_CONSTEXPR_ENUM. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
bf21ee7bde mdbx++: добавление операторов сравнения для mdbx::pair. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
0b68980489 mdbx++: добавление cursor::scan(predicate...) и т.п. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
4999264460 mdbx++: добавление error::boolean_or_throw(exception_thunk). 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
25015c54e1 mdbx: обещанное "doubtless" API для позиционирования курсоров. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
ed59ad22c6 mdbx: добавление mdbx_cursor_on_first/last_dup() в API. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
eee3e6eb6b mdbx++: добавление compare_positions() для курсоров. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
225f548339 mdbx++: добавление get_/set_context для транзакций и курсоров. 2023-12-05 15:32:13 +03:00
Леонид Юрьев (Leonid Yuriev)
fb15c8ca0b mdbx++: дополнительные операторы преобразования к типам C API (backport). 2023-11-28 09:36:29 +03:00
Леонид Юрьев (Leonid Yuriev)
ae01a8e891 mdbx++: перенос в public типов buffer::move_assign_alloc и buffer::copy_assign_alloc для старых стандартов C++ (backport). 2023-11-28 09:36:29 +03:00
Леонид Юрьев (Leonid Yuriev)
1277fe965d mdbx++: переделка поддержки base58 по RFC-draft (backport). 2023-11-28 09:36:10 +03:00
Леонид Юрьев (Leonid Yuriev)
b1abcb8260 mdbx++: использование slice::invalid() для предотвращения незаметного неверного использования API (backport). 2023-11-28 01:18:24 +03:00
Леонид Юрьев (Leonid Yuriev)
7cd3dbbccb mdbx++: добавление mdbx::default_buffer (backport). 2023-11-28 01:18:24 +03:00
Леонид Юрьев (Leonid Yuriev)
352dd75ee8 mdbx++: исправление опечатки в doxygen-описании (backport). 2023-11-28 01:16:38 +03:00
Леонид Юрьев (Leonid Yuriev)
cf1541e4d7 mdbx++: добавление get/set_context для транзакций и курсоров (backport). 2023-11-28 01:16:38 +03:00
Леонид Юрьев (Leonid Yuriev)
446dbc9d6c mdbx++: добавление cursor::clone() (backport). 2023-11-28 01:13:24 +03:00
Леонид Юрьев (Leonid Yuriev)
64a5ad8c04 mdbx++: добавление методов buffer::hex_decode(), base64_decode(), base58_decode() (backport). 2023-11-28 01:13:24 +03:00
Леонид Юрьев (Leonid Yuriev)
0fd0d527d9 mdbx++: добавление типа mdbx::comparator и функций mdbx::default_comparator() (backport). 2023-11-28 01:13:24 +03:00
Леонид Юрьев (Leonid Yuriev)
4bed5d1779 mdbx++: добавление статических методов buffer::hex(), base64(), base58() (backport). 2023-11-28 01:13:24 +03:00
Леонид Юрьев (Leonid Yuriev)
992eee4f0f mdbx++: добавление cursor::clone(). 2023-11-26 16:56:34 +03:00
Леонид Юрьев (Leonid Yuriev)
d6a79a9c5f mdbx++: переименование slice::as_intXX() в slice::as_intXX_adapt() и добавление slice::as_intXX(). 2023-11-26 16:56:34 +03:00
Леонид Юрьев (Leonid Yuriev)
6facd20b2b mdbx++: добавление buffer::as_uint64() и т.д. 2023-11-26 16:56:34 +03:00
Леонид Юрьев (Leonid Yuriev)
e66df2c21b mdbx++: добавление методов buffer::hex_decode(), base64_decode(), base58_decode(). 2023-11-26 16:56:34 +03:00
Леонид Юрьев (Leonid Yuriev)
649bbb9d90 mdbx++: добавление типа mdbx::comparator и функций mdbx::default_comparator(). 2023-11-26 16:56:34 +03:00
Леонид Юрьев (Leonid Yuriev)
c8319aabe7 mdbx++: добавление статических методов buffer::hex(), base64(), base58(). 2023-11-26 16:56:19 +03:00
Леонид Юрьев (Leonid Yuriev)
476da5f8cf mdbx++: добавление cursor::estimation_result и переделка cursor::estimate() (backport). 2023-11-12 21:30:09 +03:00
Леонид Юрьев (Leonid Yuriev)
6cef39c32f mdbx++: добавление cursor::estimation_result и переделка cursor::estimate(). 2023-11-12 20:37:57 +03:00
Леонид Юрьев (Leonid Yuriev)
7eb2f4130e mdbx: использование const MDBX_txn где это возможно в API (backport). 2023-11-12 19:33:27 +03:00
Леонид Юрьев (Leonid Yuriev)
e6af7d7c53 mdbx: переработка инициализации, проверки и импорта dbi-хендлов в транзакциях.
Ранее инициализация в транзакциях структур данных, связанных с
dbi-хендлами и subDb, выполнялась непосредственно при запуске
транзакций. Что в сценариях с большим кол-вом dbi-дексприторов (например
libfpta) порождало заметные накладные расходы, которые расли линейно от
общего кол-ва открытых subDb, а не от реально используемых в транзакции.
При использовании одной-двух сотен хендлов, при старте каждой транзакции
могли копироваться и/или обнуляться десятки килобайт. Теперь этот
недостаток устранен.

Изменена схема инициализации, валидации и импорта хендлов открытых после
старта транзакции:

1) Инициализация теперь выполняется отложенна, а при старте транзации
   обнуляется только массив с однобайтовыми статустами dbi-хендлов.
   При этом доступнва опция сборки `MDBX_ENABLE_DBI_SPARSE`, при активации
   которой используется битовая карты, что снижает объем инициализации
   при старте транзакции в 8 раз (CHAR_BIT).

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

3) Переработ импорт dbi-хендов открытых после старта транзакци, теперь
   при этом не захватывается мьютекс.
2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
04511a7a99 mdbx: использование const MDBX_txn где это возможно в API. 2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
4d3f7e1edc mdbx: добавление mdbx_txn_release_all_cursors() в API. 2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
d28a397b2d mdbx: добавление mdbx_cursor_unbind() в API. 2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
311a6e5d10 mdbx++: добавление забытого исключения mdbx::duplicated_lck_file. 2023-10-23 16:33:34 +03:00
Леонид Юрьев (Leonid Yuriev)
e9b10db255 mdbx++: доработка использования filesystem для старых компиляторов. 2023-10-09 07:34:01 +03:00
Леонид Юрьев (Leonid Yuriev)
e195f5bcf7 mdbx++: перегрузка txn::put_multiple() и добавление контроля POD. 2023-10-06 21:56:21 +03:00