summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbell@sanja.is.com.ua <>2003-02-27 22:26:09 +0200
committerbell@sanja.is.com.ua <>2003-02-27 22:26:09 +0200
commit4352b9953a334e70ecff8f6e71a513d9fa95c40e (patch)
tree1e5997ba2cebe6bd5f5e9e9e51c5391e480f1206
parentc37b62b79fb1a0cd3881f2d01e2abe4cb5adc98e (diff)
downloadmariadb-git-4352b9953a334e70ecff8f6e71a513d9fa95c40e.tar.gz
fixed SQL_SELECT option with UNIONs
-rw-r--r--mysql-test/r/query_cache.result11
-rw-r--r--mysql-test/t/query_cache.test5
-rw-r--r--sql/sql_cache.cc2
-rw-r--r--sql/sql_yacc.yy5
4 files changed, 16 insertions, 7 deletions
diff --git a/mysql-test/r/query_cache.result b/mysql-test/r/query_cache.result
index 41fccc2743c..74dee666e05 100644
--- a/mysql-test/r/query_cache.result
+++ b/mysql-test/r/query_cache.result
@@ -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";
diff --git a/mysql-test/t/query_cache.test b/mysql-test/t/query_cache.test
index dd092866e44..83c11978436 100644
--- a/mysql-test/t/query_cache.test
+++ b/mysql-test/t/query_cache.test
@@ -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;
diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc
index 64c62345182..ee62d7b16ed 100644
--- a/sql/sql_cache.cc
+++ b/sql/sql_cache.cc
@@ -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)
{
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 2f339f30eb4..0879995e733 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -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 {}
;