IBProvider v3.44

Привет всем.

В экстренном порядке пришлось выпустить версию IBProvider v3.44.

Вчера, разгребая результаты выполнения тестов для InterBase 2017, обнаружил ошибку с NULL-значениями в IN-параметрах с типом BLOB.

Я даже посмотрел в истории — когда конкретно эта бага была внесена в код.

11 ноября 2016 года 14:54:35.

Судя по бортовому журналу, в этот день к этому моменту у меня уже был «отходняк» — был выпущен провайдер с собственным клиентом к FB3 и осилена покупка Windows 10 на новую рабочую лошадку.

Кстати

Сегодня стукнуло семь лет с момента релиза третьей версии IBProvider.

Семь лет разрабатывался и уже столько же доводится до ума.

У всех причастных к этому процессу, однозначно, есть повод улыбнуться.

Про ICU

Как известно, в Firebird 2.1, для работы с кодовыми страницами, была добавлена поддержка библиотеки ICU. Изначально — версия 3.0 (FB2.1, FB2.5). FB3 работает с ICU 5.2.

Компоненты доступа, если они претендуют на «нативе» поддержку Firebird, тоже должны уметь работать с ICU. Так что приходится с этим возиться.

На текущий момент, IBProvider поддерживает ICU3.

При тестировании провайдера с FB3 и изучении хедеров ICU 5.2, обнаружилась пара новых забавных вещей.
(далее…)

Вести с полей

Всем привет.

Из личных кабинетов уже можно прямо сейчас загрузить инсталляторы «LCPI OLE DB Services» и обновленных IBProvider, ADO.NET Provider. Подробное описание будет, как обычно, немного позднее.

Вкратце про последние две вещи

В IBProvider исправлена ошибка в 64-битной сборке.

В ADO.NET провайдере появилась новая компонента «OleDbServices» для явного определения COM-объекта с сервисами OLE DB.

Registration Free COM и OLE DB

Все что ни делается, все к лучшему …

Предыстория
В конце лета 2016-го, мой любимый рабочий ноутбук начал выносить мозг внезапными выключениями. К октябрю это окончательно задрало и я решил что пришло время осуществить свою мечту притворить в реальность мысли о новом рабочей лошадке. Которая сможет заменить и ноутбук и десктоп, собранный в 2008 году. В начале ноября новый компьютер был собран. Его дури хватило на то, чтобы за четыре дня зарелизить собственного клиента для FB3 🙂

После этого началась настройка новой системы для ежедневной рутинной работы.

По теме
Основная проблема, которая сопровождает разработку и тестирование IBProvider-a на одном компьютере — это конфликты регистрационных записей в реестре Windows. Нужно постоянно помнить, какая сборка сейчас зарегистрирована. Это напрягает и периодически приводит к ошибкам типа «тесты подхватили не ту DLL».

Решение у этой проблемы уже давно есть — в манифест исполняемого файла (EXE) тестов следует добавить записи, позволяющие создавать COM-объекты с использованием технологии «Registration Free COM». Добавил.

И тут внезапно оказалось, что стандартный пул подключений OLE DB не поддерживает провайдеры «зарегистрированные» таким образом. Создавать-то он их может. Но подключения не кэширует — ему нужны дополнительные данные о провайдере из реестра, которых, понятное дело, там нет.

Грязно выругавшись, попутно вспомнив про родителей баги этой стандартной компоненты, я начал пилить свою реализацию пула подключений.

Потратив на это занятие для умалишенных чуть более трех месяцев (захотелось сделать все по-уму), вернулся к теме, ради которой все затевалось — изоляция тестов.
(далее…)

Год с момента релиза FB3

Год назад, 19 апреля 2016 года, был выпущен релиз FB3 🙂

Сейчас, через год, он (похоже) начал стабильно работать.
(далее…)

Расслабился …

Запустил «взрослое» нагрузочное тестирование с участием нового пула подключений на FB3. По ошибке — с участием fbclient.dll. Обнаружил это через пару часов после запуска, но решил — ладно, «нехай».

64-бита проехало без проблем.

32-бита встало по AV.
(далее…)

Вести с полей

Всем привет.

1. Из личного кабинета можно скачать новый релиз IBProvider — 3.40.0.25216. Изменения:

  • Доработана обработка ошибок.
  • В строковых OLE DB свойствах запрещена установка строк с внутренними нулевыми символами.

2. В FB3 исправлена пара критических багов, которые вылазили при нагрузочном тестировании IBProvider:

  • CORE-5415 — древняя ошибка, которая может повредить файл базы данных.
  • CORE-5416 — утечка памяти, которую провоцирует собственный клиент провайдера.

Имеет смысл обновиться до FB3.0.3.32714.

3. Медленно и печально пилится собственный пул OLE DB подключений (для замены стандартного из oledb32.dll). В целом уже работает. По функционалу осталось только реализовать загрузку UDL-файлов.

IBProvider Trial [сборка 25178]

Доступен для скачивания новый IBProvider Trial с исправленной ошибкой в libtommath.

Это была моя бага. Исправление можно посмотреть здесь.

Как оказалось, чтение за последним элементом массива в mp_div, это не бага, а фича неотъемлемая часть алгоритма.

Пришлось вернуть назад условие, модифицированное в декабре 2016 года. И немного по другому решить первоначальную проблему (см. get_safe).

—-
Отсутствие ассертов и халатная работа с памятью в оригинальном коде libtommath реально угнетает.

Про баги в libtommath [FB3]

В FB3 затащили внешнюю библиотеку для работы с большими числами — libtommath. Затащили как есть. Только за это хочется взять черенок от лопаты…
(далее…)

« Предыдущие записи