Commit d76be7ab authored by gluh@mysql.com's avatar gluh@mysql.com

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)
parent 82f4a0b0
...@@ -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 @@ send_result_message: ...@@ -2342,6 +2342,13 @@ send_result_message:
} }
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