diff options
author | Davi Arnaut <Davi.Arnaut@Sun.COM> | 2009-01-13 20:07:06 -0200 |
---|---|---|
committer | Davi Arnaut <Davi.Arnaut@Sun.COM> | 2009-01-13 20:07:06 -0200 |
commit | 3d6cea324a8ab76e6ff0b1b948beee261278ed40 (patch) | |
tree | 2f261ec103a47068356203847dff31d674e53503 /sql/mysql_priv.h | |
parent | 386ec13b590a29608bf8ddea39e1acc875c702a7 (diff) | |
download | mariadb-git-3d6cea324a8ab76e6ff0b1b948beee261278ed40.tar.gz |
Bug#36326: nested transaction and select
The problem is that the query cache stores packets containing
the server status of the time when the cached statement was run.
This might lead to a wrong transaction status in the client side
if a statement is cached during a transaction and is later served
outside a transaction context (and vice-versa).
The solution is to take into account the transaction status when
storing in and serving from the query cache.
mysql-test/r/innodb_cache.result:
Update test case result.
mysql-test/r/query_cache.result:
Add test case result for Bug#36326
mysql-test/t/query_cache.test:
Add test case for Bug#36326
sql/mysql_priv.h:
Add new flags.
sql/sql_cache.cc:
Remember the transaction and autocommit status stored in the packet.
tests/mysql_client_test.c:
Add test case for Bug#36326
Diffstat (limited to 'sql/mysql_priv.h')
-rw-r--r-- | sql/mysql_priv.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 8a8513ac745..b855af9a8d3 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -651,6 +651,8 @@ struct Query_cache_query_flags unsigned int client_long_flag:1; unsigned int client_protocol_41:1; unsigned int more_results_exists:1; + unsigned int in_trans:1; + unsigned int autocommit:1; unsigned int pkt_nr; uint character_set_client_num; uint character_set_results_num; |