Loading mysql-test/r/type_bit.result +8 −0 Original line number Diff line number Diff line Loading @@ -602,4 +602,12 @@ NULL NULL 0 0 11111111 11111111 drop table bug15583; create table t1(a bit(1), b smallint unsigned); insert into t1 (b, a) values ('2', '1'); Warnings: Warning 1264 Out of range value adjusted for column 'a' at row 1 select hex(a), b from t1; hex(a) b 1 2 drop table t1; End of 5.0 tests mysql-test/t/type_bit.test +8 −0 Original line number Diff line number Diff line Loading @@ -252,5 +252,13 @@ select hex(b + 0), bin(b + 0), oct(b + 0), hex(n), bin(n), oct(n) from bug15583; select conv(b, 10, 2), conv(b + 0, 10, 2) from bug15583; drop table bug15583; # # Bug #22271: data casting may affect data stored in the next column(s?) # create table t1(a bit(1), b smallint unsigned); insert into t1 (b, a) values ('2', '1'); select hex(a), b from t1; drop table t1; --echo End of 5.0 tests sql/field.cc +1 −1 Original line number Diff line number Diff line Loading @@ -7933,7 +7933,7 @@ int Field_bit::store(const char *from, uint length, CHARSET_INFO *cs) (delta == -1 && (uchar) *from > ((1 << bit_len) - 1)) || (!bit_len && delta < 0)) { set_rec_bits(0xff, bit_ptr, bit_ofs, bit_len); set_rec_bits((1 << bit_len) - 1, bit_ptr, bit_ofs, bit_len); memset(ptr, 0xff, bytes_in_rec); if (table->in_use->really_abort_on_warning()) set_warning(MYSQL_ERROR::WARN_LEVEL_ERROR, ER_DATA_TOO_LONG, 1); Loading Loading
mysql-test/r/type_bit.result +8 −0 Original line number Diff line number Diff line Loading @@ -602,4 +602,12 @@ NULL NULL 0 0 11111111 11111111 drop table bug15583; create table t1(a bit(1), b smallint unsigned); insert into t1 (b, a) values ('2', '1'); Warnings: Warning 1264 Out of range value adjusted for column 'a' at row 1 select hex(a), b from t1; hex(a) b 1 2 drop table t1; End of 5.0 tests
mysql-test/t/type_bit.test +8 −0 Original line number Diff line number Diff line Loading @@ -252,5 +252,13 @@ select hex(b + 0), bin(b + 0), oct(b + 0), hex(n), bin(n), oct(n) from bug15583; select conv(b, 10, 2), conv(b + 0, 10, 2) from bug15583; drop table bug15583; # # Bug #22271: data casting may affect data stored in the next column(s?) # create table t1(a bit(1), b smallint unsigned); insert into t1 (b, a) values ('2', '1'); select hex(a), b from t1; drop table t1; --echo End of 5.0 tests
sql/field.cc +1 −1 Original line number Diff line number Diff line Loading @@ -7933,7 +7933,7 @@ int Field_bit::store(const char *from, uint length, CHARSET_INFO *cs) (delta == -1 && (uchar) *from > ((1 << bit_len) - 1)) || (!bit_len && delta < 0)) { set_rec_bits(0xff, bit_ptr, bit_ofs, bit_len); set_rec_bits((1 << bit_len) - 1, bit_ptr, bit_ofs, bit_len); memset(ptr, 0xff, bytes_in_rec); if (table->in_use->really_abort_on_warning()) set_warning(MYSQL_ERROR::WARN_LEVEL_ERROR, ER_DATA_TOO_LONG, 1); Loading