libmdbx/TODO.md
Leo Yuriev 802c10f13f mdbx: log2shift instead of multiplication by pagesize.
Change-Id: I72c4c7699a409795459b466ff74c388b15b13687
2017-06-06 04:15:08 +03:00

72 lines
4.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.

Допеределки
- [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] Избавиться от умножения на размер страницы (заменить на сдвиг).
- [ ] Устранение всех предупреждений (в том числе под Windows).
- [ ] Перевод mdbx-tools на С++ и сборка для Windows
- [ ] Заменить заглушки mdbx_version и mdbx_build
- [ ] Актуализация README.md
CI
- [ ] Прикрутить проверку coverity
- [ ] Добавить в CI linux сборки для 32-битных таргетов
Доработки API
- [ ] Добавить возможность "подбора" режима для mdbx_env_open()
- [ ] Дать возможность задавать размер страницы при создании БД.
- [ ] Изменение mapsize через API с блокировкой и увеличением txn, плюс поправить доку.
- [ ] Контроль размера страницы полного размера и кол-ва страниц при создании и обновлении.
- [ ] Инкрементальный mmap.
- [ ] Возврат выделенных страниц в unallocated tail-pool.
- [ ] Инкрементальное приращение размера (колбэк стратегии?).
- [ ] Переименовать в API: env->db, db->tbl
Тест
- [ ] Реализовать cleanup в тесте
- [ ] usage для теста
- [ ] Логирование в файл, плюс более полный progress bar
- [ ] Опция игнорирования (пропуска части теста) при переполнении БД
- [ ] Додумать имя и размещение тестовой БД по-умолчанию.
- [ ] Базовый бенчмарк
Отладка
- [ ] Убрать MDB_DEBUG (всегда: логирование важный ситуаций и ошибок, опционально: включение ассертов и трассировка)
- [ ] Заменить mdbx_debug на mdbx_trace, и почистить...
- [ ] Заметить максимум assert() на mdbx_assert(env, ...)
Развитие
- [ ] Валидатор страниц БД по номеру транзакции:
~0 при переработке и номер транзакции при выделении,
проверять что этот номер больше головы реклайминга и не-больше текущей транзакции.
- [ ] Добавить 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)