From 4c872f749bc6d437c9fc12bcf0798911c1092315 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 21 Oct 2005 13:14:54 +0500 Subject: [PATCH] fix for bug#14089 FROM list subquery always fails when information_schema is current database skip the check of I_S tables if table is derived table mysql-test/r/information_schema.result: fix for bug#14089 FROM list subquery always fails when information_schema is current database test case mysql-test/t/information_schema.test: fix for bug#14089 FROM list subquery always fails when information_schema is current database test case --- mysql-test/r/information_schema.result | 12 ++++++++++++ mysql-test/t/information_schema.test | 12 ++++++++++++ sql/sql_parse.cc | 4 ++-- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index 0d53180b6d6..9c3d6d40139 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -1013,3 +1013,15 @@ grant all on information_schema.* to 'user1'@'localhost'; ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema' grant select on information_schema.* to 'user1'@'localhost'; ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema' +use test; +create table t1(id int); +insert into t1(id) values (1); +select 1 from (select 1 from test.t1) a; +1 +1 +use information_schema; +select 1 from (select 1 from test.t1) a; +1 +1 +use test; +drop table t1; diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test index f351d315680..9fb57fc187b 100644 --- a/mysql-test/t/information_schema.test +++ b/mysql-test/t/information_schema.test @@ -715,3 +715,15 @@ select ROUTINE_NAME from routines; grant all on information_schema.* to 'user1'@'localhost'; --error 1044 grant select on information_schema.* to 'user1'@'localhost'; + +# +# Bug#14089 FROM list subquery always fails when information_schema is current database +# +use test; +create table t1(id int); +insert into t1(id) values (1); +select 1 from (select 1 from test.t1) a; +use information_schema; +select 1 from (select 1 from test.t1) a; +use test; +drop table t1; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 8ad7920a556..d0585dd1a65 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -6197,8 +6197,8 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd, ptr->force_index= test(table_options & TL_OPTION_FORCE_INDEX); ptr->ignore_leaves= test(table_options & TL_OPTION_IGNORE_LEAVES); ptr->derived= table->sel; - if (!my_strcasecmp(system_charset_info, ptr->db, - information_schema_name.str)) + if (!ptr->derived && !my_strcasecmp(system_charset_info, ptr->db, + information_schema_name.str)) { ST_SCHEMA_TABLE *schema_table= find_schema_table(thd, ptr->table_name); if (!schema_table ||