diff --git a/TODO.md b/TODO.md deleted file mode 100644 index 74b1f0f1..00000000 --- a/TODO.md +++ /dev/null @@ -1,207 +0,0 @@ -Допеределки -=========== -- [x] mdbx: сборка посредством CMake (детектирование необходимости выравнивания, - endianess, размера страницы и т.п.) -- [x] fpta: юнит-тест для fpta_table_clear(). -- [x] mdbx: зафиксировать формат БД. -- [x] fpta: пробросить обновленный API управления размером. -- [ ] fpta: add "Basic Exponential Smoothing" to inplace saturated ops. -- [x] fpta, fptu: использовать "нативные" коды ошибок в Windows. -- [x] fpta: флажок O_CREATE при открытии БД. -- [ ] fpta: контроль версии, плюс номер версии уровня приложения. - -Оперативное -=========== -- [x] 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(), в том числе для отладки и питона. -- [x] mdbx: добавить поддержку маркера версии в CMake и API. -- [ ] fptu/fpta: пробросить API в python. -- [ ] fptu: поддержка nested tuples. -- [ ] fptu: поддержка массивов. -- [ ] fptu: поддержка сортированных кортежей. -- [ ] fptu: сериализация/десериализация в JSON. -- [x] mdbx: реализовать "мягкий" возврат страниц в unallocated-пул. -- [ ] all: поддержка схемы типов. -- [ ] all: генерация байндингов по описанию типов схемы. -- [x] 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(). - ------------------------------------------------------------------------ - -Сделано -======= -- [x] smoke: тесты для курсоров с диапазонами и фильтрами. -- [x] fpta: API для получения списка всех таблиц. -- [x] qa: встроенное тестирование с Valgrind. -- [x] cursor: позиционирование на конкретные и ближайшие значения. -- [x] cursor: позиционирование на ближайшие значения, с контролем lower-bound - для обратной сортировки, в том числе с дубликатами. -- [x] cursor: проверка удаления с контролем перехода к следующей записи, - удаление последней записи, удаление первой при обратном порядке. -- [x] cursor: обновление строки с изменением ключа (FPTA_KEY_MISMATCH). -- [x] fpta: додумать и доделать fpta_cursor_locate(). -- [x] fpta: пробросить или продублировать коды MDB-ошибок в fpta. -- [x] fpta, fptu: fpta_strerror() и прочие "строки". -- [x] fptu: обработка быстрых случаев при сравнении кортежей. -- [x] all: допеределать поддержку CFLAGS для различных типов сборок в CMake. -- [x] fpta: добавить поддержку маркера версии в CMake и API. -- [x] fpta: сборка в виде динамической библиотеки (не экспортировать лишнего). - -- [x] mdbx: добавить функцию получения статуса страницы с данными, - чтобы позволить копирование-по-необходимости из грязных страниц. -- [x] fpta: API для получения списка колонок и их атрибутов для заданной таблицы. -- [x] mdbx: подумать о выносе компараторов из транзакций в env, - с установкой непосредственно из аргументов open_dbi(). -- [x] all: поддержка travis-ci. -- [x] fpta: контроль alterable-schema и пропуск schema_rwlock. -- [x] fptu, fpta: datetime вместо fptu_192. - Исходно есть возможность хранить время в fput_uint64_t, но в последствии - пришло понимание что явный тип удобнее, так как страхует от ряда ошибок. -- [x] fpta: fptu_now(). -- [x] fpta: возможность предварительной проверки корректности insert/update (уникальность для индексов). -- [x] mdbx: добавить уровень "mustdie.h" для некой поддержки Windows (должно собираться и немного работать). -- [x] corny: проверка валидатора имен таблиц/колонок. -- [x] corny: проверка fptu_now(). -- [x] open: базовый тест на открытие/создание БД в различных режимах. -- [x] schema: описания колонок с корректными и не-корректными параметрами. -- [x] schema: базовый тест создания схемы. -- [x] smoke: простой тест с одним первичным индексом: - создание БД, схемы, вставка, обновление, удаление, перемещение курсора. -- [x] smoke: простой тест с одним вторичным индексом: - создание БД, схемы, вставка, обновление, удаление, перемещение курсора. -- [x] smoke: проверка изменений через вторичные индексы, - в том числе с нарушением уникальности. -- [x] smoke: проба fpta_del() для записи с существующим PK, но различием в данных. -- [x] data: проверка конвертации, выход вне диапазона типа. -- [x] data: проверка сравнения для всех комбинаций типов полей и типов значений. -- [x] key: формирование ключей для всех индексируемых типов и всех типов индексов. -- [x] key: проверка упорядоченности и уникальности ключей. -- [x] key: плохие типы, плохие значения, потеря точности. -- [x] key: длинные ключи. -- [x] index: создание таблиц с одним PK для всех типов полей и всех типов индексов. -- [x] index: заполнение и последовательная выборка с контролем порядка для ordered. -- [x] index: заполнение и выборка с контролем полноты для unordered. -- [x] index: длинные ключи, obverse/reverse, string/binary, - создание и выборка с контролем последовательности. -- [x] index: базовый тест вторичных индексов. -- [x] index: комбинаторный тест всех типов PK со всеми вариантами вторичных индексов. -- [x] cursor: по всем типам полей и индексов: выборка без range, - с контролем последовательности и/или полноты, - по возрастанию/убыванию. -- [x] cursor: совместимость ordered/unordered. -- [x] cursor: хождение "конем" вперед/назад, в начало/конец. -- [x] cursor: по возрастанию/убыванию. -- [x] cursor: хождение по дубликатам, - первый/последний, вперед/назад, "конем". -- [x] cursor/smoke: недопустимость update с изменением ключа. -- [x] cursor/smoke: обновление с изменением PK. -- [x] cursor/smoke: обновление с изменением 1-2-3-максимумом колонок. -- [x] crud/smoke: создание таблиц с одним PK для всех типов полей и всех типов индексов. -- [x] crud/smoke: вставка 1-2-3 небольших записей, - проба дубликатов, обновление, проверка наличия, удаление. -- [x] crud/smoke: обновление с изменением 1-2-3-всех колонок. -- [x] crud/smoke: вставка/обновление с нарушением уникальности. -- [x] crud: добавление нулевых и не-нулевых как значений,так и ключей в различном порядке. -- [x] mdbx: поддержка Windows. -- [x] fpta: быстрая очистка таблиц (без итерирования строк). -- [x] mdbx: поддержка последовательностей для БД. -- [x] fpta: поддержка последовательностей для БД. -- [x] mdbx: поддержка последовательностей для таблиц. -- [x] fpta: поддержка последовательностей для таблиц. -- [x] mdbx: динамическое управление размером БД (NtExtendSection(), etc). -- [x] fpta: поддержка паттерна visitor. -- [x] fpta: inplace saturated operations (min,max,add,sub) for numbers. -- [x] mdbx: стохастический тест конкуренции, в том числе для Windows. -- [x] fpta: убрать заглушку libmdbx для Windows. -- [x] fpta: API для получения информации о таблице, включая кол-во строк. -- [x] fpta: smoke-тесты nullable. -- [x] fpta: чистка дескрипторов созданных таблиц при откате транзакций. -- [x] fpta: убрать костыль не-кешировать при открытии таблиц во write-транзакциях. -- [x] fpta: деструкторы для структурных типов. -- [x] Проверка посредством Coverity с гашением всех дефектов. -- [x] Полная матрица Windows-сборок (2013/2015/2017). -- [x[ fptu: fast-int и double_t. -- [x] fptu: поддержка сборки с LTO. -- [x[ fpta: fast-int и double_t. -- [x] fpta: поддержка сборки с LTO. -- [x] mdbx: завершить оптимизацию mdbx_open_dbi_ex() с установкой компараторов. -- [x] mdbx: избавиться от умножений на размер страницы (заменить на сдвиг). diff --git a/appveyor.yml b/appveyor.yml index 66fa77c1..ec201361 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,4 @@ -version: 0.3.12.{build} +version: 0.3.13.{build} environment: GTEST_SHUFFLE: 1