Commit Graph

3998 Commits

Author SHA1 Message Date
Леонид Юрьев (Leonid Yuriev)
bc562d5c06 mdbx: добавление mdbx_cursor_scan() в API. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
ed59ad22c6 mdbx: добавление mdbx_cursor_on_first/last_dup() в API. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
eee3e6eb6b mdbx++: добавление compare_positions() для курсоров. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
adcbb39379 mdbx: добавление mdbx_cursor_compare() в API. 2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
10abf73191 mdbx: рефакторинг и микро-оптимизация cursor_next|_prev() для dupsort-узлов.
- меньше сравнений и переходов.
 - вложенный курсор всегда сбрасывается/очищается при переходе с dupsort-узла.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
225f548339 mdbx++: добавление get_/set_context для транзакций и курсоров. 2023-12-05 15:32:13 +03:00
Леонид Юрьев (Leonid Yuriev)
992eee4f0f mdbx++: добавление cursor::clone(). 2023-11-26 16:56:34 +03:00
Леонид Юрьев (Leonid Yuriev)
d6a79a9c5f mdbx++: переименование slice::as_intXX() в slice::as_intXX_adapt() и добавление slice::as_intXX(). 2023-11-26 16:56:34 +03:00
Леонид Юрьев (Leonid Yuriev)
6facd20b2b mdbx++: добавление buffer::as_uint64() и т.д. 2023-11-26 16:56:34 +03:00
Леонид Юрьев (Leonid Yuriev)
e66df2c21b mdbx++: добавление методов buffer::hex_decode(), base64_decode(), base58_decode(). 2023-11-26 16:56:34 +03:00
Леонид Юрьев (Leonid Yuriev)
649bbb9d90 mdbx++: добавление типа mdbx::comparator и функций mdbx::default_comparator(). 2023-11-26 16:56:34 +03:00
Леонид Юрьев (Leonid Yuriev)
c8319aabe7 mdbx++: добавление статических методов buffer::hex(), base64(), base58(). 2023-11-26 16:56:19 +03:00
Леонид Юрьев (Leonid Yuriev)
7f21515940 mdbx: микро-оптимизация cursor_set().
Чуть меньше сравнений и переходов.
2023-11-26 12:25:13 +03:00
Леонид Юрьев (Leonid Yuriev)
6cef39c32f mdbx++: добавление cursor::estimation_result и переделка cursor::estimate(). 2023-11-12 20:37:57 +03:00
Леонид Юрьев (Leonid Yuriev)
44beae00ec mdbx: const для начала и конца диапазона в аргументах mdbx_estimate_range(). 2023-11-12 20:37:57 +03:00
Леонид Юрьев (Leonid Yuriev)
b7605e8033 mdbx: рефакторинг обработки MDBX_GET_MULTIPLE добавление проверки key на NULL. 2023-11-12 20:37:57 +03:00
Леонид Юрьев (Leonid Yuriev)
100e95957c mdbx-test: доработка логирования для использования после/из глобальных деструкторов. 2023-11-12 20:37:57 +03:00
Леонид Юрьев (Leonid Yuriev)
cfce4ef4d3 mdbx-test: явная установка append-режима для stdout/stderr. 2023-11-12 20:37:57 +03:00
Леонид Юрьев (Leonid Yuriev)
d9f49b17de mdbx-test: добавление тестов для mdbx_env_resurrect_after_fork(). 2023-11-12 01:49:53 +03:00
Леонид Юрьев (Leonid Yuriev)
af4dfe541b mdbx: добавление mdbx_env_resurrect_after_fork() в API. 2023-11-12 01:49:53 +03:00
Леонид Юрьев (Leonid Yuriev)
a22ec56938 mdbx: использование pthread_atfork(after_fork). 2023-11-12 01:49:53 +03:00
Леонид Юрьев (Leonid Yuriev)
ce74fae036 mdbx: рефакторинг и выделение env_open(). 2023-11-12 01:49:53 +03:00
Леонид Юрьев (Leonid Yuriev)
54efb8bd81 mdbx: не считаем ошибки ipc-unlock критичными в случае смены pid. 2023-11-12 01:49:53 +03:00
Леонид Юрьев (Leonid Yuriev)
a3e2300f58 mdbx: возможность вызова osal_lck_destroy() в дочернем процессе после fork(). 2023-11-12 01:49:53 +03:00
Леонид Юрьев (Leonid Yuriev)
7ad54f54b4 mdbx: объединение lck-списка и rthc-таблицы для упрощения (де)регистрации TLS-деструкторов. 2023-11-12 01:49:53 +03:00
Леонид Юрьев (Leonid Yuriev)
eddade7b99 mdbx: корректировка префиксов имён osal-ipc функций. 2023-11-12 01:00:41 +03:00
Леонид Юрьев (Leonid Yuriev)
97418d5c9c mdbx: рефакторинг env_handle_pathname() для одной точки выделения/освобождения памяти. 2023-11-12 01:00:41 +03:00
Леонид Юрьев (Leonid Yuriev)
1b2f5f25d4 mdbx: рефакторинг и вынос txn_abort() без кода входящих пероверок. 2023-11-12 01:00:41 +03:00
Леонид Юрьев (Leonid Yuriev)
2fe01eee89 mdbx: проверка pid только для запроса активной env. 2023-11-12 01:00:41 +03:00
Леонид Юрьев (Leonid Yuriev)
6477e6c5de mdbx: исправление авто-установки MDBX_ENV_CHECKPID для случая MDBX_ENABLE_MADVISE=0. 2023-11-12 01:00:41 +03:00
Леонид Юрьев (Leonid Yuriev)
dea6570fc1 mdbx: доработка coherency_check() для случая плохих номеров корневых страниц. 2023-11-11 12:29:15 +03:00
Леонид Юрьев (Leonid Yuriev)
9a6f8a1bf8 mdbx-test: увеличение tail-log до 3333 для CI. 2023-11-11 12:29:13 +03:00
Леонид Юрьев (Leonid Yuriev)
24d5b26bc5 mdbx-make: переименование целей. 2023-11-11 12:29:13 +03:00
Леонид Юрьев (Leonid Yuriev)
0916d24321 mdbx: использование опции ENABLE_MEMCHECK вместо ENABLE_VALGRIND и MDBX_USE_VALGRIND. 2023-11-11 12:29:13 +03:00
Леонид Юрьев (Leonid Yuriev)
c216e1afb7 mdbx-test: добавление проверки mdbx_dbi_rename(). 2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
c9c02dddfb mdbx: добавление mdbx_dbi_rename() в API. 2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
903d964f4d mdbx: интенсивное использование __restrict, в том числе при определении элементов структур. 2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
96504bf338 mdbx: отложенное освобождение имен связанных c dbi-хендлами и добавление опции MDBX_ENABLE_DBI_LOCKFREE.
Отложенное освобождение позволяет реализовать безопасное выполнение
fastpath/lockfree при повторном открытии из других потоков/транзакцйий
уже открытых subDB, что и происходит при активации добавленной опции
сборки `MDBX_ENABLE_DBI_LOCKFREE`.
2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
3622669a9f mdbx: проверка db-флагов и ре-инициализация MainDB при изменении флагов другим процессом. 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)
4b79d46d38 mdbx: удаление поля mt_dbxs из транзакции.
Явного выигрыша или проигрыша в производительности тут нет. Но теперь
меньше алиасинга указателей и чуть меньше полей в транзакциях.
2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
f317170706 mdbx: переименование внутренних полей и макросов для улучшения читаемости кода. 2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
81f386f831 mdbx: перемещение полей внутри MDBX_txn и MDBX_env.
В текущем понимании так префетчер ЦПУ может быть чуть более эффективным
и чуть меньше зазоров для выравнивания.
2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
54920cd07b mdbx: исправление assert-проверок внутри osal_txn_lock(). 2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
7a413406be mdbx-test: обновление исключений для Valgrind. 2023-11-11 12:29:07 +03:00
Леонид Юрьев (Leonid Yuriev)
07fc7b9227 mdbx-test: добавление опции --taillog в стохастический скрипт. 2023-10-30 22:01:35 +03:00
Леонид Юрьев (Leonid Yuriev)
ad4d00677b mdbx: PTHREAD_MUTEX_ERRORCHECK при MDBX_DEBUG > 0. 2023-10-29 18:44:54 +03:00
Леонид Юрьев (Leonid Yuriev)
1943db7d41 mdbx: merge branch master into devel. 2023-10-29 18:23:49 +03:00
Леонид Юрьев (Leonid Yuriev)
ed8c7ead4e mdbx: ликвидация ошибочной зависимости от удаленной опции MDBX_ENABLE_PREFAULT. 2023-10-29 12:20:54 +03:00