3999 Commits

Author SHA1 Message Date
Леонид Юрьев (Leonid Yuriev)
2ae7bfd9be mdbx-make: актуализация списков для целей cross-gcc и cross-qemu. 2023-02-28 22:52:28 +03:00
Леонид Юрьев (Leonid Yuriev)
8f87ab252e mdbx: дополнение ChangeLog. 2023-02-28 00:52:40 +03:00
Леонид Юрьев (Leonid Yuriev)
800bd55ab9 mdbx-test: добавление опции --extra в скрипт test/long_stochastic.sh 2023-02-28 00:50:48 +03:00
Леонид Юрьев (Leonid Yuriev)
5c52adf358 mdbx-test: расширение набора режимов перебираемых скриптом test/long_stochastic.sh 2023-02-28 00:50:48 +03:00
Leonid Yuriev
6d74b10db1 mdbx: поддержка ASAN (Address Sanitizer) при сборке посредством MSVC. 2023-02-28 00:50:30 +03:00
Леонид Юрьев (Leonid Yuriev)
359489e271 mdbx: исправление семантической опечатки в комментарии о режиме работы. 2023-02-27 16:59:10 +03:00
Леонид Юрьев (Leonid Yuriev)
5f690bbc4f mdbx-test: по-умолчанию работа в режиме MDBX_SYNC_DURABLE. 2023-02-27 16:59:10 +03:00
Леонид Юрьев (Leonid Yuriev)
1b6e32071c mdbx: повторное "устранение" предупреждений MSVC Static Analyzer (aka Prefast).
Никаких значимых изменений, только обход "странностей" в MSVC.

Как оказалось MSVC распространяет действие директивы
`pragma(warning(supppress:#))` строго на следующую строку, даже если эта
строка является продолжением комментария начатого в самой директиве
и/или не содержит синтаксических конструкций языка.

