fixed SQL_SELECT option with UNIONs

This commit is contained in:
bell@sanja.is.com.ua 2003-02-27 22:26:09 +02:00
parent c37b62b79f
commit 4352b9953a
4 changed files with 16 additions and 7 deletions

View file

@ -237,13 +237,18 @@ a
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
select sql_cache * from t1;
select sql_cache * from t1 union select * from t1;
a
1
2
3
set query_cache_type=2;
select sql_cache * from t1;
select sql_cache * from t1 union select * from t1;
a
1
2
3
select * from t1 union select sql_cache * from t1;
a
1
2
@ -253,7 +258,7 @@ Variable_name Value
Qcache_hits 4
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
Qcache_queries_in_cache 2
set query_cache_type=on;
reset query cache;
show status like "Qcache_queries_in_cache";

View file

@ -144,9 +144,10 @@ create table t1 (a int not null);
insert into t1 values (1),(2),(3);
select * from t1;
show status like "Qcache_queries_in_cache";
select sql_cache * from t1;
select sql_cache * from t1 union select * from t1;
set query_cache_type=2;
select sql_cache * from t1;
select sql_cache * from t1 union select * from t1;
select * from t1 union select sql_cache * from t1;
show status like "Qcache_hits";
show status like "Qcache_queries_in_cache";
set query_cache_type=on;

View file

@ -2439,7 +2439,7 @@ TABLE_COUNTER_TYPE Query_cache::is_cacheable(THD *thd, uint32 query_len,
if (lex->sql_command == SQLCOM_SELECT &&
(thd->variables.query_cache_type == 1 ||
(thd->variables.query_cache_type == 2 && (lex->select->options &
(thd->variables.query_cache_type == 2 && (lex->select_lex.options &
OPTION_TO_QUERY_CACHE))) &&
thd->safe_to_cache_query)
{

View file

@ -1530,7 +1530,10 @@ select_option:
Select->options|= OPTION_FOUND_ROWS;
}
| SQL_NO_CACHE_SYM { current_thd->safe_to_cache_query=0; }
| SQL_CACHE_SYM { Select->options|= OPTION_TO_QUERY_CACHE; }
| SQL_CACHE_SYM
{
Lex->select_lex.options|= OPTION_TO_QUERY_CACHE;
}
| ALL {}
;