L'azienda Oracle ha creato una nuova versione del database MySQL 9.2.0. Le build di MySQL Community Server 9.2.0 sono state preparate per tutte le principali distribuzioni Linux, FreeBSD, macOS e Windows. Nell'ambito del nuovo modello di rilascio introdotto nel 2023, MySQL 9.2 è stato assegnato ai rami "Innovation", a cui sarà assegnato anche il seguente significativo rilascio MySQL 9.3. I rami Innovation sono raccomandati per coloro che desiderano avere accesso anticipato a nuove funzionalità, vengono pubblicati ogni 3 mesi e sono supportati solo fino alla pubblicazione del successivo rilascio significativo (ad esempio, dopo l'emissione del ramo 9.2, il supporto per il ramo 9.1 cesserà). In estate è previsto di creare un rilascio LTS, raccomandato per le implementazioni che necessitano di prevedibilità e conservazione prolungata di un comportamento invariato. Subito dopo il ramo LTS verrà creato un nuovo ramo Innovation — MySQL 10.0.
Le principali novità in MySQL 9.2:
- Nel motore MLE (Multilingual Engine Component), che consente l'utilizzo di codice in lingue diverse da SQL nelle procedure e nelle funzioni memorizzate, è stata aggiunta la supporto per librerie riutilizzabili in JavaScript. Le funzioni da tali librerie possono essere chiamate da procedure memorizzate in JavaScript, ma devono essere esplicitamente contrassegnate come importabili con la parola chiave "export". Per gestire la connessione alle librerie JavaScript sono stati aggiunti nuovi comandi SQL "CREATE LIBRARY" e "DROP LIBRARY". Per visualizzare l'elenco delle librerie JavaScript disponibili, è stata aggiunta l'espressione "SHOW CREATE LIBRARY". Le informazioni sulle librerie JavaScript sono riportate nella tabella di sistema "LIBRARIES", mentre le procedure memorizzate che utilizzano tali librerie si trovano nella tabella "ROUTINE_LIBRARIES". Il collegamento a una libreria in una procedura memorizzata avviene specificando un elenco di librerie nell'espressione "USING".
- È stata aggiunta un'API per accedere a procedure memorizzate, funzioni e variabili di sessione dal codice JavaScript. Per richiamare le funzioni MySQL è stato aggiunto il metodo getFunction(), e per le procedure memorizzate il metodo getProcedure(), che restituiscono un oggetto Function di JavaScript, che può essere eseguito con argomenti. L'accesso alle variabili avviene direttamente come proprietà dell'oggetto Session di JavaScript. Inoltre, è stata aggiunta la possibilità di accedere direttamente alle funzioni incorporate rand(), sleep(), uuid() e isUUID(), che sono analoghe alle funzioni SQL omonime.
- Aggiunto l'API per gestire le transazioni da JavaScript, consentendo di eseguire la maggior parte delle espressioni SQL per lavorare con le transazioni, come «START TRANSACTION», «COMMIT», «ROLLBACK» e «SET AUTOCOMMIT».
- È stata aggiunta la possibilità di utilizzare i tipi MySQL ENUM e SET come argomenti per le procedure memorizzate scritte in JavaScript.
- Introdotta la privilegio CREATE_SPATIAL_REFERENCE_SYSTEM, che consente di gestire la possibilità di creare e cancellare definizioni di vincolo spaziale nei sistemi informativi geografici. La presenza di questo privilegio o del privilegio SUPER è ora obbligatoria per eseguire le espressioni «CREATE SPATIAL REFERENCE SYSTEM», «CREATE OR REPLACE SPATIAL REFERENCE SYSTEM» e «DROP SPATIAL REFERENCE SYSTEM».
- Nell'output «EXPLAIN FORMAT=JSON» è stata aggiunta l'informazione sulla versione del formato JSON. Per impostare la versione del formato JSON, è necessario utilizzare la variabile explain_json_format_version («SET explain_json_format_version=1|2»).
- Dichiarati obsoleti: l'espressione «FLUSH PRIVILEGES», i comandi «mysqladmin flush-privileges» e «mysqladmin reload», il plugin «version_tokens».
- Interrotta la supporto per la parola chiave BINLOG.
- Risolte 32 vulnerabilità, di cui 3 possono essere sfruttate da remoto. I due problemi più gravi hanno un livello di pericolo di 9.1 e sono legati a vulnerabilità nei componenti Kerberos e Curl. Le vulnerabilità meno gravi riguardano InnoDB, Thread Pooling, DDL, l'ottimizzatore, il parser e il sistema di autenticazione.
Fonte: opennet.ru
