20.04.2012
Список изменений в СУБД ЛИНТЕР от 20.04.2012
Ядро СУБД и транслятор SQL:
- Реализован запрет удаления базовых таблиц/VIEW, на которые ссылаются VIEW (в случае обычного DROP TABLE/VIEW), либо их каскадное удаление (в случае DROP TABLE/VIEW CASCADE), что обеспечивает целостность базы и устраняет возможность противоречий между зависимыми друг от друга таблицами и VIEW в момент операций, которые могут привести к таким противоречиям.
- Добавлен синтаксис GROUP BY первичный_ключ, который дает возможность писать GROUP BY T.PK (где PK - первичный ключ таблицы T) вместо GROUP BY T.C1, T.C2,... и делать запросы с группировкой значительно более читабельными, убирая повторения всех неагрегированных столбцов ответа из конструкции GROUP BY.
- Расширен формат конструкции CASE: добавлена возможность перечислять в конструкции WHEN несколько значений. Также добавлена возможность выбора в конструкции CASE в зависимости не только от скалярного значения, но и от конструктора записи.
- Расширена функциональность обработки строк: добавлена функция OVERLAY для замены подстроки в строке на указанную строку. Исходная строка, искомая подстрока и заменяющая строка могут быть выражениями.
- Увеличена скорость операций поиска по индексам (в отдельных случаях — в 2 раза по сравнению с предыдущими версиями).
- Добавлена поддержка псевдозначений LOCALTIME, LOCALTIMESTAMP, CURRENT_DATE, CURRENT_TIME для повышения удобства работы с локальным временем.
- Разрешен останов ядра СУБД при работе каналов фоновой очистки записей без выдачи предупреждения (для Linter Multiversion).
- Поправлены и унифицированы форматы вывода дат в логах ядра и testdb.
- Внесены исправления в ситуацию с резким замедлением чтения длинных BLOB-значений в случае, когда интерфейс нижнего уровня не указывает явно номер BLOB-столбца.
- Увеличен размер стека сортировки для иерархических запросов.
Улучшения в работе:
- С окончанием обработки журнала при восстановлении (когда возможно игнорировать локальный сбой и продолжать обработку).
- С пропуском удаления после рестарта файлов таблицы, создание которой было прервано.
- С обработкой BLOB в журнале при горячем резервировании.
- При некоторых повреждениях индексов;
- С BLOB-файлами в случае старого (непрерывного) формата bitmap.
- С пересчетом номеров страниц в случае нового (разрывного) формата bitmap.
- С восстановлением по журналу базы, содержащей файлы длиннее 2 Гб.
- С использованием одной последовательности (SEQUENCE) разными каналами одного соединения.
- С откатом триггерных/процедурных каналов.
- С быстрой загрузкой данных в случае длинного буфера.
- С определением размера пула сортировки в случае увеличенного RECORD SIZE LIMIT.
- Функций DIFFRENCE и SOUNDEX с параметрами в кодировке, отличной от CP866.
- С загрузкой BLOB-значений длиннее максимально разрешенного размера.
- С созданием/удалением индексов параллельно с некоторыми другими операциями.
- С оптимизацией выполнения запросов с множественными соединениями, содержащими обращения к столбцам ROWID и ROWTIME.
- С сортировкой иерархических запросов на платформе QNX.
- С пулом памяти ядра при выполнении команды TEST TABLE.
- С обработкой некорректно описанных кодовых страниц.
- С блокировкой/разблокировкой страниц при работе с глобальными событиями.
- С сохранением многострочного текста хранимых событий.
- С работой ключа /OUTFLIMIT на платформе Win32.
- С автоматическим устранением некоторых трудностей в базе (несоответствие битовой карты файла базы распределению страниц разных типов в нем).
Безопасность и шифрация данных:
- Добавлена возможность использования криптоалгоритмов из библиотеки openssl для шифрования данных и подсчета контрольных сумм, а также настройки использования этих возможностей.
- Добавлена поддержка ГОСТ-протокола и алгоритма шифрования AES256 в сетевых утилитах.
- Добавлена функция использования openssl для горячего резервирования.
- Добавлена ssl-аутентификация клиента и сервера с использованием сертификатов удостоверяющих центров для TLS протокола и поддержка листов отозванных сертификатов.
Платформы:
- Реализовано выделение разделяемой памяти для сортировки через механизм mmap (вместо менее эффективного и менее надежного ipc sysv) для платформы Linux.
- Усовершенствована сборка дистрибутива ЛИНТЕР под платформу Android, в том числе кросс-сборка на платформе Win32.
- Внесены поправки при тестировании дистрибутива ЛИНТЕР под Sparc Solaris, собранного компилятором gcc.
Интерфейсы:
LinQT:
- Добавлен новый интерфейс работы с BLOB-значениями.
- Добавлены новые примеры, в том числе пример использования нового интерфейса работы с BLOB.
- Скорректирована обработка ситуации "нет данных".
PHP:
- Добавлена поддержка php 5.4.
Intlib:
- Добавлено автоопределение кодировки UTF8.
ADO.NET:
- Улучшена работа с перемещением буфера параметра при его расширении.
- Расширен класс LinterDbConnectionStringBuilder — добавлена поддержка значений по умолчанию.
JDBC:
- Увеличен стек потоков во избежание наблюдавшихся проблем.
Ruby:
- Улучшена работа функции GetAnswerInfo (поправлен формат массива с описаниями столбцов – теперь индексами являются не имена, а номера).
Язык хранимых процедур:
- Добавлена поддержка DEFAULT-значений для параметров типов BYTE и VARBYTE (с помощью конструкции HEXTORAW).
- Улучшена передача константного значения для параметра типа VARCHAR при вызове процедуры из запроса.
Утилиты:
lindeskx:
- Расширен набор обрабатываемых команд SQL-окна — добавлены команды утилиты inl.
dbstore:
- Реализована опциональная выгрузка базы в единый файл (ключ -sf).
testdb:
- Исключены случаи преждевременного прекращения проверки индекса.
loarel:
- Улучшена работа с быстрой загрузкой таблицы с полем типа BOOLEAN.
- Улучшена диагностика проблем при загрузке таблицы с AUTOINC-полем.
hrserver:
- Обеспечено быстрое подключение интерфейса после его отключения.
- Реализована передача информации о контрольных точках между серверами для всех случаев.
Документация:
Обновлены следующие файлы документации:
- Установка СУБД на платформе Win32.
- Установка СУБД на платформе типа UNIX, QNX.
- Запуск и останов СУБД на платформе Win32.
- Запуск и останов СУБД на платформе UNIX, QNX.