Fixed a core dump bug after VARCHAR push in InnoDB.
This commit is contained in:
parent
72e2466c0d
commit
9a52ffbfa4
@ -2100,9 +2100,12 @@ row_sel_convert_mysql_key_to_innobase(
|
|||||||
|
|
||||||
/* Calculate data length and data field total length */
|
/* Calculate data length and data field total length */
|
||||||
|
|
||||||
if (type == DATA_BLOB) {
|
if (type == DATA_BLOB || ( type == DATA_VARCHAR &&
|
||||||
/* The key field is a column prefix of a BLOB or
|
dtype_get_mysql_type(dfield_get_type(dfield))
|
||||||
TEXT type column */
|
== DATA_MYSQL_TRUE_VARCHAR)) {
|
||||||
|
|
||||||
|
/* The key field is a column prefix of a BLOB,
|
||||||
|
TEXT, OR TRUE VARCHAR type column */
|
||||||
|
|
||||||
ut_a(field->prefix_len > 0);
|
ut_a(field->prefix_len > 0);
|
||||||
|
|
||||||
@ -2118,7 +2121,10 @@ row_sel_convert_mysql_key_to_innobase(
|
|||||||
data_len = key_ptr[data_offset]
|
data_len = key_ptr[data_offset]
|
||||||
+ 256 * key_ptr[data_offset + 1];
|
+ 256 * key_ptr[data_offset + 1];
|
||||||
data_field_len = data_offset + 2 + field->prefix_len;
|
data_field_len = data_offset + 2 + field->prefix_len;
|
||||||
data_offset += 2;
|
|
||||||
|
if (type == DATA_BLOB) {
|
||||||
|
data_offset += 2;
|
||||||
|
}
|
||||||
|
|
||||||
/* now that we know the length, we store the column
|
/* now that we know the length, we store the column
|
||||||
value like it would be a fixed char field */
|
value like it would be a fixed char field */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user