Commit e5d47f6d authored by marko's avatar marko

Port r125 from branches/5.0:

dict_load_columns(): Set the charset-collation code
DATA_MYSQL_BINARY_CHARSET_COLL for those binary string columns
that lack a charset-collation code, i.e., the tables were created
with an older version of MySQL/InnoDB than 4.1.2.  (Bug #16298)
parent 876f0fbd
...@@ -385,13 +385,23 @@ dict_load_columns( ...@@ -385,13 +385,23 @@ dict_load_columns(
field = rec_get_nth_field_old(rec, 6, &len); field = rec_get_nth_field_old(rec, 6, &len);
prtype = mach_read_from_4(field); prtype = mach_read_from_4(field);
if (dtype_is_non_binary_string_type(mtype, prtype) if (dtype_get_charset_coll(prtype) == 0
&& dtype_get_charset_coll(prtype) == 0) { && dtype_is_string_type(mtype)) {
/* This is a non-binary string type, and the table /* The table was created with < 4.1.2. */
was created with < 4.1.2. Use the default charset. */
prtype = dtype_form_prtype(prtype, if (dtype_is_binary_string_type(mtype, prtype)) {
/* Use the binary collation for
string columns of binary type. */
prtype = dtype_form_prtype(prtype,
DATA_MYSQL_BINARY_CHARSET_COLL);
} else {
/* Use the default charset for
other than binary columns. */
prtype = dtype_form_prtype(prtype,
data_mysql_default_charset_coll); data_mysql_default_charset_coll);
}
} }
field = rec_get_nth_field_old(rec, 7, &len); field = rec_get_nth_field_old(rec, 7, &len);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment