Skip to content

Commit

Permalink
mdbx: v0.13.3 (#158)
Browse files Browse the repository at this point in the history
* save

* save
  • Loading branch information
AskAlexSharov authored Jan 24, 2025
1 parent 1a90144 commit c6c6c6e
Show file tree
Hide file tree
Showing 12 changed files with 398 additions and 164 deletions.
39 changes: 37 additions & 2 deletions mdbxdist/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@ ChangeLog
English version [by liar Google](https://libmdbx-dqdkfa-ru.translate.goog/md__change_log.html?_x_tr_sl=ru&_x_tr_tl=en)
and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/libmdbx.dqdkfa.ru/md__change_log.html).

## v0.13.3 в процессе
## v0.13.3 "Королёв" от 2025-01-12

Поддерживающий выпуск с исправлением обнаруженных ошибок и устранением недочетов
в день рождения и в память об [Серге́е Па́вловиче Королёве](https://ru.wikipedia.org/wiki/Королёв,_Сергей_Павлович),
советском учёном и Главном конструкторе ракетно-космических систем.

Благодарности:

Expand All @@ -14,9 +18,14 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/libmdbx

Новое:

- В API добавлена функция `mdbx_cursor_count_ex()` позволяющая получить как количество мульти-значений
- В C API добавлена функция `mdbx_cursor_count_ex()` позволяющая получить как количество мульти-значений
соответствующих текущему ключу, так и информацию о вложенном дереве хранящем эти значения.

- В C++ API добавлен метод `mdbx::txn::make_broken()` аналогичный `mdbx_txn_break()`.

- В утилиты mdbx_copy, mdbx_drop, mdbx_dump, mdbx_load, mdbx_stat добавлено логирование ошибок,
предупреждений и важных сообщений от libmdbx.

Исправления:

- Устранён регресс неразблокировки мьютекса при попытки повторного закрытия dbi-дескриптора,
Expand Down Expand Up @@ -69,13 +78,39 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/libmdbx
Ошибка была внесена при рефакторинге, коммитом `2f2df1ee76ab137ee66d00af69a82a30dc0d6deb`
чуть более 5 лет назад и долго оставалось не замеченной.

- Устранён SIGSEGV-регресс обращения к нулевому адресу при работе в режиме только-чтение без использования LCK-файла,
например при размещении БД на носителе доступном только для чтения.

Ошибка была внесена при реализации функционала парковки читающих транзакций.

Изменение поведения:

- Теперь при включении профилирования GC (сборка с опцией `MDBX_ENABLE_PROFGC=ON`)
подсчитываются затраты времени ЦПУ на слияние списков страниц, т.е. на работу функции `pnl_merge()`.

- В утилите тестирования значение режима данных переименовано из `data.dups` в `data.multi`.

- Доработан контроль длины ключа внутри `cursor_seek()`.

Ранее проверка внутри `cursor_seek()` не позволяла искать ключи длиннее, чем можно поместить в таблицу.
Однако, при поиске/позиционировании это не является ошибкой для таблиц с ключами переменного размера.

- Если посредством `mdbx_env_set_option(MDBX_opt_txn_dp_limit)` пользователем не задано собственно значение,
то выполняется подстройка dirty-pages-limit при старте каждой не-вложенной пишущей транзакций,
исходя из объёма доступного ОЗУ и размера БД.

- Теперь в режиме `MDBX_NOSTICKYTHREADS` допускается commit/abort вложенных транзакций из любого треда/потока.

- Теперь при попытке запуска вложенных транзакций в режиме `MDBX_WRITEMAP` производится
логирование и возврат ошибки `MDBX_INCOMPATIBLE`.

- Теперь в C++ API в конструкторах/инициализаторах и методах связанных с формированием геометрии БД
по-умолчанию используются только `default`-значений, в том числа для минимального и максимального
размера. В результате, при создании БД с геометрией по-умолчанию не происходит выбор максимального
размера страницы из-за очень большого максимального размера БД.

- Внутри `mdbx_env_set_geometry()` доработаны эвристики для подбора параметров геометрии БД запрошенных пользователем "по-умолчанию".

--------------------------------------------------------------------------------

## v0.13.2 "Прошлогодний Снег" (Last Year's Snow) от 2024-12-11
Expand Down
10 changes: 8 additions & 2 deletions mdbxdist/GNUmakefile
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ CFLAGS_EXTRA ?=
LD ?= ld
CMAKE ?= cmake
CMAKE_OPT ?=
CTEST ?= ctest
CTEST_OPT ?=
# target directory for `make dist`
DIST_DIR ?= dist

Expand Down Expand Up @@ -262,8 +264,12 @@ lib-shared libmdbx.$(SO_SUFFIX): mdbx-dylib.o $(call select_by,MDBX_BUILD_CXX,md

ninja: cmake-build
cmake-build:
@echo "-G Ninja . && cmake --build ."
$(QUIET)mkdir @cmake-ninja-build && $(CMAKE) $(CMAKE_OPT) -G Ninja -S . -B @cmake-ninja-build && $(CMAKE) --build @cmake-ninja-build
@echo " RUN: cmake -G Ninja && cmake --build"
$(QUIET)mkdir -p @cmake-ninja-build && $(CMAKE) $(CMAKE_OPT) -G Ninja -S . -B @cmake-ninja-build && $(CMAKE) --build @cmake-ninja-build

ctest: cmake-build
@echo " RUN: ctest .."
$(QUIET)$(CTEST) --test-dir @cmake-ninja-build --parallel `(nproc | sysctl -n hw.ncpu | echo 2) 2>/dev/null` --schedule-random $(CTEST_OPT)

################################################################################
# Amalgamated source code, i.e. distributed after `make dist`
Expand Down
Loading

0 comments on commit c6c6c6e

Please sign in to comment.