libmdbx 0.12.13
0
Описание
Завершающий выпуск архивной ветки с исправлением обнаруженных ошибок и устранением недочётов.
For translation to other languages please try Yandex or liar Google.
git diff' stat: 14 commits, 7 files changed, 256 insertions(+), 103 deletions(-)
Значимые исправления:
- Исправлена обработка
MDBX_GET_MULTIPLE
в специальных случаях и одного значения у ключа в позиции курсора. - Устранена ошибка неверной обработки попытки запуска вложенной читающей транзакции. Теперь в таких ситуациях возвращается ошибка
MDBX_EINVAL
, так как вложенность поддерживается только для транзакций чтения-записи. Ошибка была внесена при рефакторинге, коммитом2f2df1ee76ab137ee66d00af69a82a30dc0d6deb
чуть более 5 лет назад и долго оставалось не замеченной. - Поддержка получения boot_id при работе внутри LXC-контейнера. Из LXC-контейнера не доступен файл хостовой системы
/proc/sys/kernel/random/boot_id
. Вместо него, при каждом старте контейнера, создается и заполняется случайными данными собственный boot_id смонтированный через bind изtmpfs
. https://github.com/lxc/lxc/issues/3027. Ранее этот подставной/замещенный boot_id отбраковывался внутри libmdbx, так как файл располагается вtmpfs
, а не в файловой системе/proc
. В результате boot_id для проверки целостности БД не был доступен. Теперь при работе внутри LXC-контейнера такой bootid будет использоваться. Однако, полноценно работающий контроль по boot_id не возможен, так как при рестарте LXC-контейнера (но не хоста) boot_id будет меняться, хотя данные в unified page cache сохраняются. Таким образом, при рестарте LXC-контейнера без рестарта хоста, libmdbx придется откатить состояние БД до крайней точки устойчивой фиксации, что повлечет утрату данных пользователя в случаях когда они могли быть сохранены. Однако, улучшить ситуацию пока не представляется возможным, как минимум до доступности boot_id хостовой системы изнутри LXC-контейнера. - Доработан контроль длины ключа внутри
cursor_set()
. Ранее проверка внутриcursor_set()
не позволяла искать ключи длиннее, чем можно поместить в таблицу. Однако, при поиске/позиционировании это не является ошибкой для таблиц с ключами переменного размера. - Теперь при попытке запуска вложенных транзакций в режиме
MDBX_WRITEMAP
производится логирование и возврат ошибкиMDBX_INCOMPATIBLE
. - Доработано использование
std::experimental::filesystem
для решения проблем со сборкой в старых компиляторах.
Загрузки:
- 293K, libmdbx-amalgamated-0.12.13.zpaq, sha256sum:
7d48b0e5d2b9ed0a4f864bab8e6d2bad9e2359fed32787ae2be333af5d26e0e3
- 393K, libmdbx-amalgamated-0.12.13.tar.xz, sha256sum:
c15b91a155806689e0e684ee422e99c41317275fbb64a26f2face710fc1d4967
За информацией о предыдущих версиях обращайтесь к тегам git и ChangeLog.
Файлы
Нет файлов