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

IBProvider v1.5.1 — смена компилятора, оптимизация, IColumnsRowset и другое …

Мы завершили ревизию функциональности, реализованной в версии 1.5. В релизе 1.5.1 были исправлены незначительные ошибки и проведена оптимизация. В настоящий момент начата реализация новых интерфейсов, один из которых (IColumnsRowset) доступен уже сейчас.

Смена комилятора

В настоящий момент осуществляется переход на «Free Borland C++ Compiler», поэтому Вы можете скачать один из двух вариантов провайдера:

  • Откомпилированный в BCB3 (rtl — cw3240mt.dll)
  • Откомпилированный бесплатным компилятором от BCB5 (rtl — cc3250mt.dll)

Ошибки

  • Поддержка квотированных имен, содержащих апострофы. Например, «a'b». Как оказалось, это распространенная ошибка существующих библиотек доступа.
  • Конвертации DBTYPE_UI1 и DBTYPE_I1 в символьное представление.
  • CanConvert сообщал о невозможности конвертации DBTYPE_BOOL в другие типы.

Оптимизация

  • Улучшено управление списком идентификаторов (HROW) заблокированных рядов. Использовавшееся ранее хранение в линейном списке, приводило к снижению скорости.
  • Внутренний синтаксический анализатор SQL запросов был расширен до распознавания всех основных категорий. За счет этого IBProvider делает запрос к серверу для получения RowAffected только для запросов «INSERT …», «UPDATE …», «DELETE …». Для остальных категорий всегда возвращается -1.
  • Реализован пул разделяемых объектов модуля. За счет этого снижены расходы на создание и использование объектов публикации метаданных. Смотри ниже IColumnsRowset.

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

  • Поскольку ADO наотрез отказывается использовать IOpenRowset для открытия таблиц, была реализована явная поддержка их открытия через команды:

    ADODBCommand.CommandText=«TABLE/VIEW» .

    За счет внутреннего анализа SQL выражений, затраты, связанные с этой поддержкой, ничтожны. По всей видимости, придется еще реализовать специальную поддержку запросам вида «select * from TABLE/VIEW».
  • Начата реализация внутренней инфраструктуры для публикации метаданных базы данных. Поскольку эти интерфейсы получения метаданных используются в ADO достаточно часто, было реализовано кэширование таких объектов, как описатели стандартных колонок и их представлений в виде рядов множеств, создаваемых IColumnsRowset. В настоящий момент завершена реализация IColumnsRowset:
    • Поддерживается командами и результирующими множествами.
    • Рекурсивность. Возвращаемые множества также поддерживают IColumnsRowset. Поскольку струкура и данные, возвращаемые при рекурсивном использовании IColumnsRowset не меняются, то это очевидные кандидаты на повторное использование.
    • IColumnsRowset команд и их результирующих множеств содержат специфические колонки:
      • DBCOLUMN_BASECATALOGNAME — всегда NULL
      • DBCOLUMN_BASECOLUMNNAME
      • DBCOLUMN_BASESCHEMANAME — всегда NULL
      • DBCOLUMN_BASETABLENAME
      • DBCOLUMN_KEYCOLUMN — вхождение колонки в первичный ключ таблицы (NULL/true/false)
    • Запрос к системным таблицам для получения списка первичных ключей выполняется только для таблиц. Для просмотров и других категорий запросов эта операция не выполняется.
    • В режиме авто-коммита лишняя транзакция стартует только в случае использования IColumnsRowset у команды. IColumnsRowset результирующего множества использует транзакцию, в которой производится выборка данных.

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