Le 9 avril, la version 3.53.0 de la base de données embarquée multiplateforme a été publiée. SQLite. Le code du projet est écrit en C et est distribué comme domaine public.
Modifications :
- Correction d'un bogue de corruption de la base de données WAL-reset. Voir la news précédente SQLite 3.51.3 avec correction d'un possible endommagement de la base de données en mode WAL.
- Ajout d'une bibliothĂšque de mise en forme des rĂ©sultats des requĂȘtes SQL Query Result Formatter (QRF) pour assurer une lecture aisĂ©e Ă l'Ă©cran avec une police Ă largeur fixe.
- Méthode ajoutée format sur interface TCL pour accéder à QRF depuis TCL.
- QRF est maintenant utilisĂ© dans l'outil console sqlite pour le formatage des rĂ©sultats des requĂȘtes, ce qui amĂ©liore leur affichage.
- Nouvelles fonctionnalités du langage SQL :
- Améliorations des capacités de la commande ALTER TABLE pour permettre l'ajout et la suppression de contraintes NOT NULL et CHECK.
- Opérateur REINDEX EXPRESSIONS effectue la réindexation des index d'expressions. Utile pour la récupération des index d'expressions obsolÚtes..
- Maintenant les déclencheurs TEMP peuvent modifier et/ou interroger des données provenant des tables du schéma principal.
- AmĂ©lioration de la commande VACUUM INTO: lorsqu'un nom de fichier au format URI est utilisĂ© comme adresse de destination, contenant le paramĂštre de requĂȘte reserve=N (oĂč N est un nombre entre 0 et 255), le volume de rĂ©servation pour la copie de la base de donnĂ©es créée est dĂ©fini sur N.
- Nouvelles fonctions SQL ajoutées :
- Mises Ă jour dans l'outil console:
- Améliorations significatives de la commande .mode.
- Grùce à pour l'extension QRF amélioration de la mise en forme des résultats. Par exemple, les nombres sont désormais alignés à droite par défaut en mode de sortie tabulaire..
- Par dĂ©faut, QRF est maintenant utilisĂ© lors de l'utilisation interactive de l'outil console pour afficher les rĂ©sultats des requĂȘtes dans des blocs formĂ©s Ă l'aide de caractĂšres Unicode de dessin de blocs, ce qui a amĂ©liorĂ© la lisibilitĂ©. Le format de sortie obsolĂšte est utilisĂ© lors de l'exĂ©cution par lots pour garantir la compatibilitĂ©.
- Les points virgules simples (non entourés de guillemets) à la fin des commandes avec un point sont ignorés sans avertissement. C'est une possible incompatibilité !
- Les commandes .testcase et .check ont été corrigées. Elles fonctionnent maintenant correctement et sont utilisées dans les scripts faisant partie de l'ensemble de tests standard de SQLite inclus dans les sources.
- Les arguments de ligne de commande correspondant aux modÚles *.sql ou *.txt et représentant des noms de fichiers non vides sont lus et interprétés comme des scripts contenant des opérateurs SQL et/ou des [commandes à point]((https://sqlite.org/cli.html#dotcmd).
- DĂ©sormais, l'argument de la commande .timer peut ĂȘtre dĂ©fini sur once pour que le minuteur ne dĂ©clenche que lors de l'exĂ©cution de la prochaine requĂȘte SQL.
- Le nouveau paramĂštre âtimeout S de la commande .progress interrompt l'exĂ©cution des requĂȘtes SQL aprĂšs S secondes.
- La commande .indexes a été modifiée pour que l'argument PATTERN corresponde désormais au nom de l'index, et non au nom de la table indexée (ce qui rend l'argument PATTERN véritablement utile). De plus, plusieurs nouvelles options ont été ajoutées à la commande .indexes.
- Améliorations de l'API C :
- sqlite3_str_truncate()
- sqlite3_str_free()
- sqlite3_carray_bind_v2()
- Dans la fonction sqlite3_prepare_v3() une option a été ajoutée SQLITE_PREPARE_FROM_DDL, qui permet aux implémentations de tables virtuelles de préparer en toute sécurité des opérateurs SQL dérivés du schéma de base de données.
- Une constante a Ă©tĂ© ajoutĂ©e SQLITE_UTF8_ZT, qui peut ĂȘtre utilisĂ©e comme paramĂštre d'encodage dans les fonctions sqlite3_result_text64() ou sqlite3_bind_text64() pour indiquer que la valeur est codĂ©e en UTF-8 et se termine par un zĂ©ro.
- Dans la fonction sqlite3_limit() une option a été ajoutée SQLITE_LIMIT_PARSER_DEPTH.
- Dans la fonction sqlite3_db_config() une option a été ajoutée SQLITE_DBCONFIG_FP_DIGITS. Voir également la section 9b ci-dessous.
- AmĂ©liorations du planificateur de requĂȘtes :
- Pour EXCEPT, INTERSECT et UNION, l'algorithme de tri et de fusion est toujours utilisé, car il fonctionne presque toujours plus rapidement que l'utilisation de tables de hachage.
- Améliorations du mécanisme de sélection de l'ordre des jointures lors de l'exécution de grandes jointures multi-tiers dans un schéma en étoile.
- Optimisation amĂ©liorĂ©e de la transformation d'EXISTS en JOIN, de sorte que les conditions JOIN insĂ©rĂ©es ne doivent pas nĂ©cessairement ĂȘtre dans des boucles internes, Ă condition que toutes les dĂ©pendances pour les boucles de transformation d'EXISTS en JOIN soient dans des boucles externes.
- Optimisation améliorée de omit-noop-join, permettant d'omettre une chaßne de jointures qui n'affectent pas le résultat.
- Optimisation des requĂȘtes utilisant GROUP BY e1 ORDER BY e2, oĂč e1 et e2 sont identiques, Ă l'exception de l'ordre de tri ASC/DESC, Ă l'aide d'un seul index.
- Optimisation de l'opĂ©rateur DISTINCT dans les tables virtuelles dans les cas oĂč le jeu de rĂ©sultats de la requĂȘte ne correspond pas entiĂšrement Ă la condition ORDER BY.
- Dans extension de session des nouvelles interfaces ont été ajoutées, permettant à l'application d'ajouter des modifications une par une dans l'objet sqlite3_changegroup :
- AmĂ©liorations dans la conversion entre les nombres Ă virgule flottante â texte.
- Le code a été entiÚrement réécrit pour améliorer les performances.
- L'arrondi se fait dĂ©sormais par dĂ©faut Ă 17 chiffres significatifs au lieu de 15, comme c'Ă©tait le cas dans toutes les versions prĂ©cĂ©dentes. Si nĂ©cessaire, cette valeur peut ĂȘtre modifiĂ©e en utilisant la fonction sqlite3_db_config avec l'option SQLITE_DBCONFIG_FP_DIGITS (voir point 6g ci-dessus).
- Ajout de la possibilité récupération automatique de l'index pour résoudre le problÚme des index d'expressions obsolÚtes..
- Dans l'utilitaire console sqlite3_rsync une option -p|âport a Ă©tĂ© ajoutĂ©e.
- Le support de Windows RT.
- JavaScript/WASM
- VFS opfs-wl a été ajoutée, fonctionnellement identique à opfs, mais utilisant pour les verrouillages Web Locks, permettant une distribution des verrouillages plus équitable qu'avec le protocole opfs. opfs-wl requiert la fonction Atomics.waitAsync(), donc des versions plus récentes des navigateurs sont nécessaires pour son fonctionnement par rapport à opfs.
Source : linux.org.ru
