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.