diff options
author | mikael/pappa@dator5.(none) <> | 2006-08-26 06:14:05 -0400 |
---|---|---|
committer | mikael/pappa@dator5.(none) <> | 2006-08-26 06:14:05 -0400 |
commit | b28a550eb4cbfd848d2b5f25f26320ead2c79f6b (patch) | |
tree | e9d0b98814793c3b53d10df6892f7bbe1cd7dc43 /sql/table.cc | |
parent | eaf68858ce827d40db7dfc42a4c3f57909e6be41 (diff) | |
parent | 31867f23a843aabbfe69689f33dfd11c2fba6c42 (diff) | |
download | mariadb-git-b28a550eb4cbfd848d2b5f25f26320ead2c79f6b.tar.gz |
Merge dator5.(none):/home/pappa/clean-mysql-5.1-kt
into dator5.(none):/home/pappa/bug21388
Diffstat (limited to 'sql/table.cc')
-rw-r--r-- | sql/table.cc | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/sql/table.cc b/sql/table.cc index bafd254ea51..80d1a7ab782 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -93,6 +93,7 @@ TABLE_SHARE *alloc_table_share(TABLE_LIST *table_list, char *key, { MEM_ROOT mem_root; TABLE_SHARE *share; + char *key_buff, *path_buff; char path[FN_REFLEN]; uint path_length; DBUG_ENTER("alloc_table_share"); @@ -103,22 +104,17 @@ TABLE_SHARE *alloc_table_share(TABLE_LIST *table_list, char *key, table_list->db, table_list->table_name, "", 0); init_sql_alloc(&mem_root, TABLE_ALLOC_BLOCK_SIZE, 0); - if ((share= (TABLE_SHARE*) alloc_root(&mem_root, - sizeof(*share) + key_length + - path_length +1))) + if (multi_alloc_root(&mem_root, + &share, sizeof(*share), + &key_buff, key_length, + &path_buff, path_length + 1, + NULL)) { bzero((char*) share, sizeof(*share)); - share->table_cache_key.str= (char*) (share+1); - share->table_cache_key.length= key_length; - memcpy(share->table_cache_key.str, key, key_length); - /* Use the fact the key is db/0/table_name/0 */ - share->db.str= share->table_cache_key.str; - share->db.length= strlen(share->db.str); - share->table_name.str= share->db.str + share->db.length + 1; - share->table_name.length= strlen(share->table_name.str); + share->set_table_cache_key(key_buff, key, key_length); - share->path.str= share->table_cache_key.str+ key_length; + share->path.str= path_buff; share->path.length= path_length; strmov(share->path.str, path); share->normalized_path.str= share->path.str; |