mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
Bug #13228 open table cache not flushed when table schema changed
- Close open unused handlers when a schema error occurs.
This commit is contained in:
parent
1938052ba6
commit
679b293a47
3 changed files with 132 additions and 0 deletions
42
mysql-test/r/ndb_alter_table2.result
Normal file
42
mysql-test/r/ndb_alter_table2.result
Normal file
|
@ -0,0 +1,42 @@
|
|||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1 (
|
||||
a INT NOT NULL PRIMARY KEY,
|
||||
b INT NOT NULL
|
||||
) ENGINE=ndbcluster;
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES (9410,9412);
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES (9411,9412);
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES (9412,9412);
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES (9413,9412);
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES (9414,9412);
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES (9415,9412);
|
||||
ROLLBACK;
|
||||
ROLLBACK;
|
||||
ROLLBACK;
|
||||
ROLLBACK;
|
||||
ROLLBACK;
|
||||
ROLLBACK;
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
a INT NOT NULL PRIMARY KEY,
|
||||
b INT NOT NULL,
|
||||
c INT NOT NULL
|
||||
) ENGINE=ndbcluster;
|
||||
select * from t1;
|
||||
ERROR HY000: Got error 241 'Invalid schema object version' from ndbcluster
|
||||
select * from t1;
|
||||
a b c
|
||||
select * from t1;
|
||||
a b c
|
||||
select * from t1;
|
||||
a b c
|
||||
select * from t1;
|
||||
a b c
|
||||
select * from t1;
|
||||
a b c
|
||||
drop table t1;
|
83
mysql-test/t/ndb_alter_table2.test
Normal file
83
mysql-test/t/ndb_alter_table2.test
Normal file
|
@ -0,0 +1,83 @@
|
|||
-- source include/have_ndb.inc
|
||||
-- source include/have_multi_ndb.inc
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
connect (con1,localhost,root,,test);
|
||||
connect (con2,localhost,root,,test);
|
||||
connect (con3,localhost,root,,test);
|
||||
connect (con4,localhost,root,,test);
|
||||
connect (con5,localhost,root,,test);
|
||||
connect (con6,localhost,root,,test);
|
||||
|
||||
CREATE TABLE t1 (
|
||||
a INT NOT NULL PRIMARY KEY,
|
||||
b INT NOT NULL
|
||||
) ENGINE=ndbcluster;
|
||||
|
||||
connection con1;
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES (9410,9412);
|
||||
connection con2;
|
||||
BEGIN;
|
||||
--send
|
||||
INSERT INTO t1 VALUES (9411,9412);
|
||||
connection con3;
|
||||
BEGIN;
|
||||
--send
|
||||
INSERT INTO t1 VALUES (9412,9412);
|
||||
connection con4;
|
||||
BEGIN;
|
||||
--send
|
||||
INSERT INTO t1 VALUES (9413,9412);
|
||||
connection con5;
|
||||
BEGIN;
|
||||
--send
|
||||
INSERT INTO t1 VALUES (9414,9412);
|
||||
connection con6;
|
||||
BEGIN;
|
||||
--send
|
||||
INSERT INTO t1 VALUES (9415,9412);
|
||||
connection con1;
|
||||
sleep 1;
|
||||
|
||||
ROLLBACK;
|
||||
connection con2;
|
||||
reap;
|
||||
ROLLBACK;
|
||||
connection con3;
|
||||
reap;
|
||||
ROLLBACK;
|
||||
connection con4;
|
||||
reap;
|
||||
ROLLBACK;
|
||||
connection con5;
|
||||
reap;
|
||||
ROLLBACK;
|
||||
connection con6;
|
||||
reap;
|
||||
ROLLBACK;
|
||||
|
||||
connection server2;
|
||||
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
a INT NOT NULL PRIMARY KEY,
|
||||
b INT NOT NULL,
|
||||
c INT NOT NULL
|
||||
) ENGINE=ndbcluster;
|
||||
|
||||
connection server1;
|
||||
|
||||
--error 1296
|
||||
select * from t1;
|
||||
select * from t1;
|
||||
select * from t1;
|
||||
select * from t1;
|
||||
select * from t1;
|
||||
select * from t1;
|
||||
|
||||
drop table t1;
|
|
@ -510,6 +510,13 @@ int ha_ndbcluster::ndb_err(NdbTransaction *trans)
|
|||
case NdbError::SchemaError:
|
||||
invalidate_dictionary_cache(TRUE);
|
||||
|
||||
/* Close other open handlers not used by any thread */
|
||||
TABLE_LIST table_list;
|
||||
bzero((char*) &table_list,sizeof(table_list));
|
||||
table_list.db= m_dbname;
|
||||
table_list.alias= table_list.table_name= m_tabname;
|
||||
close_cached_tables(current_thd, 0, &table_list);
|
||||
|
||||
if (err.code==284)
|
||||
{
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue