Commit Graph

106 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)
0916d24321 mdbx: использование опции ENABLE_MEMCHECK вместо ENABLE_VALGRIND и MDBX_USE_VALGRIND. 2023-11-11 12:29:13 +03:00
Леонид Юрьев (Leonid Yuriev)
96504bf338 mdbx: отложенное освобождение имен связанных c dbi-хендлами и добавление опции MDBX_ENABLE_DBI_LOCKFREE.
Отложенное освобождение позволяет реализовать безопасное выполнение
fastpath/lockfree при повторном открытии из других потоков/транзакцйий
уже открытых subDB, что и происходит при активации добавленной опции
сборки `MDBX_ENABLE_DBI_LOCKFREE`.
2023-11-11 12:29:10 +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)
cdbcf54af1 mdbx-tests: добавление --read-var-info=yes для Valgrind. 2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
5d9740bbcf mdbx-cmake: использование add_mdbx_option() для вывода информации об mdbx-опциях при сборке. 2023-10-09 21:49:58 +03:00
Леонид Юрьев (Leonid Yuriev)
c01f025bfa mdbx: обновление года на 2023. 2023-01-16 16:32:02 +03:00
Леонид Юрьев (Leonid Yuriev)
8ffb0bb3d8 mdbx-cmake: поддержка всех основных опций при сборке посредством CMake. 2022-11-10 15:39:52 +03:00
Леонид Юрьев (Leonid Yuriev)
13c256026e mdbx-cmake: синхронизация конструкций CMake между проектами. 2022-11-09 23:37:50 +03:00
Леонид Юрьев (Leonid Yuriev)
987509f90f mdbx-cmake: try fix libmdbx-rs/issues/10.
https://github.com/vorot93/libmdbx-rs/issues/10
2022-11-08 20:39:38 +03:00
Леонид Юрьев (Leonid Yuriev)
8c75ed59da mdbx-cmake: отключением LTO для G++ < 7.0, ибо падает. 2022-11-07 23:57:25 +03:00
Леонид Юрьев (Leonid Yuriev)
623ab21707 mdbx-cmake: совместимость с CMake 3.0.2 для CI на старых системах. 2022-11-07 23:37:27 +03:00
Леонид Юрьев (Leonid Yuriev)
b04f7814ef mdbx-cmake: исправление для совместимости с CMake 3.8 2022-10-24 01:01:01 +03:00
Леонид Юрьев (Leonid Yuriev)
bbd139b2ae mdbx-cmake: создание VERSION.txt 2022-10-22 11:08:06 +03:00
Леонид Юрьев (Leonid Yuriev)
64d0e639c2 mdbx-cmake: синхронизация LTO-рецептов. 2022-10-22 11:08:06 +03:00
Леонид Юрьев (Leonid Yuriev)
9cdee2adb5 mdbx-cmake: добавлена поддержка опции MDBX_AVOID_MSYNC. 2022-10-10 15:55:20 +03:00
Леонид Юрьев (Leonid Yuriev)
a44eb1accb mdbx-cmake: add MDBX_MANAGE_BUILD_FLAGS build-time option. 2022-08-07 11:56:23 +03:00
Леонид Юрьев (Leonid Yuriev)
5e565433f7 mdbx: merge branch master into devel. 2022-07-23 11:56:17 +03:00
Леонид Юрьев (Leonid Yuriev)
fc53e57a64 mdbx-cmake: avoid has no symbols warning from Apple's ranlib. 2022-07-13 22:11:28 +03:00
Леонид Юрьев (Leonid Yuriev)
d4ef9bf233 mdbx: rework page validation/checking, add MDBX_VALIDATION option (squashed).
Здесь основная часть изменений преобразующих отладочную проверку страниц
в регулярный и доступный пользователю осторожный/безопасный режим работы
с потенциально поврежденной БД.

