summaryrefslogtreecommitdiff
path: root/storage/myisam/ha_myisam.cc
diff options
context:
space:
mode:
Diffstat (limited to 'storage/myisam/ha_myisam.cc')
-rw-r--r--storage/myisam/ha_myisam.cc14
1 files changed, 11 insertions, 3 deletions
diff --git a/storage/myisam/ha_myisam.cc b/storage/myisam/ha_myisam.cc
index 78ef653e9ab..1b16943a97c 100644
--- a/storage/myisam/ha_myisam.cc
+++ b/storage/myisam/ha_myisam.cc
@@ -2143,9 +2143,17 @@ int ha_myisam::info(uint flag)
share->keys_for_keyread.intersect(share->keys_in_use);
share->db_record_offset= misam_info.record_offset;
if (share->key_parts)
- memcpy((char*) table->key_info[0].rec_per_key,
- (char*) misam_info.rec_per_key,
- sizeof(table->key_info[0].rec_per_key[0])*share->key_parts);
+ {
+ ulong *from= misam_info.rec_per_key;
+ KEY *key, *key_end;
+ for (key= table->key_info, key_end= key + share->keys;
+ key < key_end ; key++)
+ {
+ memcpy(key->rec_per_key, from,
+ key->user_defined_key_parts * sizeof(*from));
+ from+= key->user_defined_key_parts;
+ }
+ }
if (table_share->tmp_table == NO_TMP_TABLE)
mysql_mutex_unlock(&table_share->LOCK_share);
}