Дата публикации: 10.07.2002

IBProvider v1.7.4.289

В этой версии

  • Устранены все известные на текущий момент ошибки и неточности, связанные с конвертированием типов данных.
  • Улучшена поддержка Client Cursor Engine.

Поддержка NUMERIC

В предыдущих версиях при подготовке параметров с типом DBTYPE_NUMERIC (adNumeric) использовалось промежуточное преобразование в double. При этом могли теряться значащие цифры. Сейчас используется прямое конвертирование в InterBase представление NUMERIC (целое+масштаб) с учетом текущего диалекта подключения. Преобразование в double используется, только если DBTYPE_NUMERIC содержит число, которое нельзя представить в виде целое+масштаб с использованием INT32 (первый диалект) или INT64 (третий диалект).

Исправления распространяются как на обычные NUMERIC параметры, так и на параметры, содержащие NUMERIC-массивы.

Потеря точности NUMERIC-данных при чтении была исключена с самого начала (см. версию 1.6.1).

Примите во внимание, что DBTYPE_NUMERIC не является VARIANT-совместимым типом данных. Поэтому, возможно, для ADODB полностью исключить потерю значащих цифр можно только использованием текстового представления числа.

Поддержка бинарного представления и storage-объектов

Теперь получать и устанавливать в виде DBTYPE_BYTES и storage-объектов с интерфейсом ISequentialStream можно любые данные. В том числе и элементы массивов. Ранее ISequentialStream поддерживался только для BLOB полей.

В частности, Client Cursor Engine читает/устанавливает VARCHAR(32000) как storage-объект.

Эта поддержка доступна и в клиентской библиотеке классов С++ для работы с OLE DB.

Управление параметрами запроса

Добавлены новые свойства инициализации источника данных и команды.

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

Свойство force_param_describe. Принудительное получение описания параметров. Обеспечивает передачу значений параметров в том формате, который требует сервер. При этом вся нагрузка ложится на конвертор типов провайдера. Ранее неявное получение описания параметров проводилось только для массивов. Значение по умолчанию — true.

В результате, например, можно не заботиться о корректной установке описания текстовых BLOB полей, а работать с ними как с обычными текстовыми полями. Если в вашей базе данных произошла смена типа с VARCHAR на BLOB или наоборот, то провайдер самостоятельно скорректирует принцип установки данных. Заметьте, что пока сам сервер баз данных может только писать VARCHAR в BLOB, но не наоборот.

Поддержку такого рода требует Client Cursor Engine, который интерпретирует текстовые поля типа VARCHAR(32000) как MEMO.

Если вы формируете корректные описания параметров, то вы можете установить это свойство в false. Это исключает одно лишнее обращение к серверу при первом (!) выполнении параметризированного запроса.

Свойство clear_param_info. При установке нового текста запроса провайдер очищает список описаний параметров. Однако, если клиент сначала устанавливает описания параметров, а потом текст запроса, то информация о параметрах теряется и провайдер запрашивает описания с сервера (см. auto_param_describe). Это приводит к лишнему вызову IB API и возможности неправильной интерпретации данных, представленных в виде BYTES / storage-объектов. Значение по умолчанию — true.

Определить последовательность установки текста запроса и описания параметров можно с помощью специальной трассировочной версии провайдера.

Потеря пользовательской установки описания параметров наблюдалась при работе с ADO.NET.

Принцип выполнения SP

В предыдущих версиях провайдера было добавлено новое свойство инициализации источника данных и команды — std_exec_sp. Это свойство определяет, каким образом нужно интерпретировать запрос «exec SP» / «execute SP».

Следует иметь в виду, что описание хранимых процедур в schema rowset описывает SP с OUT-параметрами независимо от значения std_exec_sp в строке инициализации источника.

Schema Rowset

Исправлены незначительные ошибки в генерации наборов данных. Обеспечена возможность чтения данных с использованием флага DBMEMOWNER_PROVIDEROWNED, что уменьшает трафик перемещения данных между клиентом и провайдером до минимума.

Множество, возвращаемое IColumnsRowset

Добавлена поддержка DBMEMOWNER_PROVIDEROWNED.

В итоге

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


Дата публикации: 10.07.2002. Права на материал принадлежат: IBProvider. При перепечатке ссылка на сайт https://www.ibprovider.com/rus обязательна.
Предыдущие новости
IBProvider v1.7.3.269