mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge mysql.com:/opt/local/work/mysql-5.0-merge
into mysql.com:/opt/local/work/mysql-5.1-merge include/config-win.h: Auto merged mysys/hash.c: Auto merged mysql-test/r/rpl_stm_sp.result: Auto merged mysql-test/t/rpl_stm_sp.test: Auto merged sql/ha_innodb.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_base.cc: Auto merged sql/sql_cache.cc: Auto merged sql/sql_show.cc: Auto merged storage/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp: Auto merged mysql-test/r/information_schema.result: Manual merge. mysql-test/t/information_schema.test: Manual merge. sql/lock.cc: Manual merge.
This commit is contained in:
@ -3055,6 +3055,7 @@ my_bool Query_cache::move_by_type(byte **border,
|
||||
}
|
||||
case Query_cache_block::TABLE:
|
||||
{
|
||||
HASH_SEARCH_STATE record_idx;
|
||||
DBUG_PRINT("qcache", ("block 0x%lx TABLE", (ulong) block));
|
||||
if (*border == 0)
|
||||
break;
|
||||
@ -3072,7 +3073,7 @@ my_bool Query_cache::move_by_type(byte **border,
|
||||
byte *key;
|
||||
uint key_length;
|
||||
key=query_cache_table_get_key((byte*) block, &key_length, 0);
|
||||
hash_search(&tables, (byte*) key, key_length);
|
||||
hash_first(&tables, (byte*) key, key_length, &record_idx);
|
||||
|
||||
block->destroy();
|
||||
new_block->init(len);
|
||||
@ -3106,7 +3107,7 @@ my_bool Query_cache::move_by_type(byte **border,
|
||||
/* Fix pointer to table name */
|
||||
new_block->table()->table(new_block->table()->db() + tablename_offset);
|
||||
/* Fix hash to point at moved block */
|
||||
hash_replace(&tables, tables.current_record, (byte*) new_block);
|
||||
hash_replace(&tables, &record_idx, (byte*) new_block);
|
||||
|
||||
DBUG_PRINT("qcache", ("moved %lu bytes to 0x%lx, new gap at 0x%lx",
|
||||
len, (ulong) new_block, (ulong) *border));
|
||||
@ -3114,6 +3115,7 @@ my_bool Query_cache::move_by_type(byte **border,
|
||||
}
|
||||
case Query_cache_block::QUERY:
|
||||
{
|
||||
HASH_SEARCH_STATE record_idx;
|
||||
DBUG_PRINT("qcache", ("block 0x%lx QUERY", (ulong) block));
|
||||
if (*border == 0)
|
||||
break;
|
||||
@ -3131,7 +3133,7 @@ my_bool Query_cache::move_by_type(byte **border,
|
||||
byte *key;
|
||||
uint key_length;
|
||||
key=query_cache_query_get_key((byte*) block, &key_length, 0);
|
||||
hash_search(&queries, (byte*) key, key_length);
|
||||
hash_first(&queries, (byte*) key, key_length, &record_idx);
|
||||
// Move table of used tables
|
||||
memmove((char*) new_block->table(0), (char*) block->table(0),
|
||||
ALIGN_SIZE(n_tables*sizeof(Query_cache_block_table)));
|
||||
@ -3199,7 +3201,7 @@ my_bool Query_cache::move_by_type(byte **border,
|
||||
net->query_cache_query= (gptr) new_block;
|
||||
}
|
||||
/* Fix hash to point at moved block */
|
||||
hash_replace(&queries, queries.current_record, (byte*) new_block);
|
||||
hash_replace(&queries, &record_idx, (byte*) new_block);
|
||||
DBUG_PRINT("qcache", ("moved %lu bytes to 0x%lx, new gap at 0x%lx",
|
||||
len, (ulong) new_block, (ulong) *border));
|
||||
break;
|
||||
|
Reference in New Issue
Block a user