La version 3.51 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 à des fins diverses. Le soutien financier aux développeurs de SQLite est assuré par un consortium spécialement créé.
Principales modifications :
- De nouvelles fonctions JSON jsonb_each() et jsonb_tree() ont été ajoutées, qui diffèrent des fonctions précédemment disponibles json_each() et json_tree() en ce qu'elles retournent des valeurs JSONB pour des données de type tableau ou objet.
- Le code des extensions carray et percentile a été transféré vers le fichier de base «sqlite3.c» contenant le code intégré de SQLite. Par défaut, ces fonctionnalités sont désactivées et nécessitent l'indication des paramètres «-DSQLITE_ENABLE_CARRAY» et «-DSQLITE_ENABLE_PERCENTILE» lors de la compilation.
- L'interface pour utiliser SQLite dans des scripts Tcl a été améliorée. Un nouveau drapeau «-asdict» a été ajouté à la commande «eval» pour renvoyer des chaînes en utilisant le type «dict» au lieu de «array». La possibilité d'interrompre des fonctions utilisateur pour retourner une valeur NULL a également été ajoutée.
- Modifications de l'interface de ligne de commande :
- La précision de la commande «.timer» a été augmentée à la microseconde ;
- Le formatage «box» et «column» prend désormais en charge les caractères à largeur double ;
- La commande «.imposter» peut désormais fournir des tables imposteurs en mode lecture seule (permettant d'accéder aux données d'un index comme à une table), fonctionnant avec l'opération VACUUM et ne nécessitant pas d'être lancée avec le drapeau «—unsafe-testing» ;
- Une option «—ifexists» a été ajoutée au utilitaire sqlite et à la commande «.open».
- La largeur maximale de ligne spécifiée par la commande «.width» est limitée à 30000 caractères.
- Des optimisations de performance ont été apportées :
- La charge du CPU lors de la validation des transactions à accès en lecture a été réduite ;
- L'optimisation des opérations de jointure (JOIN) a été améliorée pour ne pas retourner de lignes lorsque une ou plusieurs tables ne contiennent pas de lignes ;
- L'exécution de sous-requêtes scalaires n'impactant pas le résultat a été exclue ;
- Les fonctions de fenêtre sont maintenant plus rapides dans les requêtes avec l'expression «BETWEEN 😡 FOLLOWING AND :y FOLLOWING» et une valeur «:y» très élevée.
- La pragma «PRAGMA wal_checkpoint=NOOP» et la fonction API sqlite3_wal_checkpoint() pour valider les changements dans le journal WAL ont été ajoutées.
- Les fonctions sqlite3_set_errmsg() et sqlite3_db_status64() ont été ajoutées à l'API.
- Dans la version JavaScript/WASM de SQLite, un support pour la compilation en vue WebAssembly avec des pointeurs 64 bits a été mis en œuvre.
- La résistance aux dommages de la base de données dans les applications utilisant des verrouillages POSIX via l'appel close() a été améliorée.
- Le support de la plateforme VxWorks a été amélioré.
Source : opennet.ru
