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; поправлена работа с параметрами процедур).
- Доработан код LINQ-провайдера.
- Добавлена поддержка Nhibernate.
- Поправлены проблемы совместимости с HNibernate (GetBytes в случае пустого буфера возвращает для BLOB его длину; поправлена конвертация некоторых типов данных; getOrdinal теперь начала ищет как case-sensitive, затем как case-insensitive).
- Добавлена поддержка MONO developer 2.
- Добавлена поддержка .NET 4 RC.
- Отлажена передача функции inter() пустого буфера для длинного сообщения.
- Исправлено получение описания столбцов результата в случае большого запроса.
- Отлажено извлечение длинной записи (больше 8K) обычным select-запросом.
- Устранена проблема с попаданием посторонних символов в конец запроса.
- Увеличен размер буфера для NULL-индикаторов для предотвращения ошибки, вызванной его недостаточным размером.
- Исправлена проблема повторной загрузки драйвера после его выгрузки.
- Для новых сборок увеличены размеры буферов (трансляции, получения ответа, пакетного чтения записей) до 64 кБ. Эти правки влияют и на интерфейс DBExpress.
- Поправлена обработка функции getbytes (при вызове с аргументом длины, равным 0, игнорируется размер BLOB и то, что позиция 1 не существует в пустом BLOB).
- Обеспечена корректная сборка с помощью win32-g++.
Утилиты:
Lindeskx:
- Устранена проблема с загрузкой данных типа BOOLEAN.
- Поправлено визуальное представление диалоговых окон.
- Сделаны исправления в SQLEditor: добавлено слово CALL в список слов, начинающих запросы; исправлена проблема с невыполнением функции "Свернуть/Развернуть все в запросе", если запрос начинался в строке с номером 0.
- Значительно доработаны редактор запросов, редактор и отладчик хранимых процедур (исправлена проблема с задержками при парсинге; добавлены недостающие ключевые слова).
- Введена возможность ставить точку остановки на процедуре до ее вызова; полностью исправлен режим WAIT (в частности, сделано модальное окно).
- Исправлена обработка ошибок для предотвращения зависания при разъединении с ядром; исправлена остановка асинхронного запроса.
- Исправлено отображение локальных переменных при рекурсивных вызовах.
- Предотвращен вывод одной и той же ошибки в лог, если пользователь ничего не делал.
- Доработан парсинг комментариев.
- Реализовано включение графиков SYSTEM_TIME и USER_TIME в окно статистики.
- Поправлен автоматический запуск сервера репликации при автоматическом запуске БД.
- Поправлено управление сервером репликации.
- Поправлен запуск репликации для БД по умолчанию.
- Для новых сборок добавлен дополнительный режим быстрой загрузки данных с большим буфером по ключу "-s 2".
- Устранены проблемы с сохранением текста CHECK-ограничений в неверной кодировке и с удвоением символа '%' в текстах CHECK-ограничений.
- Для новых сборок добавлен дополнительный режим пакетной выгрузки данных с большим буфером в режиме выгрузки с ключом "-o M".
- Поправлена обработка переноса контрольной точки для устранения проблемы с накоплением файлов журнала.
- Поправлена проблема с переносом временной контрольной точки в неинкрементном режиме при использовании опции lhb -movecp.
- В скриптовом языке поправлена работа операции неравенства для строковых переменных, скорректирована выдача сообщений в случае проблем с выполнением внешних команд.
- Устранено завершение работы утилиты при завершении работы ядра под Linux.
- Поправлена строка подсказки о синтаксисе командной строки (для ключа -t).
- Поправлена работа с базами, у которых владелец не SYSTEM.
- Исправлена проблема с тестированием таблицы с записью длиной более 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.