diff options
author | Mikael Ronstrom <mikael@mysql.com> | 2009-02-17 13:24:09 +0100 |
---|---|---|
committer | Mikael Ronstrom <mikael@mysql.com> | 2009-02-17 13:24:09 +0100 |
commit | 6db314c628b103b7c4d7fc0ba4c21eda6e6a349e (patch) | |
tree | 8414a0bf16f74515368a6a4ebc7ea528e8f982a2 /sql/sql_cache.cc | |
parent | 805e8ffb9ec3ae7b9353d65f33e4eb20284876ae (diff) | |
parent | 6bd93f670271eaf2bd79bd7fa538e9baaa7dcb0f (diff) | |
download | mariadb-git-6db314c628b103b7c4d7fc0ba4c21eda6e6a349e.tar.gz |
Merged Performance Version 0.2.1 with latest 5.1 tree (last push 11 feb 14.01.13 2009)
Diffstat (limited to 'sql/sql_cache.cc')
-rw-r--r-- | sql/sql_cache.cc | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc index 1d907bb1f16..fcea4153eb0 100644 --- a/sql/sql_cache.cc +++ b/sql/sql_cache.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 MySQL AB +/* Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -782,6 +782,9 @@ void query_cache_end_of_result(THD *thd) if (query_cache.is_disabled() || thd->net.query_cache_query == 0) DBUG_VOID_RETURN; + /* Ensure that only complete results are cached. */ + DBUG_ASSERT(thd->main_da.is_eof()); + if (thd->killed) { query_cache_abort(&thd->net); @@ -1003,6 +1006,8 @@ void Query_cache::store_query(THD *thd, TABLE_LIST *tables_used) flags.result_in_binary_protocol= (unsigned int) thd->protocol->type(); flags.more_results_exists= test(thd->server_status & SERVER_MORE_RESULTS_EXISTS); + flags.in_trans= test(thd->server_status & SERVER_STATUS_IN_TRANS); + flags.autocommit= test(thd->server_status & SERVER_STATUS_AUTOCOMMIT); flags.pkt_nr= net->pkt_nr; flags.character_set_client_num= thd->variables.character_set_client->number; @@ -1024,7 +1029,7 @@ void Query_cache::store_query(THD *thd, TABLE_LIST *tables_used) long %d, 4.1: %d, bin_proto: %d, more results %d, pkt_nr: %d, \ CS client: %u, CS result: %u, CS conn: %u, limit: %lu, TZ: 0x%lx, \ sql mode: 0x%lx, sort len: %lu, conncat len: %lu, div_precision: %lu, \ -def_week_frmt: %lu", +def_week_frmt: %lu, in_trans: %d, autocommit: %d", (int)flags.client_long_flag, (int)flags.client_protocol_41, (int)flags.result_in_binary_protocol, @@ -1039,7 +1044,10 @@ def_week_frmt: %lu", flags.max_sort_length, flags.group_concat_max_len, flags.div_precision_increment, - flags.default_week_format)); + flags.default_week_format, + (int)flags.in_trans, + (int)flags.autocommit)); + /* Make InnoDB to release the adaptive hash index latch before acquiring the query cache mutex. @@ -1278,6 +1286,8 @@ Query_cache::send_result_to_client(THD *thd, char *sql, uint query_length) flags.result_in_binary_protocol= (unsigned int)thd->protocol->type(); flags.more_results_exists= test(thd->server_status & SERVER_MORE_RESULTS_EXISTS); + flags.in_trans= test(thd->server_status & SERVER_STATUS_IN_TRANS); + flags.autocommit= test(thd->server_status & SERVER_STATUS_AUTOCOMMIT); flags.pkt_nr= thd->net.pkt_nr; flags.character_set_client_num= thd->variables.character_set_client->number; flags.character_set_results_num= @@ -1297,7 +1307,7 @@ Query_cache::send_result_to_client(THD *thd, char *sql, uint query_length) long %d, 4.1: %d, bin_proto: %d, more results %d, pkt_nr: %d, \ CS client: %u, CS result: %u, CS conn: %u, limit: %lu, TZ: 0x%lx, \ sql mode: 0x%lx, sort len: %lu, conncat len: %lu, div_precision: %lu, \ -def_week_frmt: %lu", +def_week_frmt: %lu, in_trans: %d, autocommit: %d", (int)flags.client_long_flag, (int)flags.client_protocol_41, (int)flags.result_in_binary_protocol, @@ -1312,7 +1322,9 @@ def_week_frmt: %lu", flags.max_sort_length, flags.group_concat_max_len, flags.div_precision_increment, - flags.default_week_format)); + flags.default_week_format, + (int)flags.in_trans, + (int)flags.autocommit)); memcpy((uchar *)(sql + (tot_length - QUERY_CACHE_FLAGS_SIZE)), (uchar*) &flags, QUERY_CACHE_FLAGS_SIZE); query_block = (Query_cache_block *) hash_search(&queries, (uchar*) sql, |