diff options
author | unknown <gluh@mysql.com> | 2005-05-07 12:21:48 +0000 |
---|---|---|
committer | unknown <gluh@mysql.com> | 2005-05-07 12:21:48 +0000 |
commit | 8ed5d70f6eac85e384127e0b346444e4930812d6 (patch) | |
tree | e171f4065ee957453c3df73f2e03da6c39dd277f | |
parent | 0228f897259751242398164dd4be6689146b8377 (diff) | |
parent | e4c24674433f699e8fa082abd3df0d13f5529e1f (diff) | |
download | mariadb-git-8ed5d70f6eac85e384127e0b346444e4930812d6.tar.gz |
Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/gluh/MySQL/Bugs/5.0.9897
sql/sql_table.cc:
Auto merged
-rw-r--r-- | mysql-test/r/check.result | 9 | ||||
-rw-r--r-- | mysql-test/t/check.test | 12 | ||||
-rw-r--r-- | sql/sql_table.cc | 7 |
3 files changed, 28 insertions, 0 deletions
diff --git a/mysql-test/r/check.result b/mysql-test/r/check.result index ecaa13642bd..4c565f4f1b1 100644 --- a/mysql-test/r/check.result +++ b/mysql-test/r/check.result @@ -5,3 +5,12 @@ insert into t1 values (200000); Table Op Msg_type Msg_text test.t1 check status OK 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; diff --git a/mysql-test/t/check.test b/mysql-test/t/check.test index bc61aea2d66..c502655818d 100644 --- a/mysql-test/t/check.test +++ b/mysql-test/t/check.test @@ -22,3 +22,15 @@ connection con1; reap; 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; diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 6fcde27b537..bbe7c53147b 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -2344,6 +2344,13 @@ send_result_message: } close_thread_tables(thd); 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()) goto err; } |