Loading mysql-test/r/type_bit.result +8 −0 Original line number Diff line number Diff line Loading @@ -458,3 +458,11 @@ select h from t1; h a drop table t1; create table t1 (a bit(8)) engine=heap; insert into t1 values ('1111100000'); Warnings: Warning 1264 Out of range value adjusted for column 'a' at row 1 select a+0 from t1; a+0 255 drop table t1; mysql-test/t/type_bit.test +9 −0 Original line number Diff line number Diff line Loading @@ -162,3 +162,12 @@ create table t1 (a int, b time, c tinyint, d bool, e char(10), f bit(1), insert into t1 set a=1; select h from t1; drop table t1; # # Bug #10539 # create table t1 (a bit(8)) engine=heap; insert into t1 values ('1111100000'); select a+0 from t1; drop table t1; sql/field.cc +3 −2 Original line number Diff line number Diff line Loading @@ -7835,7 +7835,7 @@ int Field_bit::store(const char *from, uint length, CHARSET_INFO *cs) int Field_bit::store(double nr) { return (Field_bit::store((longlong) nr)); return store((longlong) nr); } Loading Loading @@ -8018,6 +8018,7 @@ int Field_bit_as_char::store(const char *from, uint length, CHARSET_INFO *cs) (delta == 0 && bits && (uint) (uchar) *from >= (uint) (1 << bits))) { memset(ptr, 0xff, field_length); if (bits) *ptr&= ((1 << bits) - 1); /* set first byte */ set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1); return 1; Loading Loading
mysql-test/r/type_bit.result +8 −0 Original line number Diff line number Diff line Loading @@ -458,3 +458,11 @@ select h from t1; h a drop table t1; create table t1 (a bit(8)) engine=heap; insert into t1 values ('1111100000'); Warnings: Warning 1264 Out of range value adjusted for column 'a' at row 1 select a+0 from t1; a+0 255 drop table t1;
mysql-test/t/type_bit.test +9 −0 Original line number Diff line number Diff line Loading @@ -162,3 +162,12 @@ create table t1 (a int, b time, c tinyint, d bool, e char(10), f bit(1), insert into t1 set a=1; select h from t1; drop table t1; # # Bug #10539 # create table t1 (a bit(8)) engine=heap; insert into t1 values ('1111100000'); select a+0 from t1; drop table t1;
sql/field.cc +3 −2 Original line number Diff line number Diff line Loading @@ -7835,7 +7835,7 @@ int Field_bit::store(const char *from, uint length, CHARSET_INFO *cs) int Field_bit::store(double nr) { return (Field_bit::store((longlong) nr)); return store((longlong) nr); } Loading Loading @@ -8018,6 +8018,7 @@ int Field_bit_as_char::store(const char *from, uint length, CHARSET_INFO *cs) (delta == 0 && bits && (uint) (uchar) *from >= (uint) (1 << bits))) { memset(ptr, 0xff, field_length); if (bits) *ptr&= ((1 << bits) - 1); /* set first byte */ set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1); return 1; Loading