Tvrtka Oracle je razvila novu granu sustava za upravljanje bazama podataka MySQL 9.3.0. Izgradnje MySQL Community Server 9.3.0 pripremljene su za sve glavne distribucije Linuxa, FreeBSD, macOS i Windows. U skladu s novim modelom izrade izdanja uvedenim 2023. godine, MySQL 9.3 je uvršten u grane „Innovation“. Grane Innovation su preporučene za one koji žele ranije dobiti pristup novim funkcionalnostima, objavljuju se svakih 3 mjeseca i podržavaju se samo do objave sljedećeg značajnog izdanja (na primjer, nakon pojave grane 9.3 prestaje podrška grani 9.2). Ljeti se planira formirati LTS-izdanje 9.4, preporučeno za implementacije koje zahtijevaju predvidljivost i dugotrajno zadržavanje nepromjenjivog ponašanja. Nakon LTS-grane bit će formirana nova grana Innovation — MySQL 10.0.
Glavne promjene u MySQL 9.3:
- U alat mysqldump dodana je opcija „—users“ za stvaranje logičkih ispravaka s informacijama o svim korisničkim računima, koje se ispisuju putem SQL izraza „CREATE USER“ i „GRANT“. Za umetanje izraza „DROP USER“ prije „CREATE USER“ predviđena je opcija „—add-drop-user“, dok su za selektivno uključivanje određenih korisnika u ispravku opcije „—include-user=user@host“ i „—exclude-user=user@host“, koje se mogu navesti više puta.
- U MLE (Multilingual Engine Component), koji omogućuje korištenje koda na jezicima različitim od SQL-a u pohranjenim procedurama i funkcijama, poboljšana je podrška za JavaScript. Za pohranjene procedure napisane na jeziku JavaScript implementiran je tip „DECIMAL“, koji se može koristiti za ulazne i vraćene argumente. Za sigurnost, MySQL tip DECIMAL se prema zadanim postavkama pretvara u JavaScript tip „String“, no ovo ponašanje se može prebrisati naredbom ‘SELECT mle_set_session_state(‘{„decimal_type“:”Number”}’)’, nakon čega će se koristiti JavaScript tip „Number“. Podržava se prevođenje u tip DECIMAL vrijednosti s JavaScript tipovima Boolean, Number, String i BigInt.
- U pohranjene procedure na JavaScript dodana je podrška za postavljanje parametara lokalizacije, korištenjem JavaScript API-ja Intl. Na primjer, za određivanje trenutne lokalizacije mogu se koristiti svojstva „Intl.DateTimeFormat().resolvedOptions().locale“, a za predefiniranje lokalizacije — metoda „toLocaleString().
- Proširene mogućnosti upravljanja JavaScript knjižnicama: za izmjenu popisa uvoznih knjižnica sada je moguće koristiti izraze „ALTER PROCEDURE” i „ALTER FUNCTION”. Dodana je mogućnost korištenja izraza „ALTER LIBRARY” za dodavanje, brisanje ili izmjenu SQL komentara u knjižnici. Za dobivanje informacija o knjižnici implementiran je izraz „SHOW LIBRARY STATUS”.
- Dodana podrška za dinamičko učitavanje JavaScript knjižnica. Za dinamičko uvoz knjižnice treba koristiti ključnu riječ „await”, na primjer „let module = await import(‘/db1/lib_${object_type}’)”.
- Proširene su optimizacije upita koji koriste kvantificirane operatore usporedbe. Osim podrške za operatore „=ANY” i „ALL”, u novoj verziji dodana je podrška za operatore „>ANY”, „>=ANY”, „<ANY”, „ALL”, „>=ALL”, „<ALL” i „<=ALL”.
- Uklonjen je plugin „version_tokens”, koji je ranije bio proglašen zastarjelim.
- Zabranjeno je postavljanje vrijednosti 0 u sistemsku varijablu replica_parallel_workers.
- Ispravljeno je 28 ranjivosti, od kojih se 26 može iskoristiti daljinski uz pristup za slanje upita bazi podataka. Šest najozbiljnijih problema ima razinu opasnosti 6.5 i povezana su s ranjivostima u InnoDB engineu, parseru i optimizatoru. Manje opasne ranjivosti zahvaćaju mysqldump, InnoDB, optimizator, DDL, UDF, parser i sustav replikacije.
Izvor: opennet.ru
