discover of table non-existance on drop

This commit is contained in:
Sergei Golubchik 2013-04-09 16:06:54 +02:00
parent e06cb31719
commit 474f45b3dc
3 changed files with 28 additions and 3 deletions

View File

@ -76,9 +76,19 @@ t1 CREATE TABLE `t1` (
# discover on drop
#
flush tables;
drop table t0, t1;
drop table t1;
show tables;
Tables_in_test
t0
#
# discover of table non-existance on drop
#
select * from t0;
a
flush tables;
select * from t1;
ERROR 42S02: Table 'test.t1' doesn't exist
drop table t0;
#
# Bug#45377: ARCHIVE tables aren't discoverable after OPTIMIZE
#

View File

@ -62,9 +62,19 @@ show create table t1;
--echo #
remove_file $mysqld_datadir/test/t1.frm;
flush tables;
drop table t0, t1;
drop table t1;
show tables;
--echo #
--echo # discover of table non-existance on drop
--echo #
select * from t0;
remove_file $mysqld_datadir/test/t0.ARZ;
flush tables;
--error ER_NO_SUCH_TABLE
select * from t1;
drop table t0;
--echo #
--echo # Bug#45377: ARCHIVE tables aren't discoverable after OPTIMIZE
--echo #

View File

@ -3448,9 +3448,14 @@ int handler::delete_table(const char *name)
{
int saved_error= 0;
int error= 0;
int enoent_or_zero= ENOENT; // Error if no file was deleted
int enoent_or_zero;
char buff[FN_REFLEN];
if (ht->discover_table)
enoent_or_zero= 0; // the table may not exist in the engine, it's ok
else
enoent_or_zero= ENOENT; // the first file of bas_ext() *must* exist
for (const char **ext=bas_ext(); *ext ; ext++)
{
fn_format(buff, name, "", *ext, MY_UNPACK_FILENAME|MY_APPEND_EXT);