Loading .bzrignore +2 −0 Original line number Diff line number Diff line Loading @@ -333,3 +333,5 @@ innobase/autom4te.cache/requests innobase/autom4te.cache/traces.0 innobase/stamp-h1 stamp-h1 configure.lineno innobase/configure.lineno mysql-test/r/delete.result 0 → 100644 +4 −0 Original line number Diff line number Diff line bool not_null misc NULL c 6 NULL d 7 bool not_null misc mysql-test/t/delete.test +20 −0 Original line number Diff line number Diff line Loading @@ -35,3 +35,23 @@ create table t1 (a bigint not null, primary key (a,a,a,a,a,a,a,a,a,a)); insert into t1 values (2),(4),(6),(8),(10),(12),(14),(16),(18),(20),(22),(24),(26),(23),(27); delete from t1 where a=27; drop table t1; # # CHAR(0) bug - not actually DELETE bug, but anyway... # CREATE TABLE t1 ( bool char(0) default NULL, not_null varchar(20) binary NOT NULL default '', misc integer not null, PRIMARY KEY (not_null) ) TYPE=MyISAM; INSERT INTO t1 VALUES (NULL,'a',4), (NULL,'b',5), (NULL,'c',6), (NULL,'d',7); select * from t1 where misc > 5 and bool is null; delete from t1 where misc > 5 and bool is null; select * from t1 where misc > 5 and bool is null; drop table t1; sql/field.h +1 −1 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ class Field { virtual String *val_str(String*,String *)=0; virtual Item_result result_type () const=0; virtual Item_result cmp_type () const { return result_type(); } bool eq(Field *field) { return ptr == field->ptr; } bool eq(Field *field) { return ptr == field->ptr && null_ptr == field->null_ptr; } virtual bool eq_def(Field *field); virtual uint32 pack_length() const { return (uint32) field_length; } virtual void reset(void) { bzero(ptr,pack_length()); } Loading Loading
.bzrignore +2 −0 Original line number Diff line number Diff line Loading @@ -333,3 +333,5 @@ innobase/autom4te.cache/requests innobase/autom4te.cache/traces.0 innobase/stamp-h1 stamp-h1 configure.lineno innobase/configure.lineno
mysql-test/r/delete.result 0 → 100644 +4 −0 Original line number Diff line number Diff line bool not_null misc NULL c 6 NULL d 7 bool not_null misc
mysql-test/t/delete.test +20 −0 Original line number Diff line number Diff line Loading @@ -35,3 +35,23 @@ create table t1 (a bigint not null, primary key (a,a,a,a,a,a,a,a,a,a)); insert into t1 values (2),(4),(6),(8),(10),(12),(14),(16),(18),(20),(22),(24),(26),(23),(27); delete from t1 where a=27; drop table t1; # # CHAR(0) bug - not actually DELETE bug, but anyway... # CREATE TABLE t1 ( bool char(0) default NULL, not_null varchar(20) binary NOT NULL default '', misc integer not null, PRIMARY KEY (not_null) ) TYPE=MyISAM; INSERT INTO t1 VALUES (NULL,'a',4), (NULL,'b',5), (NULL,'c',6), (NULL,'d',7); select * from t1 where misc > 5 and bool is null; delete from t1 where misc > 5 and bool is null; select * from t1 where misc > 5 and bool is null; drop table t1;
sql/field.h +1 −1 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ class Field { virtual String *val_str(String*,String *)=0; virtual Item_result result_type () const=0; virtual Item_result cmp_type () const { return result_type(); } bool eq(Field *field) { return ptr == field->ptr; } bool eq(Field *field) { return ptr == field->ptr && null_ptr == field->null_ptr; } virtual bool eq_def(Field *field); virtual uint32 pack_length() const { return (uint32) field_length; } virtual void reset(void) { bzero(ptr,pack_length()); } Loading