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