Поэтому большинство из добавленных ранее директив для подавления ложных
предупреждений, перестало работать после переформатирования исходного
кода.
2023-02-27 16:59:06 +03:00
Леонид Юрьев (Leonid Yuriev)
b415265d16
mdbx: release v0.11.14 (Sergey Kapitsa)
The stable bugfix release in memory of [Sergey Kapitsa](https://en.wikipedia.org/wiki/Sergey_Kapitsa) on his 95th birthday.

Fixes:
------

 - backport: Fixed insignificant typo of `||` inside `#if` byte-order condition.

 - backport: Fixed `SIGSEGV` or an erroneous call to `free()` in situations where
   errors occur when reopening by `mdbx_env_open()` of a previously used
   environment.

 - backport: Fixed `cursor_put_nochecklen()` internals for case when dupsort'ed named subDb
   contains a single key with multiple values (aka duplicates), which are replaced
   with a single value by put-operation with the `MDBX_UPSERT+MDBX_ALLDUPS` flags.
   In this case, the database becomes completely empty, without any pages.
   However exactly this condition was not considered and thus wasn't handled correctly.
   See [issue#8](https://gitflic.ru/project/erthink/libmdbx/issue/8) for more information.

 - backport: Fixed extra assertion inside `override_meta()`, which could
   lead to false-positive failing of the assertion in a debug builds during
   DB recovery and auto-rollback.

 - backport: Refined the `__cold`/`__hot` macros to avoid the
   `error: inlining failed in call to ‘always_inline FOO(...)’: target specific option mismatch`
   issue during build using GCC >10.x for SH4 arch.

Minors:
-------

 - backport: Using the https://libmdbx.dqdkfa.ru/dead-github
   for resources deleted by the Github' administration.
 - backport: Fixed English typos.
 - backport: Fixed proto of `__asan_default_options()`.
 - backport: Fixed doxygen-description of C++ API, especially of C++20 concepts.
 - backport: Refined `const` and `noexcept` for few C++ API methods.
 - backport: Fixed copy&paste typo of "Getting started".
 - backport: Update MithrilDB status.
 - backport: Resolve false-posirive `used uninitialized` warning from GCC >10.x
   while build for SH4 arch.

22 files changed, 250 insertions(+), 174 deletions(-)
Signed-off-by: Леонид Юрьев (Leonid Yuriev) <leo@yuriev.ru>
v0.11.14
2023-02-14 15:10:41 +03:00
Леонид Юрьев (Leonid Yuriev)
29d12f1fc3 mdbx-doc: добавлено примечание к опции MDBX_HAVE_BUILTIN_CPU_SUPPORTS. 2023-02-14 12:09:44 +03:00
Леонид Юрьев (Leonid Yuriev)
257a534fbe mdbx: update ChangeLog. 2023-02-13 21:35:20 +03:00
Леонид Юрьев (Leonid Yuriev)
33b5aeb768 mdbx: refine __cold/__hot macros (backport).
В том числе для устранения проблемы
`error: inlining failed in call to ‘always_inline FOO(...)’: target specific option mismatch`
при сборке посредством GCC >10.x для SH4.
2023-02-13 21:35:20 +03:00
Леонид Юрьев (Leonid Yuriev)
f532e907e9 mdbx: fix false-positive SH4 GCC warning (backport). 2023-02-13 21:35:20 +03:00
Леонид Юрьев (Leonid Yuriev)
60736dbabb mdbx: fix English typos (backport).
Thanks to Dimitris Apostolou <dimitris.apostolou@icloud.com>
2023-02-13 21:35:20 +03:00
Леонид Юрьев (Leonid Yuriev)
24df8073ac mdbx: fix extra assertion inside override_meta() (backport). 2023-02-13 21:35:20 +03:00
Леонид Юрьев (Leonid Yuriev)
d504ca1747 mdbx: fix proto of __asan_default_options() (backport). 2023-02-13 21:35:14 +03:00
Леонид Юрьев (Leonid Yuriev)
b7ace5b216 mdbx-doc: fix doxygen-description of C++ API, especially of C++20 concepts (backport). 2023-02-13 21:28:33 +03:00
Леонид Юрьев (Leonid Yuriev)
2fabac18c0 mdbx++: refine const and noexcept for few C++ API methods (backport). 2023-02-13 21:27:55 +03:00
Леонид Юрьев (Leonid Yuriev)
51789f3605 mdbx: fix put(MDBX_UPSERT+MDBX_ALLDUPS) for case of replacement all values of a single key inside dupsorted subDb (backport).
Fixed cursor_put_nochecklen() internals for case when dupsort'ed named subDb
contains a single key with multiple values (aka duplicates), which are replaced
with a single value by put-operation with the `MDBX_UPSERT+MDBX_ALLDUPS` flags.

In this case, the database becomes completely empty, without any pages.
However exactly this condition was not considered and
thus wasn't handled correctly.

Fixes https://gitflic.ru/project/erthink/libmdbx/issue/8

Thanks Masatoshi Fukunaga <https://gitflic.ru/user/mah0x211> for reporting.
2023-02-13 21:27:55 +03:00
Леонид Юрьев (Leonid Yuriev)
6899142872 mdbx: remove extra assertion (backport).
The removed assertion could be triggered in debug builds when a reading
and writing transactions are overlapped simultaneously with a change of DB
size.

There were no other negative consequences.
2023-02-13 21:27:44 +03:00
Леонид Юрьев (Leonid Yuriev)
c44c8132e4 mdbx-doc: fix copy&paste typo of "Getting started" (backport). 2023-02-13 21:27:10 +03:00
Леонид Юрьев (Leonid Yuriev)
d376feb7bc mdbx: update MithrilDB status (backport). 2023-02-13 21:26:49 +03:00
Леонид Юрьев (Leonid Yuriev)
2ea9fbe51b mdbx: дополнение ChangeLog. 2023-02-13 20:57:43 +03:00
Леонид Юрьев (Leonid Yuriev)
57ca0d6e1b mdbx: корректировка макросов __cold/__hot.
В том числе для устранения проблемы
`error: inlining failed in call to ‘always_inline FOO(...)’: target specific option mismatch`
при сборке посредством GCC >10.x для SH4.
2023-02-13 20:57:43 +03:00
Леонид Юрьев (Leonid Yuriev)
b8092dd0db mdbx: устранение ложного предупреждения GCC при сборке для SH4. 2023-02-13 16:29:47 +03:00
Леонид Юрьев (Leonid Yuriev)
8fba5ac8d8 mdbx: устранение излишней assert-проверки внутри override_meta(). 2023-02-12 23:27:39 +03:00
Леонид Юрьев (Leonid Yuriev)
c9d11cbac1 mdbx: дополнение ChangeLog. 2023-02-11 07:35:56 +03:00
Леонид Юрьев (Leonid Yuriev)
25e958f081 mdbx: устранение всех предупреждений статического анализатора MSVC (все несущественные или ложные). 2023-02-11 00:26:06 +03:00
Леонид Юрьев (Leonid Yuriev)
7f5ea6d3b8 mdbx: корректировка прототипа __asan_default_options(). 2023-02-11 00:26:06 +03:00
Леонид Юрьев (Leonid Yuriev)
e51140fe48 mdbx-doc: корректировка doxygen-описания C++ API, в особенности C++20 concepts. 2023-02-11 00:26:06 +03:00
Леонид Юрьев (Leonid Yuriev)
bd35fe8970 mdbx-doc: добавление doxygen-описания для API с широкими символами. 2023-02-11 00:26:06 +03:00
Леонид Юрьев (Leonid Yuriev)
1684d17b0f mdbx-windows: поддержка char-версии mdbx_env_get_path(). 2023-02-11 00:26:06 +03:00
Леонид Юрьев (Leonid Yuriev)
ebbe98afa5 mdbx-windows: ликвидация макроса OSAL_MB2WIDE(). 2023-02-11 00:26:06 +03:00
Леонид Юрьев (Leonid Yuriev)
351a30f186 mdbx-windows: не расходуем стек под буферы для wchar-преобразования путей. 2023-02-09 22:37:31 +03:00
Леонид Юрьев (Leonid Yuriev)
2a41b24876 mdbx++: уточнение const и noexcept для нескольких методов. 2023-02-09 15:14:39 +03:00
Леонид Юрьев (Leonid Yuriev)
fb827959a9 mdbx: исправление put(MDBX_UPSERT+MDBX_ALLDUPS) для случая замены всех значений в subDb.
Fixed cursor_put_nochecklen() internals for case when dupsort'ed named subDb
contains a single key with multiple values (aka duplicates), which are replaced
with a single value by put-operation with the `MDBX_UPSERT+MDBX_ALLDUPS` flags.

In this case, the database becomes completely empty, without any pages.
However exactly this condition was not considered and
thus wasn't handled correctly.

Fixes https://gitflic.ru/project/erthink/libmdbx/issue/8

Thanks Masatoshi Fukunaga <https://gitflic.ru/user/mah0x211> for reporting.
2023-02-01 01:04:24 +03:00
Леонид Юрьев (Leonid Yuriev)
209f784ee7 mdbx: исправление assert-проверок внутри dxb_resize().
Устранение регресса после a484a1f89bcbf38aeb7a81d6080605f86ddc7933.

Проверка `prev_limit_pgno >= used_pgno` правомочна только в части сценариев,
но не в общем случае.
2023-01-23 23:54:11 +03:00
Леонид Юрьев (Leonid Yuriev)
68ebbe1fde mdbx: Обновление ChangeLog. 2023-01-18 18:34:52 +03:00
Леонид Юрьев (Leonid Yuriev)
486711945d mdbx-doc: исправление copy&paste опечатки в "Getting started". 2023-01-18 18:34:25 +03:00
Леонид Юрьев (Leonid Yuriev)
3ade7c7ba1 mdbx: обновление статуса MithrilDB. 2023-01-16 19:12:08 +03:00
Леонид Юрьев (Leonid Yuriev)
c01f025bfa mdbx: обновление года на 2023. 2023-01-16 16:32:02 +03:00
Леонид Юрьев (Leonid Yuriev)
a484a1f89b mdbx: рефакторинг dxb_resize() и связанного кода.
В том числе, для устранения срабатывания assert-проверки
`size_bytes == env->me_dxb_mmap.current` в специфических многопоточных
сценариях использования.

Проверка срабатывала только в отладочных сборках, при специфическом
наложении во времени читающей и пишущей транзакции в разных потоках,
одновременно с изменением размера БД.

Кроме срабатывание проверки, каких-либо других последствий не возникало.
2023-01-16 02:20:56 +03:00
Леонид Юрьев (Leonid Yuriev)
0979a93a78 mdbx: добавлено примечание об ошибке MinGW MSYS2. 2023-01-12 17:01:27 +03:00
Леонид Юрьев (Leonid Yuriev)
a98c73f4f6 mdbx-cmake: вызов mdbx_chk в режиме чтения-записи для проверки MDBX_EXCLUSIVE в этом режиме. 2023-01-12 17:01:27 +03:00
Leonid Yuriev
9e15bd9b29 mdbx-windows: устранение регресса ERROR_SHARING_VIOLATION в режиме MDBX_EXCLUSIVE.
Спасибо maxc0d3r@protonmail.com за сообщение о проблеме.
2023-01-12 17:01:27 +03:00
Leonid Yuriev
0159f97e94 mdbx: ограничиваем размер отображения при коротком read-only файле.
Цель в предотвращении ошибки ERROR_NOT_ENOUGH_MEMORY в Windows, которая
совсем не информативна для пользователя и возникает в этом случае (когда
файл открыт read-only и короче запрошенного размера).
2023-01-12 01:53:22 +03:00
Леонид Юрьев (Leonid Yuriev)
56050f201f mdbx: обновление ChangeLog. 2023-01-10 15:03:38 +03:00
Леонид Юрьев (Leonid Yuriev)
525c4a55a4 mdbx: fix English typos.
Thanks to Dimitris Apostolou <dimitris.apostolou@icloud.com>
2023-01-10 14:16:08 +03:00
Леонид Юрьев (Leonid Yuriev)
702c67fc38 mdbx-test: доработка append-теста.
- добавлен speculum-контроль;
- с вероятностью 1/8 генерируются не-последовательные/не-упорядоченные ключи для проверки возврата MDBX_EKEYMISMATH;
- игнорирование расхождение хеша последовательности для не-последовательных ключей.
2023-01-09 23:51:34 +03:00
Леонид Юрьев (Leonid Yuriev)
3da23da7b3 mdbx: косметический рефакторинг контроля MDBX_APPEND. 2023-01-09 21:39:42 +03:00