13.04.2010
Список изменений в СУБД ЛИНТЕР от 13.04.10

Платформы:

  • Добавлена поддержка Maemo.
  • Добавлены новые функции управления доступом для поддержки установки в Windows Vista.
  • Исправлен новый вариант обмена сообщений для QNX.

Интерфейсы:

Perl:
  • Добавлены функции для работы с несколькими BLOB-столбцами и некоторые ранее отсутствующие функции для работы с BLOB.
  • Внесены изменения в функцию BLOBGetSize — теперь эту функцию можно вызывать и как прежде, и с указанием номера столбца.
  • Доработан интерфейс для 6-й версии (добавлена функция, возвращающая информацию о соединении в виде массива; добавлена функция установления кодировки; добавлена функция, использующая команду пакетного чтения записей; добавлены функции, позволяющие получать данные обо всей записи сразу в виде массива и в виде хеша, а также обо всех записях ответа; в GetColInfo – возвращается больше информации о столбце в виде хеша; обновлён .pm файл – описание работы с расширением, исправлены некоторые ошибки при экспорте модуля – названия констант).
  • Оптимизирована обработка широких ответов.
  • Добавлено немедленное извлечение первой записи.
  • Реализовано опциональное поведение для BLOB (при указании опции CO_FETCH_BLOBS_AS_USUAL_DATA BLOB извлекается как обычные данные целиком).
  • Добавлена поддержка асинхронных запросов.
  • Оптимизирована работа с параметрами в DBI (убран старый механизм callback из intlib; поправлены bind из хост-переменных – теперь данные берутся непосредственно в момент execute; поправлена работа с параметрами процедур).
ADO.NET:
  • Доработан код LINQ-провайдера.
  • Добавлена поддержка Nhibernate.
  • Поправлены проблемы совместимости с HNibernate (GetBytes в случае пустого буфера возвращает для BLOB его длину; поправлена конвертация некоторых типов данных; getOrdinal теперь начала ищет как case-sensitive, затем как case-insensitive).
  • Добавлена поддержка MONO developer 2.
  • Добавлена поддержка .NET 4 RC.
CALL-интерфейс (intlib):
  • Отлажена передача функции inter() пустого буфера для длинного сообщения.
OleDB:
  • Исправлено получение описания столбцов результата в случае большого запроса.
  • Отлажено извлечение длинной записи (больше 8K) обычным select-запросом.
  • Устранена проблема с попаданием посторонних символов в конец запроса.
  • Увеличен размер буфера для NULL-индикаторов для предотвращения ошибки, вызванной его недостаточным размером.
DBExpress:
  • Исправлена проблема повторной загрузки драйвера после его выгрузки.
ODBC:
  • Для новых сборок увеличены размеры буферов (трансляции, получения ответа, пакетного чтения записей) до 64 кБ. Эти правки влияют и на интерфейс DBExpress.
JDBC:
  • Поправлена обработка функции getbytes (при вызове с аргументом длины, равным 0, игнорируется размер BLOB и то, что позиция 1 не существует в пустом BLOB).
LinQT:
  • Обеспечена корректная сборка с помощью win32-g++.

Утилиты:

Lindeskx:
  • Устранена проблема с загрузкой данных типа BOOLEAN.
  • Поправлено визуальное представление диалоговых окон.
  • Сделаны исправления в SQLEditor: добавлено слово CALL в список слов, начинающих запросы; исправлена проблема с невыполнением функции "Свернуть/Развернуть все в запросе", если запрос начинался в строке с номером 0.
  • Значительно доработаны редактор запросов, редактор и отладчик хранимых процедур (исправлена проблема с задержками при парсинге; добавлены недостающие ключевые слова).
  • Введена возможность ставить точку остановки на процедуре до ее вызова; полностью исправлен режим WAIT (в частности, сделано модальное окно).
  • Исправлена обработка ошибок для предотвращения зависания при разъединении с ядром; исправлена остановка асинхронного запроса.
  • Исправлено отображение локальных переменных при рекурсивных вызовах.
  • Предотвращен вывод одной и той же ошибки в лог, если пользователь ничего не делал.
  • Доработан парсинг комментариев.
  • Реализовано включение графиков SYSTEM_TIME и USER_TIME в окно статистики.
Linadm:
  • Поправлен автоматический запуск сервера репликации при автоматическом запуске БД.
  • Поправлено управление сервером репликации.
  • Поправлен запуск репликации для БД по умолчанию.
Loarel:
  • Для новых сборок добавлен дополнительный режим быстрой загрузки данных с большим буфером по ключу "-s 2".
Dbstore:
  • Устранены проблемы с сохранением текста CHECK-ограничений в неверной кодировке и с удвоением символа '%' в текстах CHECK-ограничений.
  • Для новых сборок добавлен дополнительный режим пакетной выгрузки данных с большим буфером в режиме выгрузки с ключом "-o M".
Lhb:
  • Поправлена обработка переноса контрольной точки для устранения проблемы с накоплением файлов журнала.
  • Поправлена проблема с переносом временной контрольной точки в неинкрементном режиме при использовании опции lhb -movecp.
  • В скриптовом языке поправлена работа операции неравенства для строковых переменных, скорректирована выдача сообщений в случае проблем с выполнением внешних команд.
