Commit 06deaf1c authored by unknown's avatar unknown

Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-4.1

into sanja.is.com.ua:/home/bell/mysql/bk/work-lower_case-4.1


sql/sql_parse.cc:
  Auto merged
parents c7fd1fa4 bdf49054
...@@ -42,3 +42,10 @@ select count(bags.a) from t1 as Bags; ...@@ -42,3 +42,10 @@ select count(bags.a) from t1 as Bags;
count(bags.a) count(bags.a)
0 0
drop table t1; drop table t1;
create table t1 (a int);
create table t2 (a int);
delete p1.*,P2.* from t1 as p1, t2 as p2 where p1.a=P2.a;
delete P1.*,p2.* from t1 as P1, t2 as P2 where P1.a=p2.a;
update t1 as p1, t2 as p2 SET p1.a=1,P2.a=1 where p1.a=P2.a;
update t1 as P1, t2 as P2 SET P1.a=1,p2.a=1 where P1.a=p2.a;
drop table t1,t2;
set GLOBAL query_cache_size=1355776;
drop database if exists MySQLtesT;
create database MySQLtesT;
create table MySQLtesT.t1 (a int);
select * from MySQLtesT.t1;
a
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
drop database mysqltest;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
use MySQL;
select * from db;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
use test;
select * from MySQL.db;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
set GLOBAL query_cache_size=0;
...@@ -30,3 +30,14 @@ select count(*) from t1; ...@@ -30,3 +30,14 @@ select count(*) from t1;
select count(T1.a) from t1; select count(T1.a) from t1;
select count(bags.a) from t1 as Bags; select count(bags.a) from t1 as Bags;
drop table t1; drop table t1;
#
# multiupdate/delete & --lower-case-table-names
#
create table t1 (a int);
create table t2 (a int);
delete p1.*,P2.* from t1 as p1, t2 as p2 where p1.a=P2.a;
delete P1.*,p2.* from t1 as P1, t2 as P2 where P1.a=p2.a;
update t1 as p1, t2 as p2 SET p1.a=1,P2.a=1 where p1.a=P2.a;
update t1 as P1, t2 as P2 SET P1.a=1,p2.a=1 where P1.a=p2.a;
drop table t1,t2;
-- source include/have_query_cache.inc
#
# Test of query cache with --lower-case-table-names
#
set GLOBAL query_cache_size=1355776;
--disable_warnings
drop database if exists MySQLtesT;
--enable_warnings
create database MySQLtesT;
create table MySQLtesT.t1 (a int);
select * from MySQLtesT.t1;
show status like "Qcache_queries_in_cache";
drop database mysqltest;
show status like "Qcache_queries_in_cache";
use MySQL;
disable_result_log;
select * from db;
enable_result_log;
show status like "Qcache_queries_in_cache";
use test;
disable_result_log;
select * from MySQL.db;
enable_result_log;
show status like "Qcache_queries_in_cache";
set GLOBAL query_cache_size=0;
\ No newline at end of file
...@@ -1228,7 +1228,12 @@ void Query_cache::invalidate(char *db) ...@@ -1228,7 +1228,12 @@ void Query_cache::invalidate(char *db)
do do
{ {
next= curr->next; next= curr->next;
if (strcmp(db, (char*)(curr->table()->db())) == 0) /*
table_alias_charset used here because it depends of
lower_case_table_names variable
*/
if (my_strcasecmp(table_alias_charset, db,
(char*)(curr->table()->db())) == 0)
invalidate_table(curr); invalidate_table(curr);
/* /*
invalidate_table can freed block on which point 'next' (if invalidate_table can freed block on which point 'next' (if
...@@ -2562,20 +2567,15 @@ TABLE_COUNTER_TYPE Query_cache::is_cacheable(THD *thd, uint32 query_len, ...@@ -2562,20 +2567,15 @@ TABLE_COUNTER_TYPE Query_cache::is_cacheable(THD *thd, uint32 query_len,
tables_used->db, tables_used->table->db_type)); tables_used->db, tables_used->table->db_type));
*tables_type|= tables_used->table->file->table_cache_type(); *tables_type|= tables_used->table->file->table_cache_type();
/*
table_alias_charset used here because it depends of
lower_case_table_names variable
*/
if (tables_used->table->db_type == DB_TYPE_MRG_ISAM || if (tables_used->table->db_type == DB_TYPE_MRG_ISAM ||
tables_used->table->tmp_table != NO_TMP_TABLE || tables_used->table->tmp_table != NO_TMP_TABLE ||
(tables_used->db_length == 5 && (tables_used->db_length == 5 &&
#ifdef FN_NO_CASE_SENCE my_strnncoll(table_alias_charset, (uchar*)tables_used->db, 6,
my_strnncoll(system_charset_info, (uchar*)tables_used->db, 6, (uchar*)"mysql",6) == 0))
(uchar*)"mysql",6) == 0
#else
tables_used->db[0]=='m' &&
tables_used->db[1]=='y' &&
tables_used->db[2]=='s' &&
tables_used->db[3]=='q' &&
tables_used->db[4]=='l'
#endif
))
{ {
DBUG_PRINT("qcache", DBUG_PRINT("qcache",
("select not cacheable: used MRG_ISAM, temporary or system table(s)")); ("select not cacheable: used MRG_ISAM, temporary or system table(s)"));
......
...@@ -2703,8 +2703,8 @@ mysql_execute_command(THD *thd) ...@@ -2703,8 +2703,8 @@ mysql_execute_command(THD *thd)
TABLE_LIST *walk; TABLE_LIST *walk;
for (walk= (TABLE_LIST*) tables; walk; walk= walk->next) for (walk= (TABLE_LIST*) tables; walk; walk= walk->next)
{ {
if (!strcmp(auxi->real_name, walk->alias) && if (!my_strcasecmp(table_alias_charset, auxi->alias, walk->alias) &&
!strcmp(walk->db, auxi->db)) !my_strcasecmp(table_alias_charset, walk->db, auxi->db))
break; break;
} }
if (!walk) if (!walk)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment