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

IBProvider v1.6

Используемый компилятор

Модуль _IBProvider.dll откомпилирован «Free Borland C++ Compiler». Импорт функций gds32.dll осуществляется по именам. При этом оставлена совместимость с клиентской частью от IB4.

Исправленные ошибки

  • В случае NUMERIC/DECIMAL колонок результирующего множества возвращался неправильный размер типа DBTYPE_R8.
  • Более корректная проверка имен типов, передаваемых в ICommandWithParameters::SetParameterInfo. Раньше можно было передавать например такое имя «DOUBLEPRECISIO N».

Изменения

  • Новый базовый адрес загрузки _IBProvider.dll 0x45E00000. Благодаря линковщику от BCB5, таблица переназначений сохранена.
  • Плавающая конвертация INT64 в VARIANT. Могут использоваться типы VT_I4/VT_R8. Ранее использовался только VT_R8.

Новая функциональность

  • Реализация IDBInfo.
  • Реализована специализированная поддержка запросов «select * from table». В этом случае провайдер определит имя таблицы и предоставит в columns rowset информацию о колонках первичного ключа. Честно говоря, очень не хватает собственного полноценного разборщика SQL запросов.
  • Реализована поддержка VARIANT типов VT_I1, VT_UI2, VT_UI4, VT_INT, VT_UINT.
  • Отказоустойчивость. Одним из потенциально уязвимых мест OLE DB является буфер обмена данными. Принимая во внимание разнообразие типов и способов передачи данных, необходима гарантия корректной обработки буфера. В текущей версии был реализован новый подход принудительного обхода всех элементов буфера, что при корректной работе клиента OLE DB провайдера гарантирует отказоустойчивость при любых динамических ошибках (например, распределения памяти).
  • Реализована поддержка выполнения «ROLLBACK RETAIN» через OLE DB интерфейсы.

Новые свойства набора «Data Source Information»

Наборы схем

  • 25 наборов. Это все основные и множество вспомогательных.
  • Тестировалось на IB4, IB5, FB 0.9.4 и IB 6.2.641. Думаем, будет работать и на IB6.5
  • Поддержка ограничений.
  • Сортировка содержимого согласно стандарту.
  • Возможность управления режимом кэширования метаданных. Смотрите новые свойства «schema_cache» и «Session Schema Cache«.
  • Секционная блокировка кэша метаданных обеспечивает хорошую производительность многопоточных приложений.
  • Возможность запрещения неявных транзакций для выполнения запросов получения метаданных. Смотрите свойства «inner_trans» и «Session InnerTrans«. В случае, если пользователь явно начал транзакцию, то именно она будет использоваться для получения метаданных. В случае старта неявной транзакции будет использоваться уровень изоляции указанный в «Autocommit Isolation Levels«.
  • Некоторые наборы были расширены, чтобы предоставлять более осмысленную информацию, в частности:
    • DBSCHEMA_REFERENCIAL_CONSTRANTS
    • DBSCHEMA_TABLE_PRIVILEGES
    • DBSCHEMA_COLUMN_PRIVILEGES
  • Возвращаемые наборы поддерживают IColumnsRowset
  • Интенсивное использование внутреннего пула объектов минимизирует затраты при повторном создании наборов.

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