Inl:
  • Устранено завершение работы утилиты при завершении работы ядра под Linux.
Hresctl (горячее резервирование):
  • Поправлена строка подсказки о синтаксисе командной строки (для ключа -t).
Сервер асинхронной репликации (lreplserver):
  • Поправлена работа с базами, у которых владелец не SYSTEM.
Testdb:
  • Исправлена проблема с тестированием таблицы с записью длиной более 4K, содержащей BLOB-значение.
  • Увеличена точность представления времени в сообщениях TESTDB (для чего добавлен новый ключ -showticks).

Ядро СУБД и транслятор SQL:

  • Добавлена поддержка синтаксической конструкции 'TABLE <имя_таблицы>' в соответствии со стандартом SQL.
  • Добавлена поддержка синтаксиса CREATE UNIQUE INDEX.
  • Добавлена функция LINTER_VERSION для получения информации о версии СУБД.
  • Добавлена возможность преобразования чисел для отображения в экспоненциальном формате функцией TO_CHAR.
  • В виртуальную таблицу $$$SYSINFO добавлены два столбца USER_TIME и SYSTEM_TIME для учета затрат пользовательского времени (времени работы ядра) и системного времени (времени работы ввода-вывода).
  • Добавлено автоматическое преобразование в конструкциях CASE константных выражений числовых (целых, вещественных, или и тех, и других) типов к основному типу CASE.
  • Сделаны исправления для равномерного удаления файлов журнала в процессе горячего резервирования.
  • Реализована оптимизация для обработки предиката IS [NOT] NULL после OUTER JOIN для выполнения антисоединения таблиц (найти в одном операнде то, чего нет в другом).
  • Реализовано несколько дополнительных оптимизаций для вычисления агрегатных функций в тривиальных случаях.
  • Реализовано несколько дополнительных оптимизаций для вычисления предиката LIKE в тривиальных случаях.

Устранение проблем:

  • Устранение проблем журнализации и работы ядра в режиме горячего резервирования:
    • при операциях над BLOB-значениями;
    • при параллельной работе по различным курсорам одного соединения;
    • при работе из хранимых процедур; o при откате триггерных каналов;
    • при удалении составных ключей; o при операциях PRESS, REBUILD, TRUNCATE и т.п.;
    • с ошибкой 6708 в случае ROLLBACK по основному каналу после COMMIT по курсору (при выполнении операций над BLOB-значениями);
    • с квантованием доката операций по журналу; o при работе с AUTOINC-столбцами;
    • c зацикливанием в процедуре отката транзакции;
    • c порчей страниц конвертера таблицы в резервной базе при горячем резервировании.
  • Устранение проблем с обработкой запросов:
    • возникавших при использовании индексов для вычисления предикатов над столбцами подзапросов (изменен алгоритм преобразования промежуточных ответов);
    • с вычислением агрегатных функций от результатов множественных операций (UNION и т.п.);
    • с обработкой предиката полнотекстового поиска CONTAINS в сложных запросах;
    • с неверным выбором стратегии обработки для предиката LIKE в случае выражения в его правой части;
    • с некорректным преобразованием предикатов BETWEEN/NOT BETWEEN в случае использования составных индексов;
    • c вычислением запроса со сложным подзапросом в SELECT, содержащим внешнюю ссылку;
    • с утечкой памяти канала при выполнении некоторой категории сложных запросов, содержащих предикат OR;
    • при квантовании выполнения сложных запросов.
  • Устранение проблем некорректной работы с записями длиной больше 4K и с длинными запросами:
    • с выполнением иерархического запроса с размером записи результата больше 4K;
    • c выполнением запроса, выбирающего запись длиной больше 4K и содержащую BLOB-значение, в случае дальнейшего обращения к этому BLOB-значению;
    • с созданием составного индекса в режиме BY APPEND в случае, когда RECORD SIZE LIMIT больше 4K;
    • исправлена обработка оттранслированных запросов большого размера.
  • Устранена проблема с возможным пропуском сброса страницы на диск в ядре СУБД из-за ранее установленного кода ошибки.
  • Исправлена установка типа BLOB-значения при добавлении его через SQL.
  • Добавлены необходимые проверки в построение фразового индекса на BLOB-значение.
  • Поправлена работа глобальных временных таблиц (добавлена поддержка работы BLOB-столбцов, запрещено создание фразовых индексов, исправлена работа с составным PRIMARY KEY).
  • Устранена проблема, которая могла иногда возникать при передаче NULL-значений через параметры.
  • Исправлена редкая проблема с выдачей ошибки 816 при поиске по индексу после длительной работы с ним.
  • Убрано некорректное усечение концевых пробелов для константных аргументов типа CHAR.
  • Запрещена приводившая к проблемам одновременная отладка одной и той же хранимой процедуры разными пользователями.
  • Устранены проблемы, возникавшие при параллельной работе нескольких процессов BACKUP.
  • Добавлена дополнительная информация в диагностические сообщения: о неудачном поиске ключа в индексе, о неизвестном устройстве.
  • Добавлена поддержка переменной среды окружения LINTER_TMP компонентой loltp.
  • Поправлено описание параметров типа BIGINT в представлениях для поддержки ODBC.