Обявен е релиз на SQLite 3.46, леко базирана система за управление на бази данни, представена под формата на библиотека, която може да бъде свързана. Кодът на SQLite се разпространява като обществено достояние, т.е. може да се използва без ограничения и безплатно за всякакви цели. Финансирането на разработчиците на SQLite се осъществява от специално създаден консорциум.
Основни промени:
- Добавена е възможност за използване на разделителя „_“ в числата за по-нагледно представяне на числовите литерали (например, 1_234_567).
- Добавена е SQL функция json_pretty() за генериране на по-четлив изход в JSON формат, форматиран с използване на отстъп.
- Разширени са възможностите на операцията „PRAGMA optimize“, която оптимизира базата данни и всички схеми за данни за постигане на най-добра производителност на заявките. Реализиран е автоматично прилаган лимит на времето за анализ на базата данни, изключващ твърде дълго време за обработка на големи бази. Добавена е нова битова маска „PRAGMA optimize(0x10000)“ за отделна проверка на обновленията във всички таблици. Осигурено е автоматично повторно анализиране на таблици, в които липсват записи sqlite_stat1.
- В SQL функцията strftime() е добавена поддръжка за замествания %G, %g, %U и %V.
- В SQL функциите за работа с дати и време са добавени нови модификатори ceiling и floor за управление на обработката на неясни дати, възникващи при операции по изместване на дати с определен брой месеци или години. Осигурено е игнориране на модификаторите utc и localtime, ако SQLite има информация, че времето вече е в представяне UTC или localtime.
- Направени са оптимизации в планировщика на заявките. За изразите INSERT, съдържащи хиляди стойности в секцията VALUES, по подразбиране е включена оптимизацията „VALUES-as-coroutine“, която позволява приблизително два пъти по-бързо обработване на подобни изрази и два пъти по-ниска консумация на памет. За заявки от вида „SELECT count(DISTINCT col) FROM …“ е разрешено прилагане на индекси, дори и размерът на записите в индекса да не е по-малък от този в таблицата. Подобрен е алгоритъмът за определяне на ситуации, при които аргументите на SQL функциите посочват константи. Осигурено е прилагане на оптимизация push-down за изрази WHERE, съдържащи несвързани подзапроси.
- Променена логика на обработка при препълване на стека — при откриване на недостиг на памет за стека парсерът сега се опитва да задели допълнителна памет от купа, вместо да изведе грешка „parser stack overflow“.
- В JSON е разрешено указването на управляващи символи в стринг литералите на JSON5. Променена е логиката на операторите „->“ и „->>“, когато в дясната част стринговият операнд съдържа само цифри (по аналогия с PostgreSQL, тези операнди сега се обработват като стринг).
- В стойността DEFAULT в колоните на таблиците е разрешено указването на големи шестнадесетични литерали.
Източник: opennet.ru
