2588 Commits

Author SHA1 Message Date
Леонид Юрьев (Leonid Yuriev)
79b33ba8fd mdbx: устранение предупреждения lcc-1.29 2025-06-28 00:34:04 +03:00
Леонид Юрьев (Leonid Yuriev)
a600c2a7a2 mdbx: устранение вероятности ошибки MDBX_ENODATA при поиске в GC. 2025-06-28 00:34:04 +03:00
Леонид Юрьев (Leonid Yuriev)
10bf63eb9a mdbx: замена части PNL-макросов функциями. 2025-06-28 00:34:04 +03:00
Леонид Юрьев (Leonid Yuriev)
9020ea9d6c mdbx: допущение нехватки страниц при ранней/не-отложенной очистке GC (продолжение). 2025-06-28 00:34:04 +03:00
Леонид Юрьев (Leonid Yuriev)
ecf5acfff0 mdbx: изоляция txl-списков от кода PNL. 2025-06-28 00:34:04 +03:00
Леонид Юрьев (Leonid Yuriev)
bb37c93dd5 mdbx: ранняя/не-отложенная очистка GC (начало). 2025-06-28 00:34:04 +03:00
Леонид Юрьев (Leonid Yuriev)
b49cd49c68 mdbx: интенсификация слияния страниц изменением порога по-умолчанию с 25% до 33%.
Ранее две страницы объединялись если были заполнены на 25% или менее, с образованием страницы заполненной на 50% или менее.

Теперь порог по-умолчанию установлен в 33%, что при объединении будет порождать страницу заполненную на 66%.
2025-06-28 00:34:04 +03:00
Леонид Юрьев (Leonid Yuriev)
75131c082b mdbx: добавление rkl_destructive_merge() и унификация порядка dst/src аргументов rkl_merge(). 2025-06-28 00:34:04 +03:00
Леонид Юрьев (Leonid Yuriev)
3462bc116a mdbx: удаление known_continuous аргумента rkl_push(). 2025-06-28 00:34:04 +03:00
Леонид Юрьев (Leonid Yuriev)
b3329fddf2
mdbx: исправление опечатки MDBX_ENOMEM.
Вместо `MDBX_ENOMEM` был использован идентификатор `ENOMEM`,
что могло ломать сборку на не-POSIX/Windows платформах,
в зависимости от конфигурации и/или версии SDK.
2025-06-01 11:26:17 +03:00
Леонид Юрьев (Leonid Yuriev)
8b4ec09d08 mdbx: исправление имён параметров в прототипе rkl_destructive_move(). 2025-05-29 22:56:34 +03:00
Леонид Юрьев (Leonid Yuriev)
e03b8e1227 mdbx: добавление ignore_enosys_and_einval() и её использование для отказа от OFD-блокировок. 2025-05-20 13:37:54 +03:00
Леонид Юрьев (Leonid Yuriev)
c88c51d33c mdbx: разделение ignore_enosys() и ignore_enosys_and_eagain(). 2025-05-20 13:37:54 +03:00
Леонид Юрьев (Leonid Yuriev)
ef82fea032 mdbx: избавление от memset() внутри lck_op(). 2025-05-20 13:37:54 +03:00
Леонид Юрьев (Leonid Yuriev)
f82cf6a4b3 mdbx: перемещение и доработка проверки _FILE_OFFSET_BITS для Android. 2025-05-20 13:37:54 +03:00
Леонид Юрьев (Leonid Yuriev)
9da03deac0 mdbx: исправление пропущенного const (косметика). 2025-05-16 00:08:51 +03:00
Леонид Юрьев (Leonid Yuriev)
34f0f682da mdbx: исправление assert-проверки внутри txn_end().
В случае ошибки запуска транзакции (например из-за невозможности расширения отображения при увеличении БД в другом процессе),
сигнатура транзакции отсутствует, что вызывало срабатывание assert-проверки.
2025-05-15 23:29:18 +03:00
Леонид Юрьев (Leonid Yuriev)
800c96f22f
mdbx: доработка перераспределения резерва при возврате страниц в GC.
В экстремальных случаях, масштабирование одного операнда и 32-бит не хватает для предотвращения потери значимости расчетного коэффициента.
Поэтому здесь реализован переход на фиксированную точку 32-точка-32 с одним 64-битным делением и двумя полными умножениями 32*32->64.

