SQLite 3.35 جو رليز، ھڪڙو ھلڪو وزن DBMS پلگ ان لائبريري جي طور تي ٺاھيو ويو آھي، شايع ڪيو ويو آھي. SQLite ڪوڊ عوامي ڊومين ۾ ورهايو ويو آھي، يعني. ڪنهن به مقصد لاءِ بغير پابندي ۽ مفت ۾ استعمال ڪري سگهجي ٿو. SQLite ڊولپرز لاءِ مالي مدد خاص طور تي ٺاھيل ڪنسورشيم پاران مهيا ڪئي وئي آھي، جنھن ۾ ڪمپنيون شامل آھن جهڙوڪ Adobe، Oracle، Mozilla، Bentley ۽ Bloomberg.
مکيه تبديليون:
- Добавлены встроенные математические функции (log2(), cos(), tg(), exp(), ln(), pow() и т.п.), которые можно использовать в SQL. Для включения встроенных функций требуется сборка с опцией «-DSQLITE_ENABLE_MATH_FUNCTIONS».
- Реализована поддержка выражения «ALTER TABLE DROP COLUMN» для удаления столбцов из таблицы и очистки ранее хранившихся в данном столбце данных.
- Расширена реализация операции UPSERT (добавить-или-модифицировать), позволяющей через выражения вида «INSERT … ON CONFLICT DO NOTHING/UPDATE» игнорировать ошибку или выполнить обновление вместо вставки в случае невозможности добавления данных через «INSERT» (например, если запись уже существует, вместо INSERT можно выполнить UPDATE). В новой версии разрешено указание нескольких блоков «ON CONFLICT», которые будут обработаны в порядке следования. В последнем блоке «ON CONFLICT» разрешено не указывать параметр определения конфликта для использования «DO UPDATE».
- В операциях DELETE, INSERT и UPDATE реализована поддержка выражения RETURNING, при помощи которого можно вывести содержимое удалённой, вставленной или изменённой записи. Например, выражение «insert into … returning id» вернёт идентификатор добавленной строки, а «update … set price = price * 1.10 returning price» вернёт изменённое значение price.
- Для обобщённых табличных выражений (Common Table Expression, CTE), позволяющих использовать временные именованные результирующие наборы, задаваемые при помощи оператора WITH, разрешён выбор режимов «MATERIALIZED» и «NOT MATERIALIZED». «MATERIALIZED» подразумевает кэширование заданного в представлении запроса в отдельной физической таблице с последующей выборкой данных из этой таблицы, а при «NOT MATERIALIZED» при каждом обращении к представлению будут осуществляться повторные запросы. Изначально в SQLite по умолчанию использовался режим «NOT MATERIALIZED», но теперь для CTE, используемых более одного раза, изменён на «MATERIALIZED».
- Сокращено потребление памяти при выполнении операции VACUUM для БД, включающих очень большие значения с типами TEXT или BLOB.
- Проведена работа по увеличению производительности оптимизатора и планировщика запросов:
- Добавлены оптимизации при использовании функций min и max с выражением «IN».
- Ускорено выполнение оператора EXISTS.
- Реализовано развёртывание подзапросов из выражений UNION ALL, используемых в составе JOIN.
- Задействован индекс для выражений IS NOT NULL.
- Обеспечено преобразование «x IS NULL» и «x IS NOT NULL» в FALSE или TRUE для столбцов, имеющих признак «NOT NULL».
- Пропущена проверка внешних ключей в UPDATE, если операция не меняет столбцов, связанных с внешним ключом.
- Разрешено перемещение частей блока WHERE в подзапросы, содержащие оконные функции, если эти части ограничены работой с константами и копиями выражений из блоков «PARTITION BY», используемых в оконных функциях.
- Изменения в интерфейсе командной строки:
- Добавлена команда «.filectrl data_version».
- В командах «.once» и «.output» добавлена поддержка передачи вывода в обработчик, вызываемый с использованием неименованных каналов («|»).
- В команду «.stats» добавлены аргументы «stmt» и «vmstep» для вывода статистики по выражениям и счётчиков виртуальной машины.
جو ذريعو: opennet.ru