Commit e4c24674 authored by unknown's avatar unknown

Fix for bug#9897: Views: 'Check Table' crashes MySQL, with a view and a table in the statement

   thd->lex->derived_tables should be zero(it may be changed if we open a view)


mysql-test/r/check.result:
  Fix for bug#9897: Views: 'Check Table' crashes MySQL, with a view and a table in the statement
mysql-test/t/check.test:
  Fix for bug#9897: Views: 'Check Table' crashes MySQL, with a view and a table in the statement
sql/sql_table.cc:
  Fix for bug#9897: Views: 'Check Table' crashes MySQL, with a view and a table in the statement
parent 0430cdb7
...@@ -5,3 +5,12 @@ insert into t1 values (200000); ...@@ -5,3 +5,12 @@ insert into t1 values (200000);
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t1 check status OK test.t1 check status OK
drop table t1; drop table t1;
Create table t1(f1 int);
Create table t2(f1 int);
Create view v1 as Select * from t1;
Check Table v1,t2;
Table Op Msg_type Msg_text
test.v1 check status OK
test.t2 check status OK
drop view v1;
drop table t1, t2;
...@@ -22,3 +22,15 @@ connection con1; ...@@ -22,3 +22,15 @@ connection con1;
reap; reap;
drop table t1; drop table t1;
#
# Bug #9897 Views: 'Check Table' crashes MySQL, with a view and a table
# in the statement
#
connection default;
Create table t1(f1 int);
Create table t2(f1 int);
Create view v1 as Select * from t1;
Check Table v1,t2;
drop view v1;
drop table t1, t2;
...@@ -2342,6 +2342,13 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables, ...@@ -2342,6 +2342,13 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
} }
close_thread_tables(thd); close_thread_tables(thd);
table->table=0; // For query cache table->table=0; // For query cache
/*
thd->lex->derived_tables may be set to non zero value if we open
a view. It is necessary to clear thd->lex->derived_tables flag
to prevent processing of derived tables during next open_and_lock_tables
if next table is a real table.
*/
thd->lex->derived_tables= 0;
if (protocol->write()) if (protocol->write())
goto err; goto err;
} }
......
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