Here the major part of the changes that transform a debugging check of
pages into a regular and user-accessible careful/safe mode for working
with a potentially corrupted database.
2022-07-07 14:10:09 +03:00
Леонид Юрьев (Leonid Yuriev)
99cfee6f4b mdbx-cmake: don't provide nor report package information if used as a subproject. 2022-06-12 23:14:33 +03:00
Леонид Юрьев (Leonid Yuriev)
b6138c39f0 mdbx: reorganize internal includes. 2022-06-02 20:35:40 +03:00
Леонид Юрьев (Leonid Yuriev)
7260db2e74 mdbx-cmake: sync/refine cmake policy. 2022-06-02 20:35:35 +03:00
Леонид Юрьев (Leonid Yuriev)
42f1abd7e9 mdbx-cmake: fix/refine --allow-multiple-definition as workaround for std::filesystem and LCC < 1.25.23 2022-04-22 23:03:58 +03:00
Leonid Yuriev
5eeb260c08 mdbx-cmake: rework making MDBX_BUILD_TARGET value. 2022-04-22 17:28:56 +03:00
Леонид Юрьев (Leonid Yuriev)
1ec5687d36 mdbx: fix build for ARM/ARM64 by MSVC. 2022-04-22 17:18:58 +03:00
Леонид Юрьев (Leonid Yuriev)
03f9ed8820 mdbx-cmake: add a few smoke-like tests. 2022-04-21 20:35:45 +03:00
Леонид Юрьев (Leonid Yuriev)
ed23956e11 mdbx: basic cleanup from dead github and another corrupted services. 2022-04-20 06:42:16 +03:00
Леонид Юрьев (Leonid Yuriev)
bb8f431817 mdbx-cmake: use target_include_directories() instead of include_directories(). 2022-04-13 11:05:50 +03:00
Леонид Юрьев (Leonid Yuriev)
5ebcb90620 mdbx-cmake: rework linking detection for std::filesystem. 2022-04-07 21:57:49 +03:00
Леонид Юрьев (Leonid Yuriev)
c9dfb7d8c2 mdbx-cmake: add workaround for LCC 1.25 bug of class inline static constexpr member field definition. 2022-04-06 12:43:58 +03:00
Леонид Юрьев (Leonid Yuriev)
f054ceeab8 mdbx-cmake: add linking with stdc++fs for LCC < 1.26 2022-04-06 12:43:58 +03:00
Leonid Yuriev
79e1cc3bbc mdbx: add workaround for old MSVC and/or old Windows SDK.
Resolves https://github.com/erthink/libmdbx/issues/265.

Change-Id: I295b5d9d5ecd670ccf258791bf87379a3ca17f21
2022-02-01 13:28:59 +03:00
Leonid Yuriev
c588af6aca mdbx: update Copyright year.
Change-Id: Ib3e4c0ac94882c4b2a1e167dd98e6e26dbdf48a4
2022-01-17 11:06:14 +03:00
Leonid Yuriev
32e495021f mdbx-cmake: reporting the build options (cosmetics). 2021-12-10 17:17:34 +03:00
Леонид Юрьев (Leonid Yuriev)
ca19796514 mdbx-cmake: disable C++20 for CLANG < 10. 2021-12-09 15:54:16 +03:00
Леонид Юрьев (Leonid Yuriev)
c2cab7a6a8 mdbx: using clang-format-13 (cosmetics). 2021-12-02 20:22:31 +03:00
Leonid Yuriev
86c735637e mdbx-cmake: add MDBX_FORCE_BUILD_AS_MAIN_PROJECT. 2021-11-19 16:21:40 +03:00
Leonid Yuriev
c456625ef2 mdbx-cmake: initial support for C++23. 2021-11-07 02:18:56 +03:00
Leonid Yuriev
630ef98951 mdbx-cmake: allow to define CMAKE_CXX_STANDARD by the environment variable. 2021-11-07 02:18:56 +03:00
Leonid Yuriev
4bb0c57e29 mdbx: minor fixes/workarounds for CLANG < 9.x 2021-08-04 15:43:32 +03:00
Leonid Yuriev
a9cae5e314 mdbx-cmake: avoid CMake warning about compatibility with 3.8.2 2021-08-04 14:09:47 +03:00
Leonid Yuriev
cc6610f42c mdbx: more/refine C++ crutches for mad MSVC compiler. 2021-06-24 15:42:03 +03:00
Leonid Yuriev
77a1f32e2a mdbx: use VERSION.txt instead of VERSION to avoid collision with #include <version>. 2021-06-24 14:59:29 +03:00
Leonid Yuriev
d47864dedf mdbx-cmake: use GNUInstallDirs variables for all cases.
Resolves https://github.com/erthink/libmdbx/issues/209.
2021-06-17 17:21:20 +03:00
Leonid Yuriev
f951f246b8 mdbx: allow to predefine/override MDBX_BUILD_TIMESTAMP for builds reproducibility.
Resolve https://github.com/erthink/libmdbx/issues/201
2021-06-02 14:50:22 +03:00
Leonid Yuriev
7addfc8358 mdbx: explicit checking for and warning about using unfit github's archives.
Related to https://github.com/erthink/libmdbx/issues/197 and https://github.community/t/disable-tarball
2021-05-13 12:19:18 +03:00
Leonid Yuriev
605326b6e8 mdbx-cmake: don't specify filename extension while linking with ntdll. 2021-05-11 08:07:42 +03:00
Leonid Yuriev
ecd3c06932 mdbx-windows: remove MDBX_CONFIG_MANUAL_TLS_CALLBACK build option and add MDBX_MANUAL_MODULE_HANDLER macro.
Briefly:
 - Now constructor/destructor of "Thread Local Storage" handled automatically when possible.
 - Otherwise the MDBX_CONFIG_MANUAL_TLS_CALLBACK macro defined to 1 to indicate that mdbx_module_handle() should be called manually.
 - Corresponding build option MDBX_CONFIG_MANUAL_TLS_CALLBACK was removed.

Related to https://github.com/erthink/libmdbx/issues/155

Change-Id: Ic4e6a34b44f874676f0ab212ff473460e3d80559
2021-05-08 18:39:18 +03:00