dict0load.c, dict0crea.c:

  Add diagnostic code to track corruption in mix_len; it was reported on the mailing list Jan 14, 2005
parent 5ebcb21f
......@@ -81,6 +81,17 @@ dict_create_sys_tables_tuple(
dfield_set_data(dfield, ptr, 8);
/* 7: MIX_LEN --------------------------*/
/* Track corruption reported on mailing list Jan 14, 2005 */
if (table->mix_len != 0 && table->mix_len != 0x80000000) {
fprintf(stderr,
"InnoDB: Error: mix_len is %lu in table %s\n", (ulong)table->mix_len,
table->name);
mem_analyze_corruption((byte*)&(table->mix_len));
ut_error;
}
dfield = dtuple_get_nth_field(entry, 5);
ptr = mem_heap_alloc(heap, 4);
......
......@@ -729,6 +729,7 @@ dict_load_table(
ulint space;
ulint n_cols;
ulint err;
ulint mix_len;
mtr_t mtr;
#ifdef UNIV_SYNC_DEBUG
......@@ -775,6 +776,22 @@ dict_load_table(
return(NULL);
}
/* Track a corruption bug reported on the MySQL mailing list Jan 14,
2005: mix_id had a value different from 0 */
field = rec_get_nth_field(rec, 7, &len);
ut_a(len == 4);
mix_len = mach_read_from_4(field);
if (mix_len != 0 && mix_len != 0x80000000) {
ut_print_timestamp(stderr);
fprintf(stderr,
" InnoDB: table %s has a nonsensical mix len %lu\n",
name, (ulong)mix_len);
}
#if MYSQL_VERSION_ID < 50300
/* Starting from MySQL 5.0.3, the high-order bit of MIX_LEN is the
"compact format" flag. */
......
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