4338 Commits

Author SHA1 Message Date
Леонид Юрьев (Leonid Yuriev)
462af2be48 mdbx: исправление ошибки редактирования README. 2024-12-20 11:46:01 +03:00
Леонид Юрьев (Leonid Yuriev)
d3a27d27f6 mdbx-doc: добавление yandex-метрики в генерируемый html. 2024-12-19 17:49:40 +03:00
Леонид Юрьев (Leonid Yuriev)
0d1c08677d mdbx: корректировка ChangeLog. 2024-12-18 13:01:52 +03:00
Леонид Юрьев (Leonid Yuriev)
e43cf69a0c mdbx-doc: изменение базы ссылок online-перевода с gitflic.ru на libmdbx.dqdkfa.ru. 2024-12-18 12:27:37 +03:00
Леонид Юрьев (Leonid Yuriev)
891fa1d435 mdbx: корректировка doxygen-комментариев. 2024-12-18 01:25:50 +03:00
Леонид Юрьев (Leonid Yuriev)
5a9eea8acc mdbx: дополнение ChangeLog. 2024-12-18 01:21:00 +03:00
Леонид Юрьев (Leonid Yuriev)
e15079ec68 mdbx: изменение log_if_error() ради устранения ложных "may be used uninitialized" предупреждений в LTO-сборках.
При включении LTO анализатор путей выполнения внутри GCC начинает укачивать из-за выражений вида `return LOG_IFERR(MDBX_EINVAL);`

Проблема в том, что несмотря на __builtin_assume() и __builtin_unreachable(), комплятор не хочет
видеть что функция log_if_error() всегда возвращает получаемое значение. А если допустить что значение
будет изменено, то вместо ошибки может быть MDBX_SUCCESS, и тогда в вызывающем как-бы может произойти
обращение к неинициализированным данным, что и беспокоит компилятор.

Например, при сборке mdbx_load:
  ‘txn_info.txn_space_dirty’ may be used uninitialized [-Wmaybe-uninitialized]

Проэтому проще пойти анализатору навстречу и упростить исходный код.
Теперь код ошибки явно пробрасывается через тело inline-функции, но это
требует 1-2 дополнительных процессорных инструкции на каждое применение
макроса LOG_IFERROR.

Также здесь откатывается коммит 81a8127084d9a6a7777bb375e029062330e51979.
2024-12-17 22:00:33 +03:00
Леонид Юрьев (Leonid Yuriev)
ba6df2bb6d mdbx: выделение API-функций в api-файлы. 2024-12-17 19:00:39 +03:00
Леонид Юрьев (Leonid Yuriev)
4607184999 mdbx: макрос osal_malloc_usable_size() вместо непосредственного использования malloc_usable_size(). 2024-12-17 18:58:44 +03:00
Леонид Юрьев (Leonid Yuriev)
5168c80be8 mdbx: сбор затрат на pnl_merge() при включении MDBX_ENABLE_PROFGC. 2024-12-17 18:54:58 +03:00
Леонид Юрьев (Leonid Yuriev)
6ed4dcb4ea mdbx: добавление отладочных сообщений при возврате ошибок из API. 2024-12-16 13:31:07 +03:00
Леонид Юрьев (Leonid Yuriev)
122562cf9c mdbx-tests: переименование опции data.dups в data.multi. 2024-12-16 12:16:11 +03:00
Леонид Юрьев (Leonid Yuriev)
526ed28de1 mdbx: добавление mdbx_cursor_count_ex() в API. 2024-12-16 11:54:24 +03:00
Леонид Юрьев (Leonid Yuriev)
90b187c3ba mdbx: добавление проверок в inner_hollow(). 2024-12-16 11:30:10 +03:00
Леонид Юрьев (Leonid Yuriev)
a845522db7 mdbx: исправление регресса состояния dupsort-курсора после cursor_put(APPEND).
При добавлении нового ключа в append-режиме, в случае когда в текущей
(последней) позиции с ключом связаны несколько значений и
(соответственно) вложенный dupsort-курсор инициализирован, вставка
происходила без сброса вложенного курсора.

В результате вложенный курсор логически оставался стоять на
multivalue-данных связанных с предыдущей позицией основного курсора,
т.е. переходил в неконсистентное состояние.

Ошибка проявлялась возвратом неверных значений из mdbx_cursor_count()
или срабатывание assert-проверки в отладочных сборках.
2024-12-15 22:17:12 +03:00
Леонид Юрьев (Leonid Yuriev)
c66dac50c3 mdbx: доработка osal_bootid() для LXC.
Из LXC-контейнера не доступен файл хостовой системы "/proc/sys/kernel/random/boot_id".
Вместо него, при каждом старте контейнера, создается и заполняется
случайными данными собственный boot_id смонтированный через bind из tmpfs.
https://github.com/lxc/lxc/issues/3027

