La version 3.35 de SQLite a Ă©tĂ© publiĂ©e, une base de donnĂ©es lĂ©gĂšre sous forme de bibliothĂšque dynamique. Le code de SQLite est distribuĂ© dans le domaine public, câest-Ă -dire qu'il peut ĂȘtre utilisĂ© sans restrictions et gratuitement Ă toutes fins. Le soutien financier des dĂ©veloppeurs de SQLite est assurĂ© par un consortium spĂ©cialement créé, composĂ© dâentreprises telles quâAdobe, Oracle, Mozilla, Bentley et Bloomberg.
Principales modifications :
- Des fonctions mathĂ©matiques intĂ©grĂ©es (log2(), cos(), tg(), exp(), ln(), pow(), etc.) ont Ă©tĂ© ajoutĂ©es, pouvant ĂȘtre utilisĂ©es dans SQL. Pour activer ces fonctions intĂ©grĂ©es, une compilation avec lâoption « -DSQLITE_ENABLE_MATH_FUNCTIONS » est requise.
- La prise en charge de l'expression « ALTER TABLE DROP COLUMN » a Ă©tĂ© implĂ©mentĂ©e pour la suppression de colonnes dâune table et la suppression des donnĂ©es prĂ©cĂ©demment stockĂ©es dans cette colonne.
- LâimplĂ©mentation de lâopĂ©ration UPSERT (ajouter ou modifier) a Ă©tĂ© Ă©tendue, permettant, Ă travers des expressions telles que « INSERT ⊠ON CONFLICT DO NOTHING/UPDATE », dâignorer une erreur ou de mettre Ă jour au lieu dâinsĂ©rer en cas de dĂ©faut d'ajout de donnĂ©es via « INSERT » (par exemple, si lâenregistrement existe dĂ©jĂ , on peut effectuer un UPDATE au lieu de INSERT). Dans la nouvelle version, il est autorisĂ© de spĂ©cifier plusieurs blocs « ON CONFLICT », qui seront traitĂ©s dans lâordre dâapparition. Dans le dernier bloc « ON CONFLICT », il est permis de ne pas indiquer le paramĂštre de dĂ©finition de conflit pour utiliser « DO UPDATE ».
- Pour les opĂ©rations DELETE, INSERT et UPDATE, la prise en charge de l'expression RETURNING a Ă©tĂ© ajoutĂ©e, permettant d'afficher le contenu de l'enregistrement supprimĂ©, insĂ©rĂ© ou modifiĂ©. Par exemple, lâexpression « insert into ⊠returning id » renverra lâidentifiant de la ligne ajoutĂ©e, tandis que « update ⊠set price = price * 1.10 returning price » renverra la valeur modifiĂ©e du prix.
- Pour les expressions de table gĂ©nĂ©rales (Common Table Expression, CTE), qui permettent dâutiliser des ensembles de rĂ©sultats nommĂ©s temporaires dĂ©finis par lâopĂ©rateur WITH, le choix entre les modes « MATERIALIZED » et « NOT MATERIALIZED » est maintenant autorisĂ©. « MATERIALIZED » implique la mise en cache de la requĂȘte dĂ©finie dans la vue dans une table physique distincte, suivie de l'extraction des donnĂ©es de cette table, tandis qu'avec « NOT MATERIALIZED », chaque accĂšs Ă la vue entraĂźnera des requĂȘtes rĂ©pĂ©tĂ©es. Au dĂ©part, SQLite utilisait par dĂ©faut le mode « NOT MATERIALIZED », mais dĂ©sormais pour les CTE utilisĂ©s plusieurs fois, il a Ă©tĂ© modifiĂ© en « MATERIALIZED ».
- Réduction de la consommation de mémoire lors de l'exécution de l'opération VACUUM pour les bases de données contenant de trÚs grandes valeurs avec les types TEXT ou BLOB.
- Des efforts ont Ă©tĂ© dĂ©ployĂ©s pour amĂ©liorer les performances de l'optimiseur et du planificateur de requĂȘtes :
- Des optimisations ont été ajoutées lors de l'utilisation des fonctions min et max avec l'expression « IN ».
- L'exécution de l'opérateur EXISTS a été accélérée.
- La mise en Ćuvre des sous-requĂȘtes Ă partir des expressions UNION ALL utilisĂ©es dans le cadre des JOIN a Ă©tĂ© rĂ©alisĂ©e.
- Un index a été utilisé pour les expressions IS NOT NULL.
- La conversion de « x IS NULL » et « x IS NOT NULL » en FALSE ou TRUE a été assurée pour les colonnes ayant la caractéristique « NOT NULL ».
- La vérification des clés étrangÚres a été omise dans UPDATE si l'opération ne modifie pas les colonnes liées à la clé étrangÚre.
- Le dĂ©placement de parties du bloc WHERE dans des sous-requĂȘtes contenant des fonctions de fenĂȘtres a Ă©tĂ© autorisĂ©, si ces parties sont limitĂ©es Ă travailler avec des constantes et des copies d'expressions des blocs « PARTITION BY » utilisĂ©s dans les fonctions de fenĂȘtres.
- Modifications de l'interface de ligne de commande :
- La commande « .filectrl data_version » a été ajoutée.
- Les commandes « .once » et « .output » ont été mises à jour pour supporter la transmission de la sortie à un gestionnaire appelé via des canaux anonymes (« | »).
- Les arguments « stmt » et « vmstep » ont été ajoutés à la commande « .stats » pour afficher des statistiques sur les expressions et les compteurs de la machine virtuelle.
Source : opennet.ru
