Новый триал IBProvider [сборка 17875]

Всем привет.

Выложен новый триал OLE DB провайдера, в который внесены следующие исправления и изменения, связанные с массивами:

1. Исправлено формирование многомерных массивов. Внезапно обнаружилось, что IBProvider формирует описания размерностей не в том порядке. В результате сервер и провайдер по-разному вычисляют расположения элементов.

2. После очередного размышления над багой Firebird CORE-1588 (у InterBase аналогичная болезнь), пришел к выводу что на текущий момент самым правильным решением будет обрабатывать VARCHAR-массивы как CHAR-массивы. Это устранило костыли в коде IBProvider-а и принесло в мою душу гармонию и умиротворенность.

Чтобы два раза не вставать, похоже я нашел способ решения этой баги, но он достаточно тяжеловесный — нужно самостоятельно формировать и обрабатывать блоб с массивом. Возможно когда-нибудь запилю.

На уровне сервера эта проблема решается определением двух новых API-функций для записи и чтения массивов, которые будут правильно обрабатывать SDL-описание. Как выяснилось — в саму базу VARCHAR-массивы пишутся правильно. Надо будет, в качестве эксперимента, попробовать реализовать это в собственном клоне FB.


Вот такие вот дела. Все это побочный эффект реализации и тестирования сохранения массивов через собственный низкоуровневый INET-клиент для Firebird.

Релиз IBProvider-а (3.25) будет после реализации чтения массивов в этом низкоуровневом клиенте. Сегодня планирую начать тупить возиться в этом направлении.

Leave a Comment