
23.10.2012
Список изменений в СУБД ЛИНТЕР от 23.10.2012
Платформы:
OpenVMS/Itanium
- Выполнено портирование СУБД ЛИНТЕР на платформу OpenVMS/Itanium.
Moxa IA-240
- Выполнено портирование СУБД ЛИНТЕР на миникомпьютер Moxa IA-240.
Windows
- Оптимизированы механизмы обработки конфликтов, приводящих к необходимости перезагрузки системы после операций установки/изменения.
- Добавлена обработка конфликтов при установках двух или более экземпляров ЛИНТЕР на один ПК для компонентов JDBC, ODBC, .NET.
- Модифицирована обработка конфликтов при установках 2-х или более экземпляров ЛИНТЕР на один ПК.
- Скорректирована работа для случая установки и изменения ранее установленных компонентов без административных прав.
- Скорректирована генерация командного файла для отложенного выполнения операций первой установки.
- Скорректировано удаление некоторых компонентов, в особенности ODBC, JDBC, .NET.
Linux и QNX
- Реализован улучшенный метод компрессии дистрибутива (размер дистрибутива уменьшился примерно в 1.5 раза).
- Добавлена деинициализация разделяемых библиотек при их выгрузке.
Android
- Для платформы Android в сборку добавлена утилита lindesk.
Ядро СУБД и транслятор SQL:
- Доработана оптимизация транзакционной работы в режиме Optimistic.
- Оптимизирована работа с файлами, размер которых превышает 2 Gb.
- Первые два аргумента функции LIN_INDEX_INFO сделаны аналогичными соответствующим аргументам функции LINTER_DICT_INFO.
- Добавлены неявные преобразования аргументов функции ACCESS к нужным типам.
- Скорректировано действие конструкции LIMIT для специальных случаев: 1) если задано "LIMIT 0", "LIMIT N,0" или "FETCH FIRST 0", то выбирается 0 записей; 2) если задано "LIMIT -1", "LIMIT N,-1" или "FETCH FIRST -1", то выбираются все записи (если задано неотрицательное N, то записи выбираются начиная с N-й записи в выборке).
- Значение ключа /TCP по умолчанию для Windows сделано таким же, как и под UNIX.
- Переиспользование записей для частично заполненной таблицы после команды ALTER TABLE SET RECORDS LIMIT теперь начинается только после достижения предельного числа записей.
- Разрешено удаление глобальной временной таблицы, если с ней работает только текущий канал.
- Разрешена авторизация BY SYSTEM в Windows с учётом доменного имени.
- Для многонитевого клиента увеличен размер стека нити, исполняющей асинхронные пользовательские обработчики.
Язык хранимых процедур:
- Устранен случай неверной обработки типа SMALLINT для параметра хранимой процедуры.
- Устранено неверное поведение функций read_blob_char, read_blob_nchar, read_blob_date в случае запорченного входного буфера.
- Добавлена поддержка кодировки UTF-8 для процедуры dupchar.
- Оптимизирована работа функций strpos, nstrpos, ltrim, add_motnhs, datesplit.
- Исправлена конкатенация UNICODE-строк в процедурах.
- Исправлен возврат NULL-значения из процедуры.
- Улучшено преобразование REAL >DOUBLE.
- Устранено игнорирование кода ошибки для неперехваченного исключения внутри процедуры, возвращающей курсор.
- Сделан корректный возврат исключений BADCURSOR и CURNOTOPEN.
- Исправлена обработка исключения DIVZERO и BADPARAM.
- Разрешено использование типа BYTE в функциях конвертации внутри хранимых процедур.
- Поправлена обработка синтаксиса BIGINT-значений.
- Поправлен символьный состав идентификаторов.
- Скорректирована работа проверки OUTOFCURSOR на случай внешних по отношению к процедуре действий с курсором.
Утилиты:
Настройки для разрешений всех графических утилит сведены в единый файл. В графической библиотеке RELAPI сделаны множественные изменения для совместимости с различными версиями Qt.
lindeskx
- Улучшена работа прогресс-бара.
- Скорректирована загрузка LOD-файла с разными разделителями в разных строках.
- Реализован просмотр картинок размером более 100 Мб.
- Реализовано открытие браузера объектов через панель инструментов при отсутствии узла в дереве инспектора.
- Оптимизирована работа парсеров разметки SQL-текста и команд inl, а также расширенного редактора запросов.
dbcgui (сетевой клиент) и dbsgui(сетевой сервер)
- Скорректирован формат лога dbcgui.
- Сделаны исправления для некоторых менеджеров окон X11.
- Исправлено обновление подписи узла конфигурации при изменении сервера по умолчанию через контекстное меню.
- Исправлен механизм запуска потока драйвера для МСВС 5.5 x64 / Qt 4.2.1.
testdb
- Добавлена обработка специального случая восстановления базы, когда запорчен адресный конвертер таблицы $$$SYSRL.
- Улучшена диагностика проблем в индексах — вместо комбинированного номера узла теперь выдаются номер файла и номер страницы файла.
- Устранена ошибочная диагностика проблем в случае наличия LOGON/LOGOFF триггеров.
gendb
- Исправлено поведение в случае использования неопределенной переменной среды окружения для задания каталога.
- Добавлены проверки выставляемых размеров файлов.
- Добавлена автоматическая локализация (выбор языка сообщений в зависимости от установленных переменных среды).
inl
- Дополнен синтаксис команды BLOB GET – разрешено не указывать имя пользователя для таблицы.
Интерфейсы:
Скорректированы процедуры поиска путей при установке интерфейсов PHP, Perl, Ruby.
LinQT
- Удалено неиспользуемое поле NCurs класса QLinterDriver.
- Добавлена возможность указания каталога Qt-библиотеки (не QTDIR) при сборке интерфейса.
- Оптимизирована работа функции QSqlField::length() в QT 4.
- Унифицирована обработка предложенией EXECUTE и CALL для хранимых процедур.
- Устранены ситуации с влиянием ранее выполненного QSqlQuery::exec() на работу с параметрами после последующего QSqlQuery::prepare().
- Устранены ситуации с обрезанием имени столбца максимальной длины на один символ.
- Улучшена работа с BLOB-значениями в новом интерфейсе, добавлен вывод предупреждений при попытках вызова неподдерживаемых данной версией интерфейса функций.
ADO.NET
- Поправлено заполнение поля ColumnOrdinal.
- Улучшена работа с выходными параметрами хранимых процедур переменной длины.
- Запрещено использовать метод command.ExecuteReader() для создания нескольких открытых объектов DataReader, в этом случае теперь генерируется исключение InvalidOperationException.
Call (intlib)
- Поправлена обработка максимального отрицательного значения BIGINT.
- Исправлено преобразование в текст выражений для CHECK.
- Поправлен вывод в тексте CHECK значений типа SMALLINT.
- Исправлена генерация текстового представления для функций TRIM, LTRIM, RTRIM.
Perl
- Устранен случай утечки памяти.
- Улучшена работа 64-битной версии.
PCC (встроенный SQL)
- Реализован автоматический выбор языка сообщений в зависимости от переменных среды.
LinAPI
- Унифицирована обработка предложений EXECUTE и CALL для хранимых процедур.
PHP
- Добавлена поддержка сборки для новых версий PHP.
LinCPP
- Скорректирована работа парсера XML.
Ruby
- Устранен случай утечки памяти.
ODBC
- Поправлено возвращаемое значение точности данных типа BIGINT.
Решенные проблемы:
- со случаем ошибочного отключения поиска страницы данных, приводившего к замедлению операции UPDATE;
- с работой аналитических функций RANK, DENSE_RANK, FIRST_VALUE, LAST_VALUE в случае отсутствия разбиения PARTITION BY;
- с обработкой NULL-значений функциями FIRST_VALUE, LAST_VALUE;
- с IN-MEMORY таблицами, имеющими флаг AUTOLOAD;
- с ошибочно выполнявшейся временной разблокировкой записей, заблокированных по FOR UPDATE;
- с работой кэша запросов в случае подачи непретранслированного запроса после точно такого же претранслированного;
- с работой кэша ответов в случае наличия logoff-триггеров;
- с синхронизацией по времени и работой событий по таймеру под Windows;
- с возможным пропуском активизации события в случае его повторной активизации по другому каналу;
- с многократной генерацией значений столбцов GENERATED AS IDENTITY во время выполнения одного запроса;
- со вставкой значения SYS_GUID() в столбец типа VARBYTE;
- со вставкой в таблицу псевдозначения SESSIONID;
- с заданием каталога временных файлов СУБД ЛИНТЕР под Linux по умолчанию;
- с созданием неиспользуемых журнальных файлов при работе в read-only режиме;
- с сохранением в системном каталоге ссылки на информацию о рабочей станции, описание которой было удалено;
- с поведением функции CONVERT в случае неверного имени кодировки;
- с поведением logoff-триггера в случае ошибочного кода завершения последней операции;
- с обработкой триггеров BEFORE STATEMENT и INSTEAD OF для UPDATE;
- с работой конструкции NULLIFERROR, когда аргументом вложенной функции является CAST-выражение;
- с преобразованиями типов внутри CASE- и DECODE-выражений;
- с работой пакетной загрузки данных в режиме autocommit в Linter Multiversion;
- с ошибочным запретом NULL-значений для GENERATED-столбцов (кроме GENERATED AS IDENTITY);
- с ошибочным запретом ключевого слова ALL для функции COUNT;
- с пропуском некорректных обращений к столбцам из запросов с HAVING, но без GROUP BY;
- с преобразованием REAL->DOUBLE в CASE/DECODE;
- с дублированием столбцов в списке CORRESPONDING;
- с неверной пометкой страниц данных как занятых операцией ALTER TABLE ADD COLUMN;
- с вытеснением активной страницы при работе в режиме read-only;
- с занесением информации в столбцы GENERATED AS IDENTITY в режиме optimistic в Linter Multiversion;
- с проблемами, наведенными выполнением команды SET QUANT TIMEOUT.