diff --git a/sql/field.cc b/sql/field.cc index 2fb1d0cbd6a..ea551f410b7 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -7879,7 +7879,7 @@ int Field_bit::key_cmp(const byte *str, uint length) str++; length--; } - return bcmp(ptr, str, length); + return memcmp(ptr, str, length); } @@ -7893,7 +7893,7 @@ int Field_bit::cmp_offset(uint row_offset) if ((flag= (int) (bits_a - bits_b))) return flag; } - return bcmp(ptr, ptr + row_offset, field_length); + return memcmp(ptr, ptr + row_offset, field_length); } diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 56de2f94b1f..66c6f97e0de 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -563,7 +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|= FIELDFLAG_NUMBER; + sql_field->pack_flag= f_bit_as_char(sql_field->pack_flag) ? + FIELDFLAG_NUMBER | FIELDFLAG_TREAT_BIT_AS_CHAR : + FIELDFLAG_NUMBER; break; case FIELD_TYPE_NEWDECIMAL: sql_field->pack_flag=(FIELDFLAG_NUMBER |