diff options
-rw-r--r-- | mysql-test/suite/rpl/r/rpl_row_colSize.result | 8 | ||||
-rw-r--r-- | sql/rpl_utility.cc | 12 |
2 files changed, 7 insertions, 13 deletions
diff --git a/mysql-test/suite/rpl/r/rpl_row_colSize.result b/mysql-test/suite/rpl/r/rpl_row_colSize.result index 29e96936c87..c7ee859f6f9 100644 --- a/mysql-test/suite/rpl/r/rpl_row_colSize.result +++ b/mysql-test/suite/rpl/r/rpl_row_colSize.result @@ -256,7 +256,7 @@ Replicate_Ignore_Table # Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno 1641 -Last_Error Column 0 of table 'test.t1' cannot be converted from type 'bit(8)' to type 'bit(5)' +Last_Error Column 0 of table 'test.t1' cannot be converted from type 'bit(64)' to type 'bit(5)' Skip_Counter 0 Exec_Master_Log_Pos # Relay_Log_Space # @@ -274,7 +274,7 @@ Master_SSL_Verify_Server_Cert No Last_IO_Errno # Last_IO_Error # Last_SQL_Errno 1641 -Last_SQL_Error Column 0 of table 'test.t1' cannot be converted from type 'bit(8)' to type 'bit(5)' +Last_SQL_Error Column 0 of table 'test.t1' cannot be converted from type 'bit(64)' to type 'bit(5)' SELECT COUNT(*) FROM t1; COUNT(*) 0 @@ -310,7 +310,7 @@ Replicate_Ignore_Table # Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno 1641 -Last_Error Column 0 of table 'test.t1' cannot be converted from type 'bit(5)' to type 'bit(11)' +Last_Error Column 0 of table 'test.t1' cannot be converted from type 'bit(12)' to type 'bit(11)' Skip_Counter 0 Exec_Master_Log_Pos # Relay_Log_Space # @@ -328,7 +328,7 @@ Master_SSL_Verify_Server_Cert No Last_IO_Errno # Last_IO_Error # Last_SQL_Errno 1641 -Last_SQL_Error Column 0 of table 'test.t1' cannot be converted from type 'bit(5)' to type 'bit(11)' +Last_SQL_Error Column 0 of table 'test.t1' cannot be converted from type 'bit(12)' to type 'bit(11)' SELECT COUNT(*) FROM t1; COUNT(*) 0 diff --git a/sql/rpl_utility.cc b/sql/rpl_utility.cc index f24de23bcf3..9d26c133279 100644 --- a/sql/rpl_utility.cc +++ b/sql/rpl_utility.cc @@ -116,17 +116,11 @@ max_display_length_for_field(enum_field_types sql_type, unsigned int metadata) return 8; case MYSQL_TYPE_BIT: - { /* Decode the size of the bit field from the master. - from_len is the length in bytes from the master - from_bit_len is the number of extra bits stored in the master record */ - uint from_len= (metadata >> 8U) & 0x00ff; - uint from_bit_len= metadata & 0x00ff; - DBUG_ASSERT(from_bit_len <= 7); - return 8 * from_len + from_bit_len; - } + DBUG_ASSERT((metadata & 0xff) <= 7); + return 8 * (metadata >> 8U) + (metadata & 0x00ff); case MYSQL_TYPE_VAR_STRING: case MYSQL_TYPE_VARCHAR: @@ -422,7 +416,7 @@ void show_sql_type(enum_field_types type, uint16 metadata, String *str) case MYSQL_TYPE_BIT: { CHARSET_INFO *cs= str->charset(); - int bit_length= (metadata >> 8) + (metadata & 0xFF); + int bit_length= 8 * (metadata >> 8) + (metadata & 0xFF); uint32 length= cs->cset->snprintf(cs, (char*) str->ptr(), str->alloced_length(), "bit(%d)", bit_length); |