mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
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
This commit is contained in:
@ -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;
|
|||||||
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:
|
|||||||
}
|
}
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user