MySQL:如何编写Information Schema Plugin(11)
const char *key;
size_t key_length;
/*引用query_cache全局变量*/
qc= (Accessible_Query_Cache *)&query_cache;
/*对query_cache加锁*/
query_cache.lock();
/*获取hash*/
queries = qc->get_queries();
/* 遍历hash中的所有记录/
for(uint i= 0; i < queries->records; i++)
{
/*根据索引号获取记录*/
query_cache_block_raw = hash_element(queries, i);
query_cache_block = (Query_cache_block*)query_cache_block_raw;
query_cache_query= query_cache_block->query();
table->field[COLUMN_STATEMENT_ID]->store(i+1, 0);
/* 获取sql语句*/
statement_text = (const char*)query_cache_query->query();
statement_text_length = strlen(statement_text);
/*当超出长度时需要截断…*/
table->field[COLUMN_STATEMENT_TEXT]->store( (char*)statement_text
,statement_text_length > MAX_STATEMENT_TEXT_LENGTH?
MAX_STATEMENT_TEXT_LENGTH
:statement_text_length
, scs
);
/* 获取该查询的key*/
key = (const char*)query_cache_query_get_key( query_cache_block_raw
,&key_length , 0 );
key_length =strlen(key+statement_text_length+1)-1;
/*数据库名是key的一部分,适当的偏移key指针可以得到数据库名*/
相关新闻>>
- 发表评论
-
- 最新评论 更多>>