В новой версии IBProvider реализована эмуляция типов BOOLEAN и GUID при работе с Firebird и Interbase.

Суть проблемы:

В новой версии IBProvider поддержка типов Guid и Boolean была реализована на уровне драйвера, и теперь вы можете свободно использовать эти типы в своих приложениях независимо от версии сервера Firebird и Interbase.

Данные хранятся в типах, которые поддерживаются сервером. IBProvider просматривает домены данных и если обнаруживается домен, подходящий по маске, он выставляет колонке соответствующий тип Boolean или Guid.

Домены должны удовлетворять следующим условиям:

Новые свойства для включения эмуляции типов

Для того чтобы указать провайдеру какие данные следует интерпретировать как Boolean или Guid, в IBProvider добавлены два новых свойства инициализации: user_type_boolean, user_type_guid. В них определяется маска домена, который представляет эмулируемый тип. В маске поддерживаются символы «*» и «?». Маска чувствительна к регистру.

При несоблюдении этих условий, провайдер игнорирует имя домена и не пытается выполнять подмену типа.

Эмуляция работает для:

Ограничения эмуляции типов

Из-за ограничений ISC API (IB/FB), при использовании простых типов для входящих параметров команд, необходимо явно указывать тип параметра. Для колонок с массивами поддерживается автоматическое формирование описания параметра.

Эмуляция типов в метаданных

Эмуляция типов распространяется и на схемы метаданных. Провайдер обеспечивает согласованность типов, которые читаются при выполнении запросов и типов, которые отображаются в схемах COLUMNS, PROCEDURE_PARAMETERS, PROCEDURE_COLUMNS.

Решена проблема с настройкой подключения через диалог DataLink (v1,v2,v3)

Устранено зависание при использовании DataLink из программы, инициализирующей COM для работы с «Free Threaded» объектами.

Оптимизация объектов провайдера для «Free Threaded» модели COM (v1,v2,v3)

Все объекты провайдера, с которыми может взаимодействовать пользователь, предоставляют интерфейс IMarshal, оптимизированный для «Free Threaded» COM-приложений.

Таким образом, теперь IBProvider предоставляет максимально полную поддержку для многопоточных клиентов. Не зависимо от наличия такой поддержки со стороны gds32.dll/fbclient.dll

Хорошим примером многопоточного клиента является C++ тестовая система IBProvider, которая задействует все доступные ядра и процессоры компьютера для прогона полумиллиона тестов провайдера.

Исходные тексты тестовой системы находятся в каталоге «TestCode\ActiveX\IBP\oledb_test»

Новые примеры и дистрибутив:

Примеры использования эмуляции типов на .Net Framework: эмуляция Boolean и Guid в Firebird and Interbase

Скачать IBProvider Professional 3.0.0.7446 RC4