На сайт и в личные кабинеты загружены очередные обновления OLE DB и ADO.NET провайдеров.
IBProvider v5.12
В IBProvider, как я тут раньше писал, появилась поддержка колонок с автоинкрементом.
А если конкретнее, то во множестве с описанием колонок, получаемом через интерфейс IColumnsRowset, появилась колонка DBCOLUMN_ISAUTOINCREMENT с BOOL-значением. В ней будет True для колонок с автоинкрементом и False для всех остальных колонок.
Забавно, но в провайдер пришлось внести достаточно радикальные изменения, чтобы сделать «все по уму».
На финише, в IBProvider было внесено еще одно изменение — отображение ошибки Z_MEM_ERROR компрессора данных zlib1 на E_OUTOFMEMORY.
Основные сборки (vc16), как положено, прошли через многопоточное нагрузочное тестирование.
NetProvider v1.16
В OleDbDataReader, создаваемом с указанием CommandBehavior.SchemaOnly, разрешено использование методов Read, HasRows, RecordsAffected.
Предыдущие сборки провайдера запрещали такие вызовы и выкидывали исключение.
Клиент, в процессе переезда с System.Data.OleDb, обнаружил это лютое ограничение и попросил убрать его.
Другое
Доработаны и оптимизированы тесты. Причем для обоих провайдеров. Новые тестовые таблички (в которых по 4K колонок) дали всем прикурить.
Из личных кабинетов убраны сборки IBProvider v3. Все, эпоха закончилась.
В рамках тестирования следующей версии IBProvider v5.12 была создана пара UBER таблиц c 4096-ю колонок в каждой, которые добили прямолинейные алгоритмы тестирования схем метаданных «schema.002.*» основной тестовой системы.
Их там три штуки. Тот, который грузит схемы без кэширования, до последнего времени работал 6 часов. После появления вышеобозначенной сладкой парочки — 2 дня и 19 часов. То есть 67 часов.
Это означает, что после завершения всех остальных тестов, компьютер еще кучу времени тупил в одно ядро над одним тестом. 9 ядер простаивали.
Страшно думать, сколько бы оно тупило с отладочной сборкой провайдера. Сто пудов — не меньше недели …(далее…)
Решил сам для себя изложить суть текущей проблемы 🙂
С начала недели на отстое стоит незакоммиченный код c поддержкой IDENTITY-колонок FB3.
Задача простая — для всех колонок результирующего множества, напрямую отображаемых на таблицы базы данных, нужно выполнить запрос:
select <индекс колонки> from rdb$relation_fields where rdb$relation_name=’<имя таблицы>‘ and rdb$field_name=’<имя колонки>‘ and rdb$identity_type is NOT NULL
Казалось бы, что тут может быть сложного? (далее…)
Сегодня, выехав на финишную прямую с реализацией поддержки автоинкрементных колонок FB3, я чего-то задумался и решил посмотреть — «а когда, собственно говоря, был обозначен этот вопрос в трекере задач проекта?»
Похоже сегодня обязательно нужно допилить эту штуку 🙂
На сайт загружена тестовая сборка IBProvider (5.11.0.33464), в которой реализована поддержка сжатия данных подключения собственным клиентом для Firebird.
Чтобы задействовать эту фичу достаточно указать в строке подключения «remote:wire_compression=enabled».