libmdbx/TODO.md
Leonid Yuriev bfa6dea784 mdbx: fix size_t/unsigned/int warnings.
Change-Id: Ic5a8684aed232b8b732d6e7a87a6757f3f7afcec
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] Избавиться от умножения на размер страницы (заменить на сдвиг).
- [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)