Oracle a créé une nouvelle branche de la base de données MySQL 9.2.0. Les builds de MySQL Community Server 9.2.0 sont disponibles pour toutes les principales distributions Linux, FreeBSD, macOS et Windows. Dans le cadre du nouveau modèle de version introduit en 2023, MySQL 9.2 est classé dans les branches « Innovation », qui comprendront également la prochaine version majeure MySQL 9.3. Les branches Innovation sont recommandées pour ceux qui souhaitent accéder plus tôt à de nouvelles fonctionnalités, elles sont publiées tous les trois mois et ne sont prises en charge que jusqu'à la publication de la prochaine version majeure (par exemple, après la sortie de la branche 9.2, la prise en charge de la branche 9.1 a été interrompue). Un LTS est prévu pour l'été, recommandé pour les déploiements nécessitant prévisibilité et stabilité de comportement. Après la branche LTS, une nouvelle branche Innovation sera formée — MySQL 10.0.
Principales modifications dans MySQL 9.2 :
- Le moteur MLE (Multilingual Engine Component), qui permet d'utiliser des langages autres que SQL dans les procédures stockées et les fonctions, a ajouté le support de bibliothèques réutilisables en JavaScript. Les fonctions de ces bibliothèques peuvent être appelées depuis des procédures stockées en JavaScript, mais doivent être explicitement marquées comme importées avec le mot-clé « export ». Pour gérer la connexion aux bibliothèques JavaScript, de nouvelles expressions SQL « CREATE LIBRARY » et « DROP LIBRARY » ont été ajoutées. Pour voir la liste des bibliothèques JavaScript disponibles, l'expression « SHOW CREATE LIBRARY » a été ajoutée. Les informations sur les bibliothèques JavaScript sont reflétées dans la table système « LIBRARIES », et sur les procédures stockées utilisant ces bibliothèques, dans la table « ROUTINE_LIBRARIES ». La connexion d'une bibliothèque dans une procédure stockée se fait par la spécification d'une liste de bibliothèques dans l'expression « USING ».
- Une API a été ajoutée pour accéder aux procédures stockées, fonctions et variables de session depuis du code JavaScript. Pour appeler les fonctions MySQL, la méthode getFunction() a été ajoutée, et pour les procédures stockées, la méthode getProcedure(), qui retournent un objet Function JavaScript qui peut être exécuté avec des arguments. L'accès aux variables se fait directement comme aux propriétés de l'objet JavaScript Session. De plus, il est désormais possible d'accéder directement aux fonctions intégrées rand(), sleep(), uuid() et isUUID(), qui sont similaires aux fonctions SQL éponymes.
- Ajout de l'API pour gérer les transactions depuis JavaScript, permettant d'effectuer la plupart des actions SQL liées aux transactions, telles que «START TRANSACTION», «COMMIT», «ROLLBACK» et «SET AUTOCOMMIT».
- Ajout de la possibilité d'utiliser les types MySQL ENUM et SET dans les arguments de procédures stockées écrites en JavaScript.
- Ajout du privilège CREATE_SPATIAL_REFERENCE_SYSTEM, qui permet de gérer la création et la suppression de définitions de référence spatiale pour les systèmes d'information géographique. La possession de ce privilège ou du privilège SUPER est désormais obligatoire pour exécuter les expressions «CREATE SPATIAL REFERENCE SYSTEM», «CREATE OR REPLACE SPATIAL REFERENCE SYSTEM» et «DROP SPATIAL REFERENCE SYSTEM».
- Des informations sur la version du format JSON ont été ajoutées à la sortie «EXPLAIN FORMAT=JSON». Pour définir la version du format JSON, utilisez la variable explain_json_format_version («SET explain_json_format_version=1|2»).
- Les expressions «FLUSH PRIVILEGES», les commandes «mysqladmin flush-privileges» et «mysqladmin reload», ainsi que le plugin «version_tokens» ont été déclarés obsolètes.
- Le support du mot-clé BINLOG a été abandonné.
- 32 vulnérabilités ont été corrigées, dont 3 peuvent être exploitées à distance. Les deux problèmes les plus graves ont un niveau de dangerosité de 9,1 et sont liés à des vulnérabilités dans les composants Kerberos et Curl. Les vulnérabilités moins graves concernent InnoDB, Thread Pooling, DDL, l'optimiseur, le parseur et le système d'authentification.
Source : opennet.ru
