Commit 2e7a5d3e authored by hf@deer.(none)'s avatar hf@deer.(none)

SCRUM

WL#1246 (Query cache in embedded library)
Some fixes after testing
parent d6545ace
...@@ -284,11 +284,18 @@ uint emb_count_querycache_size(THD *thd) ...@@ -284,11 +284,18 @@ uint emb_count_querycache_size(THD *thd)
MYSQL *mysql= thd->mysql; MYSQL *mysql= thd->mysql;
MYSQL_FIELD *field= mysql->fields; MYSQL_FIELD *field= mysql->fields;
MYSQL_FIELD *field_end= field + mysql->field_count; MYSQL_FIELD *field_end= field + mysql->field_count;
MYSQL_ROWS *cur_row=NULL;
my_ulonglong n_rows=0;
*thd->data->prev_ptr= NULL; // this marks the last record if (!field)
MYSQL_ROWS *cur_row= thd->data->data; return 0;
if (thd->data)
result= 4+8 + (42 + 4*thd->data->rows)*mysql->field_count; {
*thd->data->prev_ptr= NULL; // this marks the last record
cur_row= thd->data->data;
n_rows= thd->data->rows;
}
result= 4+8 + (42 + 4*n_rows)*mysql->field_count;
for(; field < field_end; field++) for(; field < field_end; field++)
{ {
...@@ -315,12 +322,21 @@ void emb_store_querycache_result(Querycache_stream *dst, THD *thd) ...@@ -315,12 +322,21 @@ void emb_store_querycache_result(Querycache_stream *dst, THD *thd)
MYSQL *mysql= thd->mysql; MYSQL *mysql= thd->mysql;
MYSQL_FIELD *field= mysql->fields; MYSQL_FIELD *field= mysql->fields;
MYSQL_FIELD *field_end= field + mysql->field_count; MYSQL_FIELD *field_end= field + mysql->field_count;
MYSQL_ROWS *cur_row= NULL;
*thd->data->prev_ptr= NULL; // this marks the last record my_ulonglong n_rows= 0;
MYSQL_ROWS *cur_row= thd->data->data;
if (!field)
return;
if (thd->data)
{
*thd->data->prev_ptr= NULL; // this marks the last record
cur_row= thd->data->data;
n_rows= thd->data->rows;
}
dst->store_int((uint)mysql->field_count); dst->store_int((uint)mysql->field_count);
dst->store_ll((uint)thd->data->rows); dst->store_ll((uint)n_rows);
for(; field < field_end; field++) for(; field < field_end; field++)
{ {
......
...@@ -653,10 +653,6 @@ void query_cache_abort(NET *net) ...@@ -653,10 +653,6 @@ void query_cache_abort(NET *net)
void query_cache_end_of_result(THD *thd) void query_cache_end_of_result(THD *thd)
{ {
DBUG_ENTER("query_cache_end_of_result"); DBUG_ENTER("query_cache_end_of_result");
#ifdef EMBEDDED_LIBRARY
query_cache_insert(&thd->net, (byte*)thd,
emb_count_querycache_size(thd));
#endif
#ifndef DBUG_OFF #ifndef DBUG_OFF
// Check if we have called query_cache.wreck() (which disables the cache) // Check if we have called query_cache.wreck() (which disables the cache)
...@@ -665,6 +661,10 @@ void query_cache_end_of_result(THD *thd) ...@@ -665,6 +661,10 @@ void query_cache_end_of_result(THD *thd)
if (thd->net.query_cache_query != 0) // Quick check on unlocked structure if (thd->net.query_cache_query != 0) // Quick check on unlocked structure
{ {
#ifdef EMBEDDED_LIBRARY
query_cache_insert(&thd->net, (byte*)thd,
emb_count_querycache_size(thd));
#endif
STRUCT_LOCK(&query_cache.structure_guard_mutex); STRUCT_LOCK(&query_cache.structure_guard_mutex);
Query_cache_block *query_block = ((Query_cache_block*) Query_cache_block *query_block = ((Query_cache_block*)
thd->net.query_cache_query); thd->net.query_cache_query);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment