SQLite 3.30.0 est disponible et ajoute un support pour la clause FILTER sur les fonctions d'agrégation
ainsi que d’autres fonctionnalités

SQLite est un moteur de base de données relationnelle léger accessible par le langage SQL. Contrairement aux serveurs de bases de données traditionnels, comme MySQL ou PostgreSQL, sa particularité est de ne pas reproduire le schéma habituel client-serveur, mais d'être directement intégrée aux programmes. L'intégralité de la base de données (déclarations, tables, index et données) est en effet stockée dans un fichier indépendant de la plateforme. L’équipe de développement de SQLite vient publier la version 3.30.0 du moteur. Les versions 3.28.0 et 3.29.0 de SQLite remontent respectivement en avril et juillet dernier.

SQLite est une bibliothèque de logiciels qui implémente un moteur de base de données SQL transactionnel autonome, sans serveur, sans configuration. Grâce à son extrême légèreté, entre autres, il est utilisé dans de nombreux logiciels grand public, et est également très populaire sur les systèmes embarqués, notamment sur la plupart des smartphones modernes. Sa dernière version, la version 3.30.0, a été publiée dans la semaine passée avec plusieurs nouveautés. En tout, cette nouvelle version de SQLite apporte douze nouvelles fonctionnalités au moteur.

SQLite 3.30.0 ajoute désormais un support pour la clause FILTER sur les fonctions d'agrégation. Pour rappel, les fonctions d’agrégation dans le langage SQL permettent d’effectuer des opérations statistiques sur un ensemble d’enregistrement. Étant donné que ces fonctions s’appliquent à plusieurs lignes en même temps, elles permettent des opérations qui servent à récupérer l’enregistrement le plus petit « min() », le plus grand « max() » ou bien encore de déterminer la valeur moyenne « avg() » sur plusieurs enregistrements.

Nom : z1.png
Affichages : 3458
Taille : 10,7 Ko

Dans toute fonction d'agrégation prenant un seul argument, cet argument peut être précédé du mot-clé DISTINCT. Dans ce cas, les éléments en double sont filtrés avant d’être transmis à la fonction d’agrégation. Par exemple, la fonction count(DISTINCT X) renverra le nombre de valeurs distinctes de la colonne X au lieu du nombre total de valeurs non nulles de la colonne X. À partir de la version 3.30.0 de SQLite, si une clause FILTER est fournie, seules les lignes pour lesquelles « expr » est true sont incluses dans l'agrégat.

La fonction count(X) renvoie le nombre de fois que X n'est pas NULL dans un groupe. La fonction count(*) (sans arguments) retourne le nombre total de lignes du groupe. Dans count(expr), expr est l'abréviation de expression, elle-même l'abréviation de « un bloc valide de SQL qui donne une valeur unique pour cette ligne lors de l'évaluation ». Ainsi, expr peut être une constante, une colonne, le résultat d'un appel de fonction, une affectation de variable, une instruction de casse, etc. La note de version de version de SQLite 3.30.0 en dit plus à ce sujet.

En outre, SQLite 3.30.0 ajoute aussi un support pour les syntaxes NULLS FIRST et NULLS LAST dans les clauses ORDER BY. Il y a également les ajouts de : la méthode de configuration de l'interface TCL afin de pouvoir désactiver SQLITE_DBCONFIG_ENABLE_VIEW et de contrôler d'autres options sqlite3_db_config() de TCL, l'option SQLITE_DBCONFIG_ENABLE_VIEW pour sqlite3_db_config(), l'interface sqlite3_drop_modules(), permettant aux applications de désactiver les tables virtuelles chargées automatiquement dont elles n'ont pas besoin.

D’autres ajouts, améliorations, ainsi que certaines modifications sont à noter dans cette nouvelle version de SQLite. Voici en résumé la liste des nouveautés apportées dans SQLite 3.30.0 :

  • ajout d'un support pour la clause FILTER sur les fonctions d'agrégation ;
  • ajout du support pour les syntaxes NULLS FIRST et NULLS LAST dans les clauses ORDER BY ;
  • les pragmas index_info et index_xinfo ont été améliorés pour fournir des informations sur la représentation sur disque des tables WITHOUT ROWID ;
  • ajout de l'interface sqlite3_drop_modules(), permettant aux applications de désactiver les tables virtuelles chargées automatiquement dont elles n'ont pas besoin ;
  • des améliorations sont apportées à la commande « .recover dot-command » dans la CLI afin qu'elle récupère davantage de contenu à partir de fichiers de base de données corrompus ;
  • amélioration de l'extension RBU pour prendre en charge les index sur les expressions ;
  • modification de l'analyseur de schéma afin qu'il génère une erreur si l'une des colonnes : type, name et tbl_name de la table sqlite_master a été corrompue et que la connexion à la base de données n'est pas en mode writeable_schema ;
  • les commandes PRAGMA function_list, PRAGMA module_list et PRAGMA pragma_list sont désormais activées dans toutes les versions par défaut. Vous pouvez les désactiver à l'aide de la commande -DSQLITE_OMIT_INTROSPECTION_PRAGMAS ;
  • ajout de l'option SQLITE_DBCONFIG_ENABLE_VIEW pour sqlite3_db_config() ;
  • ajout de la méthode de configuration de l'interface TCL afin de pouvoir désactiver SQLITE_DBCONFIG_ENABLE_VIEW et de contrôler d'autres options sqlite3_db_config() de TCL ;
  • ajout de l'indicateur SQLITE_DIRECTONLY pour les fonctions SQL définies par l'application afin d'empêcher leur utilisation dans des déclencheurs et des vues ;
  • l'option de compilation SQLITE_ENABLE_STAT3 héritée est désormais no-op.


Source : SQLite

Et vous ?

Que pensez-vous des nouvelles fonctionnalités de SQLite 3.30.0 ?

Voir aussi

La version 3.28 de SQLite est disponible avec de nouvelles fonctionnalités et des améliorations de performances, notamment pour les fonctions Window

SQLite 3.25 est disponible, le moteur de base de données léger apporte le support des fonctions Window, un meilleur optimiseur de requêtes et plus

Pascal : SQLite sous Windows, cryptage à la volée, un billet de Tourlourou