summaryrefslogtreecommitdiff
path: root/sql/table.cc
diff options
context:
space:
mode:
authorahristov@bk-internal.mysql.com <>2006-08-23 17:50:56 +0200
committerahristov@bk-internal.mysql.com <>2006-08-23 17:50:56 +0200
commit71bb7e590dd6e6514923dafab5eb8980caa80e48 (patch)
treeb1d840b2329564b5f6c156526cc73291c4ce1919 /sql/table.cc
parentfbddc7deabdc6bd3b30e44e6c275e42eb8cf4f4f (diff)
parentf41f9bf0d935aff314c10bb58aa6945538e696f4 (diff)
downloadmariadb-git-71bb7e590dd6e6514923dafab5eb8980caa80e48.tar.gz
Merge bk-internal.mysql.com:/data0/bk/mysql-5.1-runtime
into bk-internal.mysql.com:/data0/bk/mysql-5.1-wl3337
Diffstat (limited to 'sql/table.cc')
-rw-r--r--sql/table.cc20
1 files changed, 8 insertions, 12 deletions
diff --git a/sql/table.cc b/sql/table.cc
index eceb5f56746..49f54084ef8 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;