Loading mysql-test/r/type_bit_innodb.result +22 −0 Original line number Diff line number Diff line Loading @@ -380,3 +380,25 @@ drop table t1; create table t1(a int, b bit not null) engine=innodb; alter table t1 add primary key (a); drop table t1; create table t1 (a bit, b bit(10)) engine=innodb; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` bit(1) default NULL, `b` bit(10) default NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 alter table t1 engine=heap; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` bit(1) default NULL, `b` bit(10) default NULL ) ENGINE=MEMORY DEFAULT CHARSET=latin1 alter table t1 engine=innodb; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` bit(1) default NULL, `b` bit(10) default NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 drop table t1; mysql-test/t/type_bit_innodb.test +12 −0 Original line number Diff line number Diff line Loading @@ -121,3 +121,15 @@ drop table t1; create table t1(a int, b bit not null) engine=innodb; alter table t1 add primary key (a); drop table t1; # # altering tables # create table t1 (a bit, b bit(10)) engine=innodb; show create table t1; alter table t1 engine=heap; show create table t1; alter table t1 engine=innodb; show create table t1; drop table t1; sql/field.cc +3 −1 Original line number Diff line number Diff line Loading @@ -8358,7 +8358,9 @@ create_field::create_field(Field *old_field,Field *orig_field) break; #endif case FIELD_TYPE_BIT: length= ((Field_bit *) old_field)->bit_len + length * 8; length= (old_field->key_type() == HA_KEYTYPE_BIT) ? ((Field_bit *) old_field)->bit_len + length * 8 : ((Field_bit_as_char *) old_field)->create_length; break; default: break; Loading sql/field.h +1 −2 Original line number Diff line number Diff line Loading @@ -1313,9 +1313,8 @@ class Field_bit :public Field { class Field_bit_as_char: public Field_bit { protected: uchar create_length; public: uchar create_length; Field_bit_as_char(char *ptr_arg, uint32 len_arg, uchar *null_ptr_arg, uchar null_bit_arg, uchar *bit_ptr_arg, uchar bit_ofs_arg, enum utype unireg_check_arg, const char *field_name_arg, Loading Loading
mysql-test/r/type_bit_innodb.result +22 −0 Original line number Diff line number Diff line Loading @@ -380,3 +380,25 @@ drop table t1; create table t1(a int, b bit not null) engine=innodb; alter table t1 add primary key (a); drop table t1; create table t1 (a bit, b bit(10)) engine=innodb; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` bit(1) default NULL, `b` bit(10) default NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 alter table t1 engine=heap; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` bit(1) default NULL, `b` bit(10) default NULL ) ENGINE=MEMORY DEFAULT CHARSET=latin1 alter table t1 engine=innodb; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` bit(1) default NULL, `b` bit(10) default NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 drop table t1;
mysql-test/t/type_bit_innodb.test +12 −0 Original line number Diff line number Diff line Loading @@ -121,3 +121,15 @@ drop table t1; create table t1(a int, b bit not null) engine=innodb; alter table t1 add primary key (a); drop table t1; # # altering tables # create table t1 (a bit, b bit(10)) engine=innodb; show create table t1; alter table t1 engine=heap; show create table t1; alter table t1 engine=innodb; show create table t1; drop table t1;
sql/field.cc +3 −1 Original line number Diff line number Diff line Loading @@ -8358,7 +8358,9 @@ create_field::create_field(Field *old_field,Field *orig_field) break; #endif case FIELD_TYPE_BIT: length= ((Field_bit *) old_field)->bit_len + length * 8; length= (old_field->key_type() == HA_KEYTYPE_BIT) ? ((Field_bit *) old_field)->bit_len + length * 8 : ((Field_bit_as_char *) old_field)->create_length; break; default: break; Loading
sql/field.h +1 −2 Original line number Diff line number Diff line Loading @@ -1313,9 +1313,8 @@ class Field_bit :public Field { class Field_bit_as_char: public Field_bit { protected: uchar create_length; public: uchar create_length; Field_bit_as_char(char *ptr_arg, uint32 len_arg, uchar *null_ptr_arg, uchar null_bit_arg, uchar *bit_ptr_arg, uchar bit_ofs_arg, enum utype unireg_check_arg, const char *field_name_arg, Loading