Loading myisam/mi_key.c +3 −0 Original line number Diff line number Diff line Loading @@ -217,7 +217,10 @@ uint _mi_pack_key(register MI_INFO *info, uint keynr, uchar *key, uchar *old, { k_length-=length; if (keyseg->flag & (HA_VAR_LENGTH | HA_BLOB_PART)) { old+= 2; k_length-=2; /* Skip length */ } continue; /* Found NULL */ } } Loading mysql-test/r/myisam.result +18 −0 Original line number Diff line number Diff line Loading @@ -702,3 +702,21 @@ t1 1 a 2 b A 0 NULL NULL YES BTREE t1 1 a 3 c A 0 NULL NULL YES BTREE t1 1 a 4 d A 0 NULL NULL YES BTREE set myisam_stats_method=DEFAULT; drop table t1; create table t1( cip INT NOT NULL, time TIME NOT NULL, score INT NOT NULL DEFAULT 0, bob TINYBLOB ); insert into t1 (cip, time) VALUES (1, '00:01'), (2, '00:02'), (3,'00:03'); insert into t1 (cip, bob, time) VALUES (4, 'a', '00:04'), (5, 'b', '00:05'), (6, 'c', '00:06'); select * from t1 where bob is null and cip=1; cip time score bob 1 00:01:00 0 NULL create index bug on t1 (bob(22), cip, time); select * from t1 where bob is null and cip=1; cip time score bob 1 00:01:00 0 NULL drop table t1; mysql-test/t/myisam.test +18 −0 Original line number Diff line number Diff line Loading @@ -656,4 +656,22 @@ analyze table t1; show index from t1; set myisam_stats_method=DEFAULT; drop table t1; # BUG#13814 - key value packed incorrectly for TINYBLOBs create table t1( cip INT NOT NULL, time TIME NOT NULL, score INT NOT NULL DEFAULT 0, bob TINYBLOB ); insert into t1 (cip, time) VALUES (1, '00:01'), (2, '00:02'), (3,'00:03'); insert into t1 (cip, bob, time) VALUES (4, 'a', '00:04'), (5, 'b', '00:05'), (6, 'c', '00:06'); select * from t1 where bob is null and cip=1; create index bug on t1 (bob(22), cip, time); select * from t1 where bob is null and cip=1; drop table t1; # End of 4.1 tests Loading
myisam/mi_key.c +3 −0 Original line number Diff line number Diff line Loading @@ -217,7 +217,10 @@ uint _mi_pack_key(register MI_INFO *info, uint keynr, uchar *key, uchar *old, { k_length-=length; if (keyseg->flag & (HA_VAR_LENGTH | HA_BLOB_PART)) { old+= 2; k_length-=2; /* Skip length */ } continue; /* Found NULL */ } } Loading
mysql-test/r/myisam.result +18 −0 Original line number Diff line number Diff line Loading @@ -702,3 +702,21 @@ t1 1 a 2 b A 0 NULL NULL YES BTREE t1 1 a 3 c A 0 NULL NULL YES BTREE t1 1 a 4 d A 0 NULL NULL YES BTREE set myisam_stats_method=DEFAULT; drop table t1; create table t1( cip INT NOT NULL, time TIME NOT NULL, score INT NOT NULL DEFAULT 0, bob TINYBLOB ); insert into t1 (cip, time) VALUES (1, '00:01'), (2, '00:02'), (3,'00:03'); insert into t1 (cip, bob, time) VALUES (4, 'a', '00:04'), (5, 'b', '00:05'), (6, 'c', '00:06'); select * from t1 where bob is null and cip=1; cip time score bob 1 00:01:00 0 NULL create index bug on t1 (bob(22), cip, time); select * from t1 where bob is null and cip=1; cip time score bob 1 00:01:00 0 NULL drop table t1;
mysql-test/t/myisam.test +18 −0 Original line number Diff line number Diff line Loading @@ -656,4 +656,22 @@ analyze table t1; show index from t1; set myisam_stats_method=DEFAULT; drop table t1; # BUG#13814 - key value packed incorrectly for TINYBLOBs create table t1( cip INT NOT NULL, time TIME NOT NULL, score INT NOT NULL DEFAULT 0, bob TINYBLOB ); insert into t1 (cip, time) VALUES (1, '00:01'), (2, '00:02'), (3,'00:03'); insert into t1 (cip, bob, time) VALUES (4, 'a', '00:04'), (5, 'b', '00:05'), (6, 'c', '00:06'); select * from t1 where bob is null and cip=1; create index bug on t1 (bob(22), cip, time); select * from t1 where bob is null and cip=1; drop table t1; # End of 4.1 tests