Для 32-битных систем можно сделать чуть легче, заменив 64-битую арифметику масштабированием (адаптивным сдвигом) обоих операндов, но пока не вижу в этом смысла.
2025-05-02 17:59:30 +03:00
Леонид Юрьев (Leonid Yuriev)
d1023dc6b5
mdbx: merge branch devel. 2025-04-29 12:03:50 +03:00
Леонид Юрьев (Leonid Yuriev)
76e2544cc0 mdbx: доработки gc_handle_dense() для экстремально-редких случаев. 2025-04-29 08:39:18 +03:00
Леонид Юрьев (Leonid Yuriev)
0a96b2ad97 mdbx-doc: дополнение раздела "Containers" в README. 2025-04-28 14:43:01 +03:00
Леонид Юрьев (Leonid Yuriev)
402a8e62be mdbx: merge branch master into devel. 2025-04-26 00:17:57 +03:00
Леонид Юрьев (Leonid Yuriev)
06300de34e mdbx: подсказки для coverity. 2025-04-26 00:15:52 +03:00
Леонид Юрьев (Leonid Yuriev)
da9f78d2f6 mdbx: несущественные доработки rkl. 2025-04-26 00:15:52 +03:00
Леонид Юрьев (Leonid Yuriev)
a5af0c1a85 mdbx: исправление глупой утечки памяти в rkl_destroy(). 2025-04-26 00:15:52 +03:00
Леонид Юрьев (Leonid Yuriev)
2b36fd5974
mdbx: новый код обновления GC. 2025-04-26 00:15:41 +03:00
Леонид Юрьев (Leonid Yuriev)
3338551860 mdbx: рефакторинг макроса TXN_FOREACH_DBI_FROM с выделением функции dbi_foreach_step(). 2025-04-24 23:26:22 +03:00
Леонид Юрьев (Leonid Yuriev)
1c7a5e18fe mdbx: подсказки для coverity. 2025-04-24 15:39:07 +03:00
Леонид Юрьев (Leonid Yuriev)
6627d14edf mdbx: упрощение старта транзакций и исправление возможности double-free при ошибке создания вложенной транзакции. 2025-04-24 11:11:31 +03:00
Леонид Юрьев (Leonid Yuriev)
52c9ef8807 mdbx: merge branch stable into master. 2025-04-22 15:56:02 +03:00
Леонид Юрьев (Leonid Yuriev)
b6f918aa1c
mdbx: исправление опечатки в логировании (backport). 2025-04-22 11:17:39 +03:00
Леонид Юрьев (Leonid Yuriev)
02b56e185f mdbx: добавление rkl_find() и rkl_merge(). 2025-04-21 21:38:17 +03:00
Леонид Юрьев (Leonid Yuriev)
576fc94fef mdbx: исправление опечатки в логировании (косметика). 2025-04-21 21:30:26 +03:00
Леонид Юрьев (Leonid Yuriev)
a56f5acc3d mdbx: рефакторинг tree_rebalance() и реализации опции MDBX_opt_prefer_waf_insteadof_balance. 2025-04-20 18:46:08 +03:00
Леонид Юрьев (Leonid Yuriev)
5548ef20f6
mdbx: переупорядочивание атрибутов для совместимости с GCC-15 в режиме C23 (backport). 2025-04-19 23:44:07 +03:00
Леонид Юрьев (Leonid Yuriev)
76a588f91b
mdbx: исправление возврата MDBX_BAD_TXN вместо MDBX_EINVAL из mdbx_cursor_unbind() в особых случаях (backport). 2025-04-19 23:42:59 +03:00
Леонид Юрьев (Leonid Yuriev)
6b5515908b
mdbx: предотвращение возврата неожиданной ошибки MDBX_BUSY из mdbx_txn_lock(dont_wait=false) (backport). 2025-04-19 23:42:34 +03:00
Леонид Юрьев (Leonid Yuriev)
89de43293d mdbx: исправление возврата MDBX_BAD_TXN вместо MDBX_EINVAL из mdbx_cursor_unbind() в особых случаях. 2025-04-19 20:01:57 +03:00
Леонид Юрьев (Leonid Yuriev)
270cf399aa mdbx: упрощение очистки MDBX_TXN_HAS_CHILD. 2025-04-19 20:01:57 +03:00
Леонид Юрьев (Leonid Yuriev)
b5503b5670 mdbx: исправление форматирования (косметика). 2025-04-19 20:01:36 +03:00
Леонид Юрьев (Leonid Yuriev)
a71cefc288 mdbx: предотвращение возврата неожиданной ошибки MDBX_BUSY из mdbx_txn_lock(dont_wait=false). 2025-04-19 14:07:26 +03:00
Леонид Юрьев (Leonid Yuriev)
0d7d4db3f1 mdbx: понижение уровня отладочного логирования lru-reduce. 2025-04-19 14:07:26 +03:00
Леонид Юрьев (Leonid Yuriev)
0f505c1377 mdbx: переупорядочивание атрибутов для совместимости с GCC-15 в режиме C23. 2025-04-18 10:49:00 +03:00
Леонид Юрьев (Leonid Yuriev)
a22c0c5c48
mdbx: подсказка для Coverity для подавления ложно-положительных предупреждений (backport). 2025-04-10 16:35:53 +03:00
Леонид Юрьев (Leonid Yuriev)
9540cabf5f
mdbx: возврат MDBX_EINVAL из mdbx_cursor_bind() при невозможности отвязки курсора от его текущей транзакции (backport). 2025-04-10 16:34:57 +03:00
Леонид Юрьев (Leonid Yuriev)
0e3b093eb5
mdbx: исправление неверной assert-проверки и микрооптимизация (backport).
В пути фиксации вложенных транзакций, условие в assert-проверке не было
корректным для случая, когда таблица уже существовала и её дескриптор
был открыт, использовался в завершаемой вложенной транзакции, но не
использовался в родительской.

Это исправление недочета также передаёт, уже загруженное из БД, кешируемое
состояние таблицы в родительскую транзакцию.
2025-04-10 16:34:19 +03:00
Леонид Юрьев (Leonid Yuriev)
5d38add405
mdbx: исправление ошибок merge/rebase (backport). 2025-04-10 16:33:10 +03:00
Леонид Юрьев (Leonid Yuriev)
5bd99d4da2 mdbx: подсказка для Coverity для подавления ложно-положительных предупреждений. 2025-04-10 12:25:50 +03:00
Леонид Юрьев (Leonid Yuriev)
a04053ee98 mdbx: возврат MDBX_EINVAL из mdbx_cursor_bind() при невозможности отвязки курсора от его текущей транзакции. 2025-04-10 12:25:32 +03:00
Леонид Юрьев (Leonid Yuriev)
f35c1fe5bc mdbx: исправление неверной assert-проверки и микрооптимизация.
В пути фиксации вложенных транзакций, условие в assert-проверке не было
корректным для случая, когда таблица уже существовала и её дескриптор
был открыт, использовался в завершаемой вложенной транзакции, но не
использовался в родительской.

Это исправление недочета также передаёт уже загруженное из БД кешируемое
состояние таблицы в родительскую транзакцию.
2025-04-10 12:24:39 +03:00