mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into bodhi.local:/opt/local/work/mysql-5.1-runtime-merge sql/sql_table.cc: Auto merged
This commit is contained in:
commit
a920f554db
3 changed files with 51 additions and 1 deletions
|
@ -12,3 +12,20 @@ about:text CREATE TABLE `about:text` (
|
|||
PRIMARY KEY (`_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table `about:text`;
|
||||
use test;
|
||||
drop table if exists t1;
|
||||
create table t1(a int) engine=myisam;
|
||||
insert into t1 values(1);
|
||||
"We get an error because the table is in the definition cache"
|
||||
create table t1(a int, b int);
|
||||
ERROR 42S01: Table 't1' already exists
|
||||
"Flush the cache and recreate the table anew to be able to drop it"
|
||||
flush tables;
|
||||
show open tables like "t%";
|
||||
Database Table In_use Name_locked
|
||||
create table t1(a int, b int, c int);
|
||||
"Try to select from the table. This should not crash the server"
|
||||
select count(a) from t1;
|
||||
count(a)
|
||||
0
|
||||
drop table t1;
|
||||
|
|
|
@ -18,3 +18,24 @@ show create table `about:text`;
|
|||
drop table `about:text`;
|
||||
|
||||
# End of 5.0 tests
|
||||
|
||||
#
|
||||
# Bug#16532:mysql server assert in debug if table det is removed
|
||||
#
|
||||
use test;
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
create table t1(a int) engine=myisam;
|
||||
insert into t1 values(1);
|
||||
--system rm -f $MYSQLTEST_VARDIR/master-data/test/t1.frm
|
||||
--echo "We get an error because the table is in the definition cache"
|
||||
--error ER_TABLE_EXISTS_ERROR
|
||||
create table t1(a int, b int);
|
||||
--echo "Flush the cache and recreate the table anew to be able to drop it"
|
||||
flush tables;
|
||||
show open tables like "t%";
|
||||
create table t1(a int, b int, c int);
|
||||
--echo "Try to select from the table. This should not crash the server"
|
||||
select count(a) from t1;
|
||||
drop table t1;
|
||||
|
|
|
@ -3321,7 +3321,19 @@ bool mysql_create_table_internal(THD *thd,
|
|||
my_error(ER_TABLE_EXISTS_ERROR,MYF(0),table_name);
|
||||
goto unlock_and_end;
|
||||
}
|
||||
DBUG_ASSERT(get_cached_table_share(db, alias) == 0);
|
||||
/*
|
||||
We don't assert here, but check the result, because the table could be
|
||||
in the table definition cache and in the same time the .frm could be
|
||||
missing from the disk, in case of manual intervention which deletes
|
||||
the .frm file. The user has to use FLUSH TABLES; to clear the cache.
|
||||
Then she could create the table. This case is pretty obscure and
|
||||
therefore we don't introduce a new error message only for it.
|
||||
*/
|
||||
if (get_cached_table_share(db, alias))
|
||||
{
|
||||
my_error(ER_TABLE_EXISTS_ERROR, MYF(0), table_name);
|
||||
goto unlock_and_end;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue