libmdbx/TODO.md
Leo Yuriev be5bbea281 mdbx: more update links after move the repo.
Change-Id: Ifdcfd23c78e1c843a93e9b41cd024b0ff9f866be
2017-08-12 11:19:03 +03:00

90 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Допеределки
===========
- [ ] Перевод mdbx-tools на С++ и сборка для Windows.
- [ ] Переход на CMake, замена заглушек mdbx_version и mdbx_build.
- [ ] Актуализация README.md
- [ ] Переход на C++11, добавление #pramga detect_mismatch().
- [ ] Убрать MDB_DEBUG (всегда: логирование важный ситуаций и ошибок, опционально: включение ассертов и трассировка).
- [ ] Заменить mdbx_debug на mdbx_trace, и почистить...
- [ ] Заметить максимум assert() на mdbx_assert(env, ...).
Качество и CI
=============
- [ ] Добавить в CI linux сборки для 32-битных таргетов.
Доработки API
=============
- [ ] Поправить/Добавить описание нового API.
- [ ] Добавить возможность "подбора" режима для mdbx_env_open().
- [ ] Переименовать в API: env->db, db->tbl.
Тесты
=====
- [ ] Тестирование поддержки lockless-режима.
- [ ] Додумать имя и размещение тестовой БД по-умолчанию.
- [ ] Реализовать cleanup в тесте.
- [ ] usage для теста.
- [ ] Логирование в файл, плюс более полный progress bar.
- [ ] Опция игнорирования (пропуска части теста) при переполнении БД.
- [ ] Базовый бенчмарк.
Развитие
========
- [ ] Отслеживание времени жизни DBI-хендлов.
- [ ] Отрефакторить mdbx_freelist_save().
- [ ] Хранить "свободный хвост" не связанный с freeDB в META.
- [x] Возврат выделенных страниц в unallocated tail-pool.
- [ ] Валидатор страниц БД по номеру транзакции:
~0 при переработке и номер транзакции при выделении,
проверять что этот номер больше головы реклайминга и не-больше текущей транзакции.
- [ ] Размещение overflow-pages в отдельном mmap/файле с собственной геометрией.
- [ ] Зафиксировать формат БД.
- [ ] Валидатор страниц по CRC32, плюс контроль номер транзакии под модулю 2^32.
- [ ] Валидатор страниц по t1ha c контролем снимков/версий БД на основе Merkle Tree.
- [ ] Возможность хранения ключей внутри data (libfptu).
- [ ] Асинхронная фиксация (https://github.com/leo-yuriev/libmdbx/issues/5).
- [ ] (Пере)Выделять память под IDL-списки с учетом реального кол-ва страниц, т.е. max(MDB_IDL_UM_MAX/MDB_IDL_UM_MAX, npages).
-----------------------------------------------------------------------
Сделано
=======
- [x] разделение errno и GetLastError().
- [x] CI посредством AppVeyor.
- [x] тест конкурентного доступа.
- [x] тест основного функционала (заменить текущий треш).
- [x] uint32/uint64 в структурах.
- [x] Завершить переименование.
- [x] Макросы версионности, сделать как в fpta (cmake?).
- [x] Попробовать убрать yield (или что там с местом?).
- [x] trinity для copy/compaction.
- [x] trinity для mdbx_chk и mdbx_stat.
- [x] проверки с mdbx_meta_eq.
- [x] Не проверять режим при открытии в readonly.
- [x] Поправить выбор tail в mdbx_chk.
- [x] Там-же проверять позицию реклайминга.
- [x] поправить проблему открытия после READ-ONLY.
- [x] static-assertы на размер/выравнивание lck, meta и т.п.
- [x] Зачистить size_t.
- [x] Добавить локи вокруг dbi.
- [x] Привести в порядок volatile.
- [x] контроль meta.mapsize.
- [x] переработка формата: заголовки страниц, meta, clk...
- [x] зачистка Doxygen и бесполезных коментариев.
- [x] Добавить поле типа контрольной суммы.
- [x] Добавить поле/флаг размера pgno_t.
- [x] Поменять сигнатуры.
- [x] Добавить мета-страницы в coredump, проверить lck.
- [x] Сделать список для txnid_t, кода sizeof(txnid_t) > sizeof(pgno_t) и вернуть размер pgno_t.
- [x] Избавиться от умножения на размер страницы (заменить на сдвиг).
- [x] Устранение всех предупреждений (в том числе под Windows).
- [x] Добавить 'mti_reader_finished_flag'.
- [x] Погасить все level4-warnings от MSVC, включить /WX.
- [x] Проверка посредством Coverity с гашением всех дефектов.
- [x] Полная матрица Windows-сборок (2013/2015/2017).
- [x] Дать возможность задавать размер страницы при создании БД.
- [x] Изменение mapsize через API с блокировкой и увеличением txn.
- [x] Контроль размера страницы полного размера и кол-ва страниц при создании и обновлении.
- [x] Инкрементальный mmap.
- [x] Инкрементальное приращение размера (колбэк стратегии?).