diff --git a/sql/field.h b/sql/field.h index fd0937b2f4c..6a1a7af194e 100644 --- a/sql/field.h +++ b/sql/field.h @@ -1321,6 +1321,7 @@ public: enum utype unireg_check_arg, const char *field_name_arg, struct st_table *table_arg); enum ha_base_keytype key_type() const { return HA_KEYTYPE_BINARY; } + uint size_of() const { return sizeof(*this); } int store(const char *to, uint length, CHARSET_INFO *charset); int store(double nr) { return Field_bit::store(nr); } int store(longlong nr) { return Field_bit::store(nr); } diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 66c6f97e0de..8753f62ab89 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -563,9 +563,9 @@ int prepare_create_field(create_field *sql_field, sql_field->pack_flag=f_settype((uint) sql_field->sql_type); break; case FIELD_TYPE_BIT: - sql_field->pack_flag= f_bit_as_char(sql_field->pack_flag) ? - FIELDFLAG_NUMBER | FIELDFLAG_TREAT_BIT_AS_CHAR : - FIELDFLAG_NUMBER; + /* + We have sql_field->pack_flag already set here, see mysql_prepare_table(). + */ break; case FIELD_TYPE_NEWDECIMAL: sql_field->pack_flag=(FIELDFLAG_NUMBER | @@ -773,6 +773,7 @@ static int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info, if (sql_field->sql_type == FIELD_TYPE_BIT) { + sql_field->pack_flag= FIELDFLAG_NUMBER; if (file->table_flags() & HA_CAN_BIT_FIELD) total_uneven_bit_length+= sql_field->length & 7; else