Oracle ha formato un nuovo ramo del DBMS MySQL 9.1.0. Le build di MySQL Community Server 9.1.0 sono preparate per tutte le principali distribuzioni di Linux, FreeBSD, macOS e Windows. Nell'ambito del modello di rilascio introdotto lo scorso anno, MySQL 9.1 è stato classificato come ramo 'Innovation', al quale sarà assegnato anche il successivo significante rilascio MySQL 9.2. I rami Innovation sono raccomandati per coloro che desiderano accedere in anticipo a nuove funzionalità, vengono pubblicati ogni 3 mesi e sono supportati solo fino alla pubblicazione del successivo importante rilascio (ad esempio, dopo l'emergere del ramo 9.1, il supporto per il ramo 9.0 cesserà). Nell'estate del prossimo anno è previsto un rilascio LTS, raccomandato per le implementazioni che necessitano di prevedibilità e di un lungo mantenimento di un comportamento invariato. Dopo il ramo LTS sarà formato un nuovo ramo Innovation — MySQL 10.0.
Principali novità in MySQL 9.1:
- Nell'operazione 'CREATE VIEW' è stata aggiunta la supporto per l'espressione 'IF NOT EXISTS', che consente di creare una vista solo se non esiste già una vista con il nome specificato, evitando di restituire un errore se la vista è già stata creata.
- Il caricamento dei trigger è stato interrotto durante le operazioni che comportano solo lettura. In precedenza, i trigger venivano caricati ad ogni accesso alla tabella, il che portava a un consumo di memoria elevato e a un carico sulla CPU in situazioni in cui i trigger non venivano utilizzati (ad esempio, durante l'esecuzione di query SELECT). In MySQL 9.1, il processamento e il caricamento dei trigger sono separati in due fasi: lettura dei metadati sul trigger e analisi+esecuzione del trigger. I dati ottenuti nella prima fase vengono conservati una sola volta e poi condivisi tra diverse istanze del trigger. L'analisi e l'esecuzione del trigger avvengono solo per espressioni che comportano modifiche ai dati. Inoltre, per ridurre il consumo di memoria, è stato implementato un passaggio dalla allocazione statica di buffer per la gestione degli errori nei trigger a una allocazione dinamica della memoria secondo necessità.
- L'output dell'operazione "EXPLAIN" è stato ampliato, mostrando ora informazioni sull'utilizzo della lettura multiintervallo (multi-range) e sull'applicazione della strategia di semiunione (semijoin), in cui durante le operazioni di JOIN vengono elaborate solo le righe di una tabella.
- È garantita l'esecuzione atomica delle operazioni "CREATE DATABASE" e "DROP DATABASE" per proteggere da guasti in caso di arresto anomalo o di errori a livello di file system durante l'esecuzione di queste operazioni. Ad esempio, in precedenza, un'interruzione anomala della "CREATE DATABASE" poteva generare una struttura di archiviazione del database incompleta e non funzionante, richiedendo un intervento manuale per la pulizia.
- Nelle stored procedure scritte in JavaScript è stata aggiunta la supporto per il tipo VECTOR. I dati del tipo specificato possono ora essere passati nei parametri di input e di output.
- È stata aggiunta la possibilità di autenticazione durante la connessione al DBMS utilizzando il protocollo OpenID Connect.
- Sono state rimosse 27 vulnerabilità, la più grave delle quali (CVE-2024-5535) ha ricevuto un livello di criticità elevato (9,1 su 10). La vulnerabilità può essere sfruttata da remoto senza autenticazione. Il problema è causato dalla lettura dei dati al di fuori dell'area di buffer allocata nella libreria OpenSSL e porta a un arresto anomalo o a una fuga di contenuto della memoria nella risposta dopo la connessione a server indicando parametri del protocollo non corretti.
Fonte: opennet.ru
