Леонид Юрьев (Leonid Yuriev)
7eb2f4130e
mdbx: использование const MDBX_txn
где это возможно в API (backport).
2023-11-12 19:33:27 +03:00
Леонид Юрьев (Leonid Yuriev)
af4dfe541b
mdbx: добавление mdbx_env_resurrect_after_fork()
в API.
2023-11-12 01:49:53 +03:00
Леонид Юрьев (Leonid Yuriev)
c9c02dddfb
mdbx: добавление mdbx_dbi_rename()
в API.
2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
e6af7d7c53
mdbx: переработка инициализации, проверки и импорта dbi-хендлов в транзакциях.
...
Ранее инициализация в транзакциях структур данных, связанных с
dbi-хендлами и subDb, выполнялась непосредственно при запуске
транзакций. Что в сценариях с большим кол-вом dbi-дексприторов (например
libfpta) порождало заметные накладные расходы, которые расли линейно от
общего кол-ва открытых subDb, а не от реально используемых в транзакции.
При использовании одной-двух сотен хендлов, при старте каждой транзакции
могли копироваться и/или обнуляться десятки килобайт. Теперь этот
недостаток устранен.
Изменена схема инициализации, валидации и импорта хендлов открытых после
старта транзакции:
1) Инициализация теперь выполняется отложенна, а при старте транзации
обнуляется только массив с однобайтовыми статустами dbi-хендлов.
При этом доступнва опция сборки `MDBX_ENABLE_DBI_SPARSE`, при активации
которой используется битовая карты, что снижает объем инициализации
при старте транзакции в 8 раз (CHAR_BIT).
2) Переработана валидация dbi-хендлов на входах API, с уменьшением кол-ва
проверок и ветвлений до теоретического минимума.
3) Переработ импорт dbi-хендов открытых после старта транзакци, теперь
при этом не захватывается мьютекс.
2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
796e56b9b9
mdbx: добавление кода системной ошибки MDBX_EDEADLK
.
2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
04511a7a99
mdbx: использование const MDBX_txn
где это возможно в API.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
4d3f7e1edc
mdbx: добавление mdbx_txn_release_all_cursors()
в API.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
d28a397b2d
mdbx: добавление mdbx_cursor_unbind()
в API.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
224f26813e
mdbx: возвращение MDBX_TXN_INVALID
(INT32_MIN
) из mdbx_txn_flags()
при передаче невалидной транзакции.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
253a56206b
mdbx: переработка и перенос функционала утилиты mdbx_chk
внутрь библиотеки.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
f0d523c507
mdbx: дополнение API функциями lock/unlock/upgrade/downgrade основной блокировки.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
dd9fc963d2
mdbx: изменение и расширение API функционалом проверки целостности структуры БД.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
e9ad618b58
mdbx: начало ветки 0.13
, с новым функционалом и изменением API.
...
Планируется очистка от функций и возможностей ранее объявленных
устаревшими. В частности, будет удалена поддержка пользовательских
функций сравнения, которые были обьявлены устаревшими начиная с версии
0.9, более 33 месяцев назад.
2023-10-23 20:24:59 +03:00
Леонид Юрьев (Leonid Yuriev)
e58b582639
mdbx: исправление MDBX_LAST_ADDED_ERRCODE
.
2023-10-23 16:33:30 +03:00
Леонид Юрьев (Leonid Yuriev)
25ec8e253f
mdbx-doc: уточнение формулировок в описании API.
2023-10-14 14:16:49 +03:00
Леонид Юрьев (Leonid Yuriev)
e21e91ad1f
mdbx-doc: уточнение формулировок о SIGSEGV
и недопустимости прямого изменения данных.
2023-10-08 11:55:30 +03:00
Леонид Юрьев (Leonid Yuriev)
7aaae2ecd5
mdbx-doc: исправление ссылок на mdbx_canary_put().
2023-06-01 08:48:38 +03:00
Леонид Юрьев (Leonid Yuriev)
da4e2ab254
mdbx-doc: исправление ссылок в описании mdbx_env_set_geometry()
.
2023-03-17 10:54:40 +03:00
Леонид Юрьев (Leonid Yuriev)
7db014c4fc
mdbx++: добавление в C++ API поддержки расширенных опций времени выполнения enum MDBX_option_t
.
...
https://gitflic.ru/project/erthink/libmdbx/issue/4
2023-03-01 23:22:50 +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)
c01f025bfa
mdbx: обновление года на 2023.
2023-01-16 16:32:02 +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)
61e77e7b70
mdbx: контроль отсутствия дубликатов LCK-файла с альтернативными именами.
2023-01-07 00:10:23 +03:00
Леонид Юрьев (Leonid Yuriev)
7011743262
mdbx: поддержка не-печатных имен для subDb.
2022-12-21 22:29:03 +03:00
Леонид Юрьев (Leonid Yuriev)
957c99d86f
mdbx: добавление MDBX_opt_prefault_write_enable
вместо MDBX_ENABLE_PREFAULT
.
2022-12-12 18:54:03 +03:00
Леонид Юрьев (Leonid Yuriev)
fd7aaf5f35
mdbx: добавление ошибки MDBX_BACKLOG_DEPLETED
и соответствующей логики в page_alloc_slowpath()
.
2022-12-09 18:07:16 +03:00
Леонид Юрьев (Leonid Yuriev)
a772a9d3e1
mdbx: добавление проверки посредством mincore()
с кэшированием присутствия страниц в памяти (опция сборки MDBX_ENABLE_MINCORE
).
2022-12-05 10:41:05 +03:00
Леонид Юрьев (Leonid Yuriev)
be3ff92772
mdbx: предотвращение бесполезных page-faults в режиме MDBX_WRITEMAP
(опция сборки MDBX_ENABLE_PREFAULT
).
2022-12-05 10:03:00 +03:00
Леонид Юрьев (Leonid Yuriev)
dc27d5d30a
mdbx: рефакторинг с формированием page_alloc_finalize()
и сокрашением метрик MDBX_ENABLE_PROFGC
.
2022-12-04 18:24:30 +03:00
Леонид Юрьев (Leonid Yuriev)
23d236f70e
mdbx: добавление MDBX_opt_writethrough_threshold
и сопутствующие доработки.
2022-12-04 13:41:50 +03:00
Леонид Юрьев (Leonid Yuriev)
b7734369a2
mdbx: кавычки для предупреждения о дырявости RISC-V для совместимости.
2022-11-29 02:50:34 +03:00
Леонид Юрьев (Leonid Yuriev)
67f4098bfa
mdbx: add admonition of insecure for RISC-V.
2022-11-09 12:39:06 +03:00
Леонид Юрьев (Leonid Yuriev)
f680c99116
mdbx: переделка page_alloc_slowpath()
с добавлением профилирования GC.
2022-11-07 00:44:37 +03:00
Леонид Юрьев (Leonid Yuriev)
36eb40bccb
mdbx: добавлено описание параметров MDBX_debug_func
и MDBX_debug_func
.
2022-11-05 14:06:00 +03:00
Леонид Юрьев (Leonid Yuriev)
8f8b9f3d2a
mdbx: чуток апостофов для имен в doxygen-комментариях.
2022-11-02 00:02:33 +03:00
Леонид Юрьев (Leonid Yuriev)
d661d4bac7
mdbx: добавление mdbx_env_warmup()
2022-10-24 11:37:57 +03:00
Леонид Юрьев (Leonid Yuriev)
e5fc056035
mdbx: изменение формата LCK и семантики некоторых внутренних полей.
...
Изменение формата LCK-файла означает что версии libmdbx использующие
разный формат не смогут работать с одной БД одновременно, а только
поочередно (LCK-файл переписывается при открытии первым открывающим БД
процессом).
1. Поле mti_unsynced_pages теперь 64-битное (чтобы не контролировать
переполнение) и перемещено для соблюдения выравнивания.
2. Поле mti_sync_timestamp переименовано в mti_eoos_timestamp
одновременно со сменой семантики. Теперь время отсчитывается не от
момента сброса данных на диск, а с момента входа в «грязное» состояние.
Скорее всего, текущая версия формата LCK не окончательная
и изменится до релиза.
2022-10-12 21:25:18 +03:00
Леонид Юрьев (Leonid Yuriev)
c3dd60fcb6
mdbx: добавление mdbx_env_get_pairsize4page_max()
и mdbx_env_get_valsize4page_max()
.
2022-10-10 16:33:51 +03:00
Леонид Юрьев (Leonid Yuriev)
98e29fe628
mdbx-windows: UNICODE-зависимое определение макросов MDBX_DATANAME, MDBX_LOCKNAME и MDBX_LOCK_SUFFIX.
2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
66f2e3d596
mdbx: добавление в API функций mdbx_limits_pairsize4page_max()
и mdbx_limits_valsize4page_max()
с сопутствующими доработками.
2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
bcd5bad74a
mdbx: добавлено MDBX_NORETURN
к mdbx_panic()
и mdbx_assert_fail()
.
2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
474391c83c
mdbx: поддержка асинхронного ввода-вывода для Windows и подготовка к io_ring
(объединённые коммиты и исправления).
2022-10-06 20:35:07 +03:00
Леонид Юрьев (Leonid Yuriev)
29da09328e
mdbx: removed description of deprecated usage of MDBX_NODUPDATA
.
2022-09-06 13:03:04 +03:00
Леонид Юрьев (Leonid Yuriev)
f9ad835680
mdbx: drop E2K libc obsolete workarounds.
2022-08-17 21:29:51 +03:00
Леонид Юрьев (Leonid Yuriev)
9b3faee630
mdbx: drop obsolete Nexenta attributes API.
2022-08-17 21:29:51 +03:00
Леонид Юрьев (Leonid Yuriev)
2ff8d3c4f2
mdbx: native wchar_t
pathname for Windows.
2022-08-09 18:27:43 +03:00
Леонид Юрьев (Leonid Yuriev)
12d2879a9f
mdbx: extend descriptions for MDBX_VALIDATION
and update TODO for done item.
2022-07-09 19:40:09 +03:00
Леонид Юрьев (Leonid Yuriev)
9aa2aae93e
mdbx: rework/simplify kick_longlived_readers()
.
2022-07-08 23:44:03 +03:00
Леонид Юрьев (Leonid Yuriev)
2cfcfcf91c
mdbx: merge branch erigon
into devel
.
2022-07-07 23:24:45 +03:00
Леонид Юрьев (Leonid Yuriev)
d4ef9bf233
mdbx: rework page validation/checking, add MDBX_VALIDATION
option (squashed).
...
Здесь основная часть изменений преобразующих отладочную проверку страниц
в регулярный и доступный пользователю осторожный/безопасный режим работы
с потенциально поврежденной БД.
Here the major part of the changes that transform a debugging check of
pages into a regular and user-accessible careful/safe mode for working
with a potentially corrupted database.
2022-07-07 14:10:09 +03:00
Леонид Юрьев (Leonid Yuriev)
4f6b92248d
mdbx: add pgop_stat.gcrtime
for collect the time spent loading and searching inside GC.
2022-07-01 09:27:38 +03:00
Леонид Юрьев (Leonid Yuriev)
46f61c3006
mdbx: merge branch master
into devel
.
2022-06-27 12:39:09 +03:00
Леонид Юрьев (Leonid Yuriev)
e3a09db3da
mdbx: always coalescing GC records, regardless to MDBX_COALESCE
flag.
2022-06-27 12:37:29 +03:00
Леонид Юрьев (Leonid Yuriev)
7b735c272d
mdbx: allow predefine/customise MDBX_LOCK_SUFFIX
, MDBX_DATANAME
, MDBX_LOCKNAME
.
2022-06-25 22:14:06 +03:00
Леонид Юрьев (Leonid Yuriev)
5d933d09d3
mdbx: minor refine/clarify descriptions of MDBX_LOCKNAME
and MDBX_DATANAME
.
2022-06-25 15:27:33 +03:00
Леонид Юрьев (Leonid Yuriev)
f5280ebf6e
mdbx: bump version to 0.12.0 (not a release but preparation for changing feature set and API).
2022-06-25 15:14:46 +03:00
Леонид Юрьев (Leonid Yuriev)
b6138c39f0
mdbx: reorganize internal includes.
2022-06-02 20:35:40 +03:00
Леонид Юрьев (Leonid Yuriev)
106f39327e
mdbx: add mdbx_assert_fail()
to public API.
2022-06-02 20:35:40 +03:00
Леонид Юрьев (Leonid Yuriev)
70d9efdce4
mdbx: fix minor CLANG 14/15 warnings.
2022-05-17 13:36:38 +03:00
Леонид Юрьев (Leonid Yuriev)
9230201ca9
mdbx: fix minor warning for MDBX_TXN_INVALID
.
2022-05-03 14:16:19 +03:00
Леонид Юрьев (Leonid Yuriev)
838f8d8fab
mdbx: move most of transactions flags to public API.
2022-05-03 11:49:28 +03:00
Леонид Юрьев (Leonid Yuriev)
1b0519a94a
mdbx-docs: fix Doxygen groups for struct MDBX_commit_latency
and mdbx_txn_commit_ex()
.
2022-05-03 11:49:28 +03:00
Леонид Юрьев (Leonid Yuriev)
ce229c7500
mdbx-docs: more refine/clarify Doxygen descriptions.
2022-04-23 23:23:15 +03:00
Леонид Юрьев (Leonid Yuriev)
9c569b41ed
mdbx-docs: fix/refine C++ API
docs by Doxygen.
2022-04-23 23:23:15 +03:00
Леонид Юрьев (Leonid Yuriev)
2921711638
mdbx: minor refine note about migration from dead github.
2022-04-21 15:34:56 +03:00
Леонид Юрьев (Leonid Yuriev)
35b5abc103
mdbx: minor fix/refix Doxygen descriptions.
2022-04-20 18:04:04 +03:00
Леонид Юрьев (Leonid Yuriev)
8fb63c3675
mdbx: minor refine API descriptions.
2022-04-13 11:05:03 +03:00
Леонид Юрьев (Leonid Yuriev)
cabead30b5
mdbx: minor cosmetics.
2022-03-31 00:31:49 +03:00
Леонид Юрьев (Leonid Yuriev)
6f37c8e57f
mdbx: resolve all warnings from MinGW.
2022-03-30 18:13:08 +03:00
Леонид Юрьев (Leonid Yuriev)
33a9395afe
mdbx: use MDBX_EPERM
to indicate that the geometry cannot be updated instead of `MDBX_RESULT_TRUE'.
2022-03-29 18:57:26 +03:00
Леонид Юрьев (Leonid Yuriev)
de63041b7d
mdbx: add MDBX_DBG_DONT_UPGRADE
flag.
2022-03-23 00:48:41 +03:00
Леонид Юрьев (Leonid Yuriev)
77f236db2a
mdbx: clarify loglevel descriptions.
2022-02-17 02:30:16 +03:00
Леонид Юрьев (Leonid Yuriev)
cbbfaf3202
mdbx-doc: fix doxygen-reference to the "Long-lived read transactions" paragraph.
2022-02-08 14:37:11 +03:00
Леонид Юрьев (Leonid Yuriev)
d498c2580b
mdbx: more refine mdbx_env_set_geometry()
description.
2022-02-02 14:28:45 +03:00
Леонид Юрьев (Leonid Yuriev)
e740df6e50
mdbx: fix description of mdbx_env_set_geometry()
.
...
Oops, I just noticed that there are a strange typos in the description.
It looks like a search&replace or cut&paste mistake.
Related to https://github.com/LWJGL/lwjgl3/issues/724 .
2022-02-02 14:09:03 +03:00
Leonid Yuriev
8adf242d02
mdbx-doc: more line-breaks for Doxygen.
2022-01-25 20:25:10 +03:00
Leonid Yuriev
28fcf33cda
mdbx-doc: fix/refine MDBX_dbi
description.
2022-01-25 20:09:17 +03:00
Leonid Yuriev
86d4e37327
mdbx: fix minor copy-paste errors in descriptions.
2022-01-25 01:08:14 +03:00
Leonid Yuriev
75b23524bd
mdbx-doc: minor refine mdbx_env_set_geometry()
description.
2022-01-21 11:44:05 +03:00
Leonid Yuriev
c588af6aca
mdbx: update Copyright year.
...
Change-Id: Ib3e4c0ac94882c4b2a1e167dd98e6e26dbdf48a4
2022-01-17 11:06:14 +03:00
Leonid Yuriev
406cafb642
mdbx: treat the UINT64_MAX
value as maximum for given option inside mdbx_env_set_option()
.
2022-01-06 00:37:08 +03:00
Leonid Yuriev
4e44dc69f9
mdbx: add MDBX_SET_UPPERBOUND
for cursors.
...
Resolves https://github.com/erthink/libmdbx/issues/250 .
2021-12-13 04:24:34 +03:00
Leonid Yuriev
6f2c1e52ad
mdbx: add mdbx_cursor_get_batch()
.
...
Resolve https://github.com/erthink/libmdbx/issues/236
2021-12-11 05:58:39 +03:00
gcxfd
45a11f3dc2
mdbx: Make the documentation of MDBX_INTEGERKEY
clearer.
...
Resolves https://github.com/erthink/libmdbx/pull/249 .
2021-12-03 22:29:28 +03:00
Leonid Yuriev
f355f247c3
mdbx: add inlined mdbx_env_get_syncbytes()
& mdbx_env_get_syncperiod()
.
2021-12-03 21:55:40 +03:00
Leonid Yuriev
e912f87b2a
mdbx: clarify notes about custom comparators usage.
2021-11-26 23:49:38 +03:00
Leonid Yuriev
085a97f835
mdbx: define MDBX_ENODATA == 9919
on systems without ENODATA
.
...
As workaround for incompatibility C and C++ code using LLVM's C++ libraries/headers on on systems without native `ENODATA`.
2021-11-22 16:09:08 +03:00
Leonid Yuriev
773172cc99
mdbx: minor clarify descriptions of the MDBX_commit_latency
fields.
2021-11-19 18:36:14 +03:00
Leonid Yuriev
ff26d30362
mdbx: minor clarity enum MDBX_db_flags_t
(database flags) descriptions.
...
Related to https://github.com/erthink/libmdbx/issues/241
2021-11-12 19:38:48 +03:00
Leonid Yuriev
8870d33fcd
mdbx++: refine MDBX_CXX01_CONSTEXPR
for legacy compilers.
...
Enable `constexpr` via `MDBX_CXX01_CONSTEXPR` if __cplusplus == 201103L but __cpp_constexpr is undefined.
2021-11-07 02:18:56 +03:00
Leonid Yuriev
fcb8cd2145
mdbx: alter DB-format' signature and change version to v0.11.x (not a release).
...
Related to https://github.com/erthink/libmdbx/issues/238
Signed-off-by: Leonid Yuriev <leo@yuriev.ru>
2021-10-21 15:17:18 +03:00
Leonid Yuriev
e3300259ff
mdbx: add minor enum-related workarounds for UndefinedBeheviorSanitizer.
2021-08-14 16:43:16 +03:00
Leonid Yuriev
68273acc2a
mdbx: add and use MDBX_NOSANITIZE_ENUM
macro.
2021-08-14 16:43:12 +03:00
Leonid Yuriev
4bb0c57e29
mdbx: minor fixes/workarounds for CLANG < 9.x
2021-08-04 15:43:32 +03:00
Leonid Yuriev
79281d59c7
mdbx++: workaround macro for clang bugs.
2021-07-26 03:53:11 +03:00
Leonid Yuriev
046dc02f73
mdbx: make MDBX_STRINGIFY
macro public.
2021-07-26 03:53:11 +03:00
Leonid Yuriev
faafa21480
mdbx-doc: refine Dixygen comments related to use custom comparators.
2021-07-21 02:23:10 +03:00
Leonid Yuriev
c5268f1da7
mdbx-tools: add support of page operations stat to mdbx_stat
.
2021-05-12 14:41:09 +03:00
Leonid Yuriev
23e11e3a57
mdbx: refine/fix MDBX_MAYBE_UNUSED
for modern GCC 11.x and C20.
2021-05-12 14:40:58 +03:00