diff --git a/mysql-test/r/type_bit.result b/mysql-test/r/type_bit.result index e6f4db26c23..639a97be27b 100644 --- a/mysql-test/r/type_bit.result +++ b/mysql-test/r/type_bit.result @@ -722,7 +722,12 @@ DROP TABLE t1; CREATE TABLE IF NOT EXISTS t1 ( f1 bit(2) NOT NULL default b'' ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; -ERROR 42000: Invalid default value for 'f1' +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` bit(2) NOT NULL DEFAULT b'0' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci +DROP TABLE t1; create table t1bit7 (a1 bit(7) not null) engine=MyISAM; create table t2bit7 (b1 bit(7)) engine=MyISAM; insert into t1bit7 values (b'1100000'); diff --git a/mysql-test/r/type_bit_innodb.result b/mysql-test/r/type_bit_innodb.result index 9bdd8658690..80fc942e77c 100644 --- a/mysql-test/r/type_bit_innodb.result +++ b/mysql-test/r/type_bit_innodb.result @@ -413,3 +413,12 @@ a ` drop table t1; End of 5.0 tests +create table t1(f1 bit(2) not null default b'10',f2 bit(14) not null default b'11110000111100'); +insert into t1 (f1) values (default); +insert into t1 values (b'',b''),('',''); +select hex(f1), hex(f2) from t1; +hex(f1) hex(f2) +2 3C3C +0 0 +0 0 +drop table t1; diff --git a/mysql-test/t/type_bit.test b/mysql-test/t/type_bit.test index 8bedf9357ef..2ca608e76ff 100644 --- a/mysql-test/t/type_bit.test +++ b/mysql-test/t/type_bit.test @@ -362,11 +362,11 @@ f2 bit(14) NOT NULL default b'11110000111100' SHOW CREATE TABLE t1; DROP TABLE t1; ---error ER_INVALID_DEFAULT CREATE TABLE IF NOT EXISTS t1 ( f1 bit(2) NOT NULL default b'' ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; - +SHOW CREATE TABLE t1; +DROP TABLE t1; # # Bug#31399 Wrong query result when doing join buffering over BIT fields diff --git a/mysql-test/t/type_bit_innodb.test b/mysql-test/t/type_bit_innodb.test index 7ba90bf08fa..27eaeda0f99 100644 --- a/mysql-test/t/type_bit_innodb.test +++ b/mysql-test/t/type_bit_innodb.test @@ -148,3 +148,12 @@ select * from t1; drop table t1; --echo End of 5.0 tests + +# +# MDEV-6052 Inconsistent results with bit type +# +create table t1(f1 bit(2) not null default b'10',f2 bit(14) not null default b'11110000111100'); +insert into t1 (f1) values (default); +insert into t1 values (b'',b''),('',''); +select hex(f1), hex(f2) from t1; +drop table t1; diff --git a/sql/item.cc b/sql/item.cc index 21baf779781..95df347f71a 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -6389,8 +6389,6 @@ int Item_hex_hybrid::save_in_field(Field *field, bool no_conversions) ulonglong nr; uint32 length= str_value.length(); - if (!length) - return 1; if (length > 8) {