Permalink
Show file tree
Hide file tree
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
MDEV-16087 Inconsistent SELECT results when query cache is enabled
The following conditions will decide the query cache retrieval or
storing inside innodb:
(1) There should not be any locks on the table.
(2) Some other trx shouldn't invalidated the cache before the
transaction started.
(3) Read view shouldn't exist. If exists then the view
low_limit_id should be greater than or equal to the transaction that
invalidates the cache for the particular table.
For read-only transaction: should satisfy the above (1) and (3)
For read-write transaction: should satisfy the above (1), (2), (3).
- Changed the variable from query_cache_inv_id to query_cache_inv_trx_id.
- Moved the function row_search_check_if_query_cache_permitted from
row0sel.h and made it as static function in ha_innodb.cc- Loading branch information
1 parent
352c7e0
commit eb77f8c
Showing
7 changed files
with
167 additions
and
68 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,39 @@ | ||
| # | ||
| # MDEV-16087 Inconsistent SELECT results when query cache is enabled | ||
| # | ||
| set GLOBAL query_cache_type=ON; | ||
| set LOCAL query_cache_type=ON; | ||
| create table t1 (id bigint(20) auto_increment, primary key (id)) ENGINE=InnoDB; | ||
| create table t2 (id bigint(20) auto_increment, primary key (id)) ENGINE=InnoDB; | ||
| create table t3 (id bigint(20) auto_increment, primary key (id)) ENGINE=InnoDB; | ||
| connect con1,localhost,root; | ||
| START TRANSACTION WITH CONSISTENT SNAPSHOT; | ||
| select * from t2; | ||
| id | ||
| connection default; | ||
| insert into t3 () values (); | ||
| connection con1; | ||
| insert into t1 () values (); | ||
| select * from t3; | ||
| id | ||
| connect con2,localhost,root; | ||
| START TRANSACTION WITH CONSISTENT SNAPSHOT; | ||
| select * from t3; | ||
| id | ||
| 1 | ||
| select * from t3; | ||
| id | ||
| 1 | ||
| select sql_no_cache * from t3; | ||
| id | ||
| 1 | ||
| rollback; | ||
| connection con1; | ||
| rollback; | ||
| disconnect con1; | ||
| disconnect con2; | ||
| connection default; | ||
| drop table t1; | ||
| drop table t2; | ||
| drop table t3; | ||
| set GLOBAL query_cache_type=default; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,47 @@ | ||
| -- source include/have_innodb.inc | ||
| -- source include/have_query_cache.inc | ||
| -- source include/not_embedded.inc | ||
|
|
||
| --echo # | ||
| --echo # MDEV-16087 Inconsistent SELECT results when query cache is enabled | ||
| --echo # | ||
|
|
||
| set GLOBAL query_cache_type=ON; | ||
| set LOCAL query_cache_type=ON; | ||
|
|
||
| create table t1 (id bigint(20) auto_increment, primary key (id)) ENGINE=InnoDB; | ||
| create table t2 (id bigint(20) auto_increment, primary key (id)) ENGINE=InnoDB; | ||
| create table t3 (id bigint(20) auto_increment, primary key (id)) ENGINE=InnoDB; | ||
|
|
||
| connect (con1,localhost,root); | ||
| START TRANSACTION WITH CONSISTENT SNAPSHOT; | ||
| select * from t2; | ||
|
|
||
| connection default; | ||
| insert into t3 () values (); | ||
|
|
||
| connection con1; | ||
| insert into t1 () values (); | ||
| select * from t3; | ||
|
|
||
| connect (con2,localhost,root); | ||
| START TRANSACTION WITH CONSISTENT SNAPSHOT; | ||
| select * from t3; | ||
| select * from t3; | ||
| select sql_no_cache * from t3; | ||
|
|
||
| rollback; | ||
|
|
||
| connection con1; | ||
|
|
||
| rollback; | ||
|
|
||
| disconnect con1; | ||
| disconnect con2; | ||
| connection default; | ||
|
|
||
| drop table t1; | ||
| drop table t2; | ||
| drop table t3; | ||
|
|
||
| set GLOBAL query_cache_type=default; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters