diff options
author | Sergei Golubchik <sergii@pisem.net> | 2014-08-05 11:47:58 +0200 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2014-08-05 11:47:58 +0200 |
commit | cf4814b39700fc0fe062519ad9090099540f79c0 (patch) | |
tree | 574b3446945a889c530e310150d81d404324e88d | |
parent | 321f589c81105ef9fc23689b7ec8eec3ff98ed39 (diff) | |
download | mariadb-git-cf4814b39700fc0fe062519ad9090099540f79c0.tar.gz |
MDEV-6052 Inconsistent results with bit type
Remove the "don't update the row for b'' and store uninitialized bytes on disk" change.
Update test cases to allow DEFAULT b'', because b'' is a valid expression elsewhere.
-rw-r--r-- | mysql-test/r/type_bit.result | 7 | ||||
-rw-r--r-- | mysql-test/r/type_bit_innodb.result | 9 | ||||
-rw-r--r-- | mysql-test/t/type_bit.test | 4 | ||||
-rw-r--r-- | mysql-test/t/type_bit_innodb.test | 9 | ||||
-rw-r--r-- | sql/item.cc | 2 |
5 files changed, 26 insertions, 5 deletions
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) { |