Commit e4c24674 authored by unknown's avatar unknown
Browse files

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
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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;
+12 −0
Original line number Diff line number Diff line
@@ -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;
+7 −0
Original line number Diff line number Diff line
@@ -2342,6 +2342,13 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
    }
    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;
  }