Дата публикации: 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 обязательна.