Megjelent a MariaDB 11.8.5
A MariaDB projekt bejelentette a MariaDB 11.8.5, kritikus hibajavítást tartalmazó kiadását, melyre érdemes a lehető leghamarabb frissíteni MariaDB 11.8.4-ről.
A MariaDB projekt bejelentette a MariaDB 11.8.5, kritikus hibajavítást tartalmazó kiadását, melyre érdemes a lehető leghamarabb frissíteni MariaDB 11.8.4-ről.
Az említett kritikus hiba a MariaDB legutóbbi, 11.8.4-es kiadásában mutatkozott be. A hiba a MyISAM és Aria motorokat használó táblákat érinti, az InnoDB-t nem. A hiba a DELETE parancsban van. Ha a DELETE utasítás olyan WHERE klauzulát tartalmaz, ami egyenlőséget vizsgál egy olyan oszlopon ami indexált, de a benne lévő adatok nem egyediek, akkor amennyiben a végrehajtási terv „range” műveletet tartalmaz, nem minden adat kerül törlésre.
Egy kicsit macerásan hangzik, lássuk gyakorlatban. A szemléltetéshez a hibát javító commit-ban lévő teszteket használtam
Hozzuk létre a minta táblát és adjuk hozzá a teszt adatokat:
create table t1 (id varchar(32), d1 char, key (id), key (d1)) engine=myisam;
insert into t1 values ('1','A'), ('1','B'), ('1','C'), ('2','D'), ('2','E');
Tehát van 5 sorunk:
select count(*) from t1;
5
Kérdezzük le a végrehajtási tervet:
explain delete from t1 where id = '1';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range id id 131 NULL 3 Using where
„Range” a művetet típusa
Töröljünk:
delete from t1 where id = '1';
Ha minden rendben van, akkor csak annak a két sornak kellene megmaradnia, aminek az id oszlopában "2" van.
A hiba miatt viszont előfordul, hogy olyan sorok is megmaradnak, aminek az id oszlopa 1-et tartalmaz.
MariaDB 11.8.5
- Kiadási megjegyzések: https://mariadb.com/docs/release-notes/community-server/11.8/11.8.5
- Letöltés: https://downloads.mariadb.org/mariadb/11.8.5/
- 11.8.x újdonságai: https://mariadb.com/docs/release-notes/community-server/11.8/what-is-mariadb-118