MYSQL BUG ?
David Janko
djanko na infoware.cz
Sobota Duben 1 23:02:00 CEST 2000
Zdravim vsechny,
vcera vecer jsem zjistil u mysql hroznou vec - pokud udelam select a
do WHERE dam sloupec = 'prazdne nebo bile znaky' tak mi vybere vsechny
zaznamy, kde v tomto sloupci jsou jakekoliv bile znaky nebo je tam
prazdny string !!! Pro logovani (chech user&password) je to hruza a
mozna nekde bezpecnostni dira jako prase ...
Zkraceny priklad:
create table t1 (
ID int4 AUTO_INCREMENT PRIMARY KEY,
User varchar(32)
)
;
insert into t1 values(NULL, '');
insert into t1 values(NULL, ' ');
select * from t1 where User = '';
+----+------+
| ID | User |
+----+------+
| 1 | |
| 2 | |
+----+------+
select * from t1 where User = ' ';
+----+------+
| ID | User |
+----+------+
| 1 | |
| 2 | |
+----+------+
Testovano na MYSQL ver. 3.22.22, 3.22.25, 3.22.27 vsude stejne,
kompilovano s charset latin2.
Zaujalo mne take trochu chovani fce STRCMP(), ale jeste jsem to poradne
neotestil ....
Je to BUG, nebo nejake priserne future like case-insenzitive '=' a
'LIKE' ??? Muze to nekdo testnout na MYSQL rady 3.23 ? Kdyby to bylo
jako zvlastni operator tak to pochopim, ale u ekvivalence ?!?
P.S.: muze mi nekdo rici, jak na analogicke tabulce udelam
case-senzitive vyber s '=' nebo 'LIKE' na varchar sloupec ?
Diiiky.
David Janko (chemik).
Další informace o konferenci Databases