- mdbx: сборка посредством CMake (детектирование необходимости выравнивания, endianess, размера страницы и т.п.)
- fpta: юнит-тест для fpta_table_clear().
- mdbx: зафиксировать формат БД.
- fpta: пробросить обновленный API управления размером.
- fpta: add "Basic Exponential Smoothing" to inplace saturated ops.
- fpta, fptu: использовать "нативные" коды ошибок в Windows.
- fpta: флажок O_CREATE при открытии БД.
- fpta: контроль версии, плюс номер версии уровня приложения.
- fpta: composite indexes (включая unique constraints).
- limits: вставка "максимальных" записей: строки максимальной длины, максимальное кол-во полей, максимальный размер кортежей, для разных индексов, и т.п.
- limits: когда и как умираем: максимум таблиц, с максимумом колонок, с максимумом индексов.
- qa: стохастический сценарий конкурирующих читателей, писателей и "изменятелей" схемы.
- qa: длительный нагрузочный тест с отслеживанием latency и throughput для нескольких (3-5) вариантов схемы/запросов.
- qa: проверка durability для всех режимов.
- bench: тест производительности с итеративным усложнением схемы (кол-во колонок, и индексов).
- mdbx: добавить в интерфейс минимум для поддержки внешней аллокации внутренних объектов, которые требуется для курсоров и транзакций.
- fpta: поддержка пулов и/или внешней аллокации объектов для курсоров и транзакций.
- fptu, fpta: плюшки для С++, конструкторы объектов, гарды, operator[], смузи-шаблончики, хелперы и т.п.
- демонстрация на C основных возможностей и скорости.
- демонстрация на C++ сервиса/удобства и скорости.
- fpta: дополнительные std::to_string(), в том числе для отладки и питона.
- mdbx: добавить поддержку маркера версии в CMake и API.
- fptu/fpta: пробросить API в python.
- fptu: поддержка nested tuples.
- fptu: поддержка массивов.
- fptu: поддержка сортированных кортежей.
- fptu: сериализация/десериализация в JSON.
- mdbx: реализовать "мягкий" возврат страниц в unallocated-пул.
- all: поддержка схемы типов.
- all: генерация байндингов по описанию типов схемы.
- mdbx: асинхронная фиксация, очередь чекпоинтов, триггеры и пороги, автоматическая конвертация weak в steady. Цель доработок в том, чтобы асинхронная фиксация данных выполнялась в соответствии с порядком транзакций, а также автоматически отражалась в сильных (strong) контрольных точках. Таким образом, чтобы при заданном (контролируемом пользователем или максимальном) уровне загрузки дисковой подсистемы, последняя сильная контрольная точка минимально отставала от последней асинхронно завершенной транзакции.
- all: версионность символов для ldso-библиотек.
- all: сборка в виде пакетов.
- all: подготовка релиза (информация о версии, NEWS, CHANGELOG, агрегация лицензий).
- fpta: дополнить README.
- composite: большой комбинаторный тест генерации составных ключей с контролем их порядка (ordering) для всех сочетаний колонок, включая nullable, простукивание DENIL-значений, проверку obverse/reverse как для составного индекса, так и для компонентов, в том числе с превышением fpta_max_keylen.
- filter: проверка фильтра для кортежа.
- filter: больше, меньше, равно, не-равно.
- filter: and, or, not.
- filter: вызов функтора.
- select: выборка с range: от begin, до end, между begin и end.
- select: проверка выборки с фильтром.
- select: хождение курсором с фильтром: "конем" вперед/назад, в начало/конец, по возрастанию/убыванию.
- select: хождение курсором с фильтром по range с проверкой стопора на границах и вылета из диапазона.
- select: позиционирование на конкретные и ближайшие значения, проверка на выход из range.
- crud: вставка 1-2-3 больших записей, проба дубликатов, обновление, проверка наличия, удаление.
- crud: вставка 1-2-3 миллионов небольших записей, проба дубликатов, проверка наличия, обновление, удаление.
- crud: вставка 1-2-3 тысяч больших записей, проба дубликатов, обновление, проверка наличия, удаление.
- crud: с инжектированием ошибок при изменениях.
- corny: проверка всех констант/флагов и комбинаций на допустимость/корректность.
- open: проверка на поврежденных базах (не mdbx).
- open: проверка на кривых базах (без схемы, без части таблиц).
- open: проверка с поврежденной и некорректной схемой.
- schema: превышение всяческих лимитов, кол-ва индексов, на запрещенные комбинации.
- schema: с неверными def-записями схемы.
- schema: с инжектированием ошибок при изменении схемы.
- schema: откат изменений при прерываний транзакции (или перенести в транзакции).
- schema: конкурирующее обновление схемы (проверка кэширования и авто-обновления).
- key: конвертация ключа в значение (для всех комбинаций типов ключей и значений).
- cursor: проверка коллизий при изменении/удалении данных в обход курсора (через другой курсор, непосредственно).
- fpta: юнит-тест для последовательностей.
- fpta: юнит-тесты схемы для nullable колонок.
- fpta: юнит-тесты индексов для nullable колонок.
- fpta: юнит-тесты обновлений для nullable колонок.
- fpta: юнит-тесты inplace-saturated: min, max, add, sub.
- fpta: юнит-тесты для cursor_inplace().
-
smoke: тесты для курсоров с диапазонами и фильтрами.
-
fpta: API для получения списка всех таблиц.
-
qa: встроенное тестирование с Valgrind.
-
cursor: позиционирование на конкретные и ближайшие значения.
-
cursor: позиционирование на ближайшие значения, с контролем lower-bound для обратной сортировки, в том числе с дубликатами.
-
cursor: проверка удаления с контролем перехода к следующей записи, удаление последней записи, удаление первой при обратном порядке.
-
cursor: обновление строки с изменением ключа (FPTA_KEY_MISMATCH).
-
fpta: додумать и доделать fpta_cursor_locate().
-
fpta: пробросить или продублировать коды MDB-ошибок в fpta.
-
fpta, fptu: fpta_strerror() и прочие "строки".
-
fptu: обработка быстрых случаев при сравнении кортежей.
-
all: допеределать поддержку CFLAGS для различных типов сборок в CMake.
-
fpta: добавить поддержку маркера версии в CMake и API.
-
fpta: сборка в виде динамической библиотеки (не экспортировать лишнего).
-
mdbx: добавить функцию получения статуса страницы с данными, чтобы позволить копирование-по-необходимости из грязных страниц.
-
fpta: API для получения списка колонок и их атрибутов для заданной таблицы.
-
mdbx: подумать о выносе компараторов из транзакций в env, с установкой непосредственно из аргументов open_dbi().
-
all: поддержка travis-ci.
-
fpta: контроль alterable-schema и пропуск schema_rwlock.
-
fptu, fpta: datetime вместо fptu_192. Исходно есть возможность хранить время в fput_uint64_t, но в последствии пришло понимание что явный тип удобнее, так как страхует от ряда ошибок.
-
fpta: fptu_now().
-
fpta: возможность предварительной проверки корректности insert/update (уникальность для индексов).
-
mdbx: добавить уровень "mustdie.h" для некой поддержки Windows (должно собираться и немного работать).
-
corny: проверка валидатора имен таблиц/колонок.
-
corny: проверка fptu_now().
-
open: базовый тест на открытие/создание БД в различных режимах.
-
schema: описания колонок с корректными и не-корректными параметрами.
-
schema: базовый тест создания схемы.
-
smoke: простой тест с одним первичным индексом: создание БД, схемы, вставка, обновление, удаление, перемещение курсора.
-
smoke: простой тест с одним вторичным индексом: создание БД, схемы, вставка, обновление, удаление, перемещение курсора.
-
smoke: проверка изменений через вторичные индексы, в том числе с нарушением уникальности.
-
smoke: проба fpta_del() для записи с существующим PK, но различием в данных.
-
data: проверка конвертации, выход вне диапазона типа.
-
data: проверка сравнения для всех комбинаций типов полей и типов значений.
-
key: формирование ключей для всех индексируемых типов и всех типов индексов.
-
key: проверка упорядоченности и уникальности ключей.
-
key: плохие типы, плохие значения, потеря точности.
-
key: длинные ключи.
-
index: создание таблиц с одним PK для всех типов полей и всех типов индексов.
-
index: заполнение и последовательная выборка с контролем порядка для ordered.
-
index: заполнение и выборка с контролем полноты для unordered.
-
index: длинные ключи, obverse/reverse, string/binary, создание и выборка с контролем последовательности.
-
index: базовый тест вторичных индексов.
-
index: комбинаторный тест всех типов PK со всеми вариантами вторичных индексов.
-
cursor: по всем типам полей и индексов: выборка без range, с контролем последовательности и/или полноты, по возрастанию/убыванию.
-
cursor: совместимость ordered/unordered.
-
cursor: хождение "конем" вперед/назад, в начало/конец.
-
cursor: по возрастанию/убыванию.
-
cursor: хождение по дубликатам, первый/последний, вперед/назад, "конем".
-
cursor/smoke: недопустимость update с изменением ключа.
-
cursor/smoke: обновление с изменением PK.
-
cursor/smoke: обновление с изменением 1-2-3-максимумом колонок.
-
crud/smoke: создание таблиц с одним PK для всех типов полей и всех типов индексов.
-
crud/smoke: вставка 1-2-3 небольших записей, проба дубликатов, обновление, проверка наличия, удаление.
-
crud/smoke: обновление с изменением 1-2-3-всех колонок.
-
crud/smoke: вставка/обновление с нарушением уникальности.
-
crud: добавление нулевых и не-нулевых как значений,так и ключей в различном порядке.
-
mdbx: поддержка Windows.
-
fpta: быстрая очистка таблиц (без итерирования строк).
-
mdbx: поддержка последовательностей для БД.
-
fpta: поддержка последовательностей для БД.
-
mdbx: поддержка последовательностей для таблиц.
-
fpta: поддержка последовательностей для таблиц.
-
mdbx: динамическое управление размером БД (NtExtendSection(), etc).
-
fpta: поддержка паттерна visitor.
-
fpta: inplace saturated operations (min,max,add,sub) for numbers.
-
mdbx: стохастический тест конкуренции, в том числе для Windows.
-
fpta: убрать заглушку libmdbx для Windows.
-
fpta: API для получения информации о таблице, включая кол-во строк.
-
fpta: smoke-тесты nullable.
-
fpta: чистка дескрипторов созданных таблиц при откате транзакций.
-
fpta: убрать костыль не-кешировать при открытии таблиц во write-транзакциях.
-
fpta: деструкторы для структурных типов.
-
Проверка посредством Coverity с гашением всех дефектов.
-
Полная матрица Windows-сборок (2013/2015/2017).
-
[x[ fptu: fast-int и double_t.
-
fptu: поддержка сборки с LTO.
-
[x[ fpta: fast-int и double_t.
-
fpta: поддержка сборки с LTO.
-
mdbx: завершить оптимизацию mdbx_open_dbi_ex() с установкой компараторов.
-
mdbx: избавиться от умножений на размер страницы (заменить на сдвиг).