Oracle ha lanciato una nuova versione del database MySQL 9.3.0. Le build di MySQL Community Server 9.3.0 sono pronte per tutte le principali distribuzioni di Linux, FreeBSD, macOS e Windows. Secondo il nuovo modello di rilascio introdotto nel 2023, MySQL 9.3 è classificato come una branch "Innovation". Le branch Innovation sono consigliate per chi desidera accedere in anteprima alle nuove funzionalità; vengono pubblicate ogni 3 mesi e supportate solo fino al rilascio della successiva versione principale (ad esempio, il supporto della branch 9.2 cessa dopo la pubblicazione della branch 9.3). Quest'estate è previsto il rilascio della versione LTS 9.4, raccomandata per le implementazioni che necessitano di prevedibilità e di un comportamento stabile nel tempo. Dopo la branch LTS sarà resa disponibile una nuova branch Innovation: MySQL 10.0.
Le principali novità in MySQL 9.3:
- Nell'utilità mysqldump è stata aggiunta l'opzione «—users» per creare dump logici con informazioni su tutti gli account, visualizzate tramite le istruzioni SQL «CREATE USER» e «GRANT». Per inserire l'istruzione «DROP USER» prima di «CREATE USER» è disponibile l'opzione «—add-drop-user», mentre per riflettere selettivamente nel dump utenti specifici ci sono le opzioni «—include-user=user@host» e «—exclude-user=user@host», che possono essere specificate più volte.
- Nel motore MLE (Multilingual Engine Component), che consente di utilizzare nei procedimenti memorizzati e nelle funzioni codice in linguaggi diversi da SQL, è stato migliorato il supporto per JavaScript. Per i procedimenti memorizzati in JavaScript è stato implementato il tipo «DECIMAL», utilizzabile per argomenti in entrata e in uscita. Per motivi di sicurezza, il tipo DECIMAL di MySQL viene convertito nel tipo «String» di JavaScript, ma questo comportamento può essere modificato con il comando ‘SELECT mle_set_session_state(‘{«decimal_type»:»Number»}’)’, dopo il quale sarà utilizzato il tipo «Number» di JavaScript. È supportata la conversione in tipo DECIMAL di valori con tipi JavaScript Boolean, Number, String e BigInt.
- Nelle procedure memorizzate in JavaScript è stata aggiunta la supporto per la definizione dei parametri di localizzazione utilizzando l'API JavaScript Intl. Ad esempio, per determinare la locale corrente, si possono usare le proprietà «Intl.DateTimeFormat().resolvedOptions().locale», mentre per sovrascrivere la locale si utilizza il metodo «toLocaleString()».
- Sono state ampliate le funzionalità per la gestione delle librerie JavaScript: per modificare l'elenco delle librerie importate ora si possono utilizzare le espressioni «ALTER PROCEDURE» e «ALTER FUNCTION». È stata aggiunta la possibilità di usare l'espressione «ALTER LIBRARY» per aggiungere, rimuovere o modificare un commento SQL alla libreria. Per ottenere informazioni sulla libreria è stata implementata l'espressione «SHOW LIBRARY STATUS».
- È stata aggiunta la supporto per il caricamento dinamico delle librerie JavaScript. Per importare dinamicamente una libreria, è necessario utilizzare la parola chiave «await», ad esempio «let module = await import(‘/db1/lib_${object_type}’)».
- Sono state ampliate le ottimizzazioni delle query che utilizzano operatori di confronto quantificato. Oltre al supporto per gli operatori «=ANY» e «ALL», nella nuova versione è stata aggiunta la supporto per gli operatori «>ANY», «>=ANY», «<ANY», «ALL», «>=ALL», «<ALL» e «<=ALL».
- Il plugin «version_tokens» è stato rimosso, precedentemente dichiarato obsoleto.
- È vietato impostare il valore 0 nella variabile di sistema replica_parallel_workers.
- Sono state risolte 28 vulnerabilità, di cui 26 possono essere sfruttate da remoto con accesso per inviare richieste al DBMS. Sei delle più gravi problematiche hanno un livello di gravità di 6.5 e sono correlate a vulnerabilità nel motore InnoDB, nel parser e nell'ottimizzatore. Le vulnerabilità meno gravi interessano mysqldump, InnoDB, l'ottimizzatore, DDL, UDF, parser e il sistema di replica.
Fonte: opennet.ru
