libmdbx/TODO.md
Leonid Yuriev 229514c93e mdbx: update TODO.
Change-Id: Ib812146ccb78496dc28610cbd2a6597b09ee238f
2017-07-03 04:45:13 +03:00

80 lines
5.5 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.

Допеределки
- [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.
- [ ] Отрефакторить mdbx_freelist_save().
- [ ] Хранить "свободный хвост" не связанный с freeDB в META.
- [ ] Перевод mdbx-tools на С++ и сборка для Windows.
- [ ] Заменить заглушки mdbx_version и mdbx_build.
- [ ] Актуализация README.md
- [ ] Переход на C++11, добавление #pramga detect_mismatch().
CI
- [ ] Прикрутить проверку coverity
- [ ] Добавить в CI linux сборки для 32-битных таргетов
Доработки API
- [x] Дать возможность задавать размер страницы при создании БД.
- [x] Изменение mapsize через API с блокировкой и увеличением txn
- [x] Контроль размера страницы полного размера и кол-ва страниц при создании и обновлении.
- [x] Инкрементальный mmap.
- [x] Инкрементальное приращение размера (колбэк стратегии?).
- [ ] Поправить/Добавить описание нового API.
- [ ] Возврат выделенных страниц в unallocated tail-pool.
- [ ] Добавить возможность "подбора" режима для mdbx_env_open()
- [ ] Переименовать в API: env->db, db->tbl
Тест
- [ ] Тестирование поддержки lockless-режима.
- [ ] Додумать имя и размещение тестовой БД по-умолчанию.
- [ ] Реализовать cleanup в тесте
- [ ] usage для теста
- [ ] Логирование в файл, плюс более полный progress bar
- [ ] Опция игнорирования (пропуска части теста) при переполнении БД
- [ ] Базовый бенчмарк
Отладка
- [ ] Убрать MDB_DEBUG (всегда: логирование важный ситуаций и ошибок, опционально: включение ассертов и трассировка)
- [ ] Заменить mdbx_debug на mdbx_trace, и почистить...
- [ ] Заметить максимум assert() на mdbx_assert(env, ...)
Развитие
- [ ] Валидатор страниц БД по номеру транзакции:
~0 при переработке и номер транзакции при выделении,
проверять что этот номер больше головы реклайминга и не-больше текущей транзакции.
- [ ] Размещение overflow-pages в отдельном mmap/файле с собственной геометрией.
- [ ] Разместить free_backlog в конце meta
- [ ] Валидатор страниц по CRC32, плюс контроль номер транзакии под модулю 2^32.
- [ ] Валидатор страниц по t1ha c контролем снимков/версий БД на основе Merkle Tree.
- [ ] Возможность хранения ключей внутри data (libfptu)
- [ ] Асинхронная фиксация (https://github.com/ReOpen/libmdbx/issues/5)
- [ ] (Пере)Выделять память под IDL-списки с учетом реального кол-ва страниц, т.е. max(MDB_IDL_UM_MAX/MDB_IDL_UM_MAX, npages)