Поэтому полноценный контроль по boot_id не возможен, так как при
рестарте LXC-контейнера (но не хоста) boot_id будет меняться, хотя
данные в unified page cache сохраняются.

Таким образом, при рестарте LXC-контейнера, libmdbx будет производить
откат БД до крайней точки устойчивой фиксации, что может приводить к
утрате данных пользователя в случаях когда они могли быть сохранены.
Однако, улучшить ситуацию пока не представляется возможным, как минимум
до доступности boot_id хостовой системы изнутри LXC-контейнера.

Этот коммит частично улучшает ситуацию тем, что позволяет использовать
фейковый/замещенный boot_id размещенный в файловой системе с типом tmpfs
при работе внутри LXC-контейнера.
2024-12-13 22:30:40 +03:00
Леонид Юрьев (Leonid Yuriev)
ccdb6255e9 mdbx: возврат MDBX_EINVAL при попытке запустить вложенную читающую транзакцию. 2024-12-13 08:26:55 +03:00
Леонид Юрьев (Leonid Yuriev)
ea3f99f58f mdbx-cmake: удаление add_mdbx_option(). 2024-12-12 13:07:49 +03:00
Леонид Юрьев (Leonid Yuriev)
513518ca5e mdbx-cmake: синхронизация утилит между проектами. 2024-12-12 13:06:44 +03:00
Леонид Юрьев (Leonid Yuriev)
f2dc60aa53 mdbx-cmake: новые настройки cmake-format (косметика). 2024-12-12 11:20:34 +03:00
Леонид Юрьев (Leonid Yuriev)
b687e835e9
mdbx: выпуск 0.13.2 "Прошлогодний Снег" (Last Year's Snow).
Поддерживающий выпуск с исправлением обнаруженных ошибок и устранением недочетов
в день рождения и в память об [Алекса́ндре Миха́йловиче Тата́рском](https://ru.wikipedia.org/wiki/Татарский,_Александр_Михайлович),
российском режиссёре-мультипликаторе, создавшем такие знаменитые мультфильмы как "Падал прошлогодний снег",
"Пластилиновая ворона", заставку "Спокойной ночи, малыши!" и многие другие шедевры нашего детства.

За перечнем доработок и изменений обращайтесь к [ChangeLog](https://libmdbx.dqdkfa.ru/md__change_log.html).

git diff' stat: 151 files changed, 10647 insertions(+), 14952 deletions(-)
Signed-off-by: Леонид Юрьев (Leonid Yuriev) <leo@yuriev.ru>
v0.13.2
2024-12-11 21:51:56 +03:00
Леонид Юрьев (Leonid Yuriev)
8867c2ddc2 mdbx: новые настройки clang-format (косметика). 2024-12-11 21:22:04 +03:00
Леонид Юрьев (Leonid Yuriev)
3c4d019d00 mdbx-cmake: явное ракрытие переменных в if-условиях для обхода бага-фичи CMake. 2024-12-11 21:04:00 +03:00
Леонид Юрьев (Leonid Yuriev)
dbf18b4c22 mdbx-make: исправление подстановки переменных SemVer. 2024-12-11 21:02:50 +03:00
Леонид Юрьев (Leonid Yuriev)
5652b360b9 mdbx: незначительные правки README. 2024-12-11 15:04:49 +03:00
Леонид Юрьев (Leonid Yuriev)
529b0357e8 mdbx-cmake: исправление ошибки при copy&paste. 2024-12-10 17:06:45 +03:00
Леонид Юрьев (Leonid Yuriev)
fe627ed2f2 mdbx: дополнение ChangeLog. 2024-12-08 09:33:08 +03:00
Леонид Юрьев (Leonid Yuriev)
7aed3a7609 mdbx: дополнение и корректировка README. 2024-12-08 09:33:08 +03:00
Леонид Юрьев (Leonid Yuriev)
1566a0006c mdbx: исправление регресса в mdbx_env_stat_ex(). 2024-12-07 19:04:27 +03:00
Леонид Юрьев (Leonid Yuriev)
9481c0e5c4 mdbx: опечатки/орфография. 2024-12-06 23:56:13 +03:00
Леонид Юрьев (Leonid Yuriev)
207ad31257 mdbx: добавление в README упоминаний о поддержке Conan. 2024-12-06 20:36:48 +03:00
Леонид Юрьев (Leonid Yuriev)
3a09b8fb0c mdbx: координаты для спонсирования в ETH.
// Пока Positive Technologies, пора заняться делом.
2024-12-06 18:44:41 +03:00
Леонид Юрьев (Leonid Yuriev)
d1b2ec0489 mdbx-cmake: удаление двойной проверки версии MSVC. 2024-12-04 23:50:33 +03:00
Леонид Юрьев (Leonid Yuriev)
367a118a8f mdbx: дополнение ChangeLog. 2024-12-03 00:23:37 +03:00
Леонид Юрьев (Leonid Yuriev)
e2ca81ae83 mdbx: поддержка Conan. 2024-12-03 00:23:37 +03:00
Леонид Юрьев (Leonid Yuriev)
44865dadc7 mdbx: переименование и доработка опций сборки. 2024-12-03 00:23:37 +03:00
Леонид Юрьев (Leonid Yuriev)
35177611d2 mdbx: исправление сборки при MDBX_ENABLE_DBI_SPARSE=OFF. 2024-12-03 00:11:28 +03:00
Леонид Юрьев (Leonid Yuriev)
99fa43f322 mdbx: удаление устаревшего CMakeSettings.json 2024-12-02 18:10:32 +03:00
Леонид Юрьев (Leonid Yuriev)
acb3cb0290 mdbx: исправление сборки при включении профилирования GC (опция MDBX_ENABLE_PROFGC). 2024-12-02 17:40:07 +03:00
Леонид Юрьев (Leonid Yuriev)
5327f42465 mdbx: дополнение ChangeLog. 2024-11-28 20:07:27 +03:00
Леонид Юрьев (Leonid Yuriev)
4c5be88038 mdbx-cmake: исправление semver_provide() для случая символических ссылок в путях. 2024-11-28 14:54:55 +03:00
Леонид Юрьев (Leonid Yuriev)
ad0b374eb5 mdbx: добавление MDBX_MAYBE_UNUSED для log_if_error(). 2024-11-28 00:05:36 +03:00
Леонид Юрьев (Leonid Yuriev)
c716531bd4 mdbx-cmake: использование CMAKE_C_STANDARD при выборе стандарта C. 2024-11-27 23:25:41 +03:00
Леонид Юрьев (Leonid Yuriev)
9d79d2ba95 mdbx: дополнение ChangeLog. 2024-11-27 21:17:49 +03:00
Леонид Юрьев (Leonid Yuriev)
76c9b42e86 mdbx: исправление GET_MULTIPLE для специальных случаев и/или одного значения. 2024-11-27 18:28:39 +03:00
Леонид Юрьев (Leonid Yuriev)
81a8127084 mdbx: устранение "may be used uninitialized" предупреждений в LTO-сбрках из-за усложнения SSA/CTF вследствие добавления LOG_IFERR(). 2024-11-27 18:28:39 +03:00
Леонид Юрьев (Leonid Yuriev)
28bd805ed8 mdbx: возможность логирования ошибок возвращаемых из API (return LOG_IFERR).
Возможность полезная, но пожалуй еще нуждается в доработке и/или
до-осмыслении. Основное неудобство в нестыковке с основным логированием.

С одной стороны, сообщение об ошибках следует выводить с
уровнем/severity MDBX_LOG_ERROR. Однако, это замусоривает и ломает
тесты.

Поэтому сейчас при возвращении ошибок из API сообщения логируются
MDBX_LOG_ERROR, но производится это только при включении уровня
логирования MDBX_LOG_DEBUG или более детальном.
2024-11-27 12:08:32 +03:00
Леонид Юрьев (Leonid Yuriev)
9daff17c82 mdbx: поддержка Semantic Versioning.
Было `MAJOR.MINOR.RELEASE.REVISION`
Теперь `MAJOR.MINOR.PATCH[.TWEAK][-PRERELEASE][+BUILDMETADATA]`

https://semver.org/

 - вместо квартета `MAJOR.MINOR.RELEASE.REVISION`
   триплет c опцинальным четвертым членом `MAJOR.MINOR.PATCH[.TWEAK]`

 - `TWEAK` не входит в тег git, а формируется автоматически и
   соответствует кол-ву коммитов после тега git и опускается если 0.

 - Поле `PRERELEASE` опционально и переносится в версию из тега git.

 - Поле `BUILDMETADATA` опционально, не входит в тег git, а
   добавляется во время сборки если задана опцией `MDBX_BUILD_METADATA`.
2024-11-24 20:46:21 +03:00
Леонид Юрьев (Leonid Yuriev)
bcf0a1273f mdbx-make: добавление .WAIT для устранения коллизий при распараллеливании сборки. 2024-11-24 19:59:40 +03:00
Леонид Юрьев (Leonid Yuriev)
6508bd5a97 mdbx-cmake: включение CMP0054. 2024-11-24 18:42:53 +03:00