Commit 2061a3a6 authored by unknown's avatar unknown
Browse files

We should not skip temptable view along with other derived

tables during query tables registration. (BUG#15119)


mysql-test/r/view_query_cache.result:
  Tests for temptable views in the query cache.
mysql-test/t/view_query_cache.test:
  Tests for temptable views in the query cache.
sql/sql_cache.cc:
  We should not skip temptable view along with other derived
  tables during query tables registration.
parent a6e90ad9
Loading
Loading
Loading
Loading
+61 −0
Original line number Diff line number Diff line
@@ -132,4 +132,65 @@ unlock tables;
set query_cache_wlock_invalidate=default;
drop view v1;
drop table t1;
flush status;
create table t1 (a int, b int);
create algorithm=temptable view v1 as select * from t1;
select * from v1;
a	b
show status like "Qcache_queries_in_cache";
Variable_name	Value
Qcache_queries_in_cache	1
show status like "Qcache_inserts";
Variable_name	Value
Qcache_inserts	1
show status like "Qcache_hits";
Variable_name	Value
Qcache_hits	0
select * from v1;
a	b
show status like "Qcache_queries_in_cache";
Variable_name	Value
Qcache_queries_in_cache	1
show status like "Qcache_inserts";
Variable_name	Value
Qcache_inserts	1
show status like "Qcache_hits";
Variable_name	Value
Qcache_hits	1
insert into t1 values (1,1);
show status like "Qcache_queries_in_cache";
Variable_name	Value
Qcache_queries_in_cache	0
show status like "Qcache_inserts";
Variable_name	Value
Qcache_inserts	1
show status like "Qcache_hits";
Variable_name	Value
Qcache_hits	1
select * from v1;
a	b
1	1
select * from v1;
a	b
1	1
show status like "Qcache_queries_in_cache";
Variable_name	Value
Qcache_queries_in_cache	1
show status like "Qcache_inserts";
Variable_name	Value
Qcache_inserts	2
show status like "Qcache_hits";
Variable_name	Value
Qcache_hits	2
drop view v1;
show status like "Qcache_queries_in_cache";
Variable_name	Value
Qcache_queries_in_cache	0
show status like "Qcache_inserts";
Variable_name	Value
Qcache_inserts	2
show status like "Qcache_hits";
Variable_name	Value
Qcache_hits	2
drop table t1;
set GLOBAL query_cache_size=default;
+31 −0
Original line number Diff line number Diff line
@@ -96,4 +96,35 @@ unlock tables;
set query_cache_wlock_invalidate=default;
drop view v1;
drop table t1;

#
# BUG#15119: returning temptable view from the query cache.
#
flush status;
create table t1 (a int, b int);
create algorithm=temptable view v1 as select * from t1;
select * from v1;
show status like "Qcache_queries_in_cache";
show status like "Qcache_inserts";
show status like "Qcache_hits";
select * from v1;
show status like "Qcache_queries_in_cache";
show status like "Qcache_inserts";
show status like "Qcache_hits";
insert into t1 values (1,1);
show status like "Qcache_queries_in_cache";
show status like "Qcache_inserts";
show status like "Qcache_hits";
select * from v1;
select * from v1;
show status like "Qcache_queries_in_cache";
show status like "Qcache_inserts";
show status like "Qcache_hits";
drop view v1;
show status like "Qcache_queries_in_cache";
show status like "Qcache_inserts";
show status like "Qcache_hits";
drop table t1;

# Reset default environment.
set GLOBAL query_cache_size=default;
+1 −1
Original line number Diff line number Diff line
@@ -2184,7 +2184,7 @@ Query_cache::register_tables_from_list(TABLE_LIST *tables_used,
       tables_used;
       tables_used= tables_used->next_global, n++, block_table++)
  {
    if (tables_used->derived)
    if (tables_used->derived && !tables_used->view)
    {
      DBUG_PRINT("qcache", ("derived table skipped"));
      n--;