summaryrefslogtreecommitdiff
path: root/mysql-test/r/flush_table.result
diff options
context:
space:
mode:
authorunknown <ingo@mysql.com>2004-06-24 15:06:56 +0200
committerunknown <ingo@mysql.com>2004-06-24 15:06:56 +0200
commit8f6664c59a147469cd7abba8440ae43fc221b054 (patch)
tree3e35aa94e3031d9c40bbf2f3b31a48fb7979516e /mysql-test/r/flush_table.result
parentc0edb2e0ceed434c2209e5e7083fb512f25f5433 (diff)
downloadmariadb-git-8f6664c59a147469cd7abba8440ae43fc221b054.tar.gz
bug#3565 - HANDLER and FLUSH TABLE/TABLES deadlock.
Redesigned the handler close functions so that they are usable at different places where waiting for closing tables is done. mysql-test/r/flush_table.result: bug#3565 - HANDLER and FLUSH TABLE/TABLES deadlock. Added the test results. mysql-test/t/flush_table.test: bug#3565 - HANDLER and FLUSH TABLE/TABLES deadlock. Activated old test case. Added new test cases. sql/mysql_priv.h: bug#3565 - HANDLER and FLUSH TABLE/TABLES deadlock. Made mysql_ha_close() more flexible. Removed mysql_ha_closeall(), which closed only one table despite its name. Added mysql_ha_close_list(), which closes the complete list or all tables and does not lock. Removed a duplicate declaration. sql/sql_base.cc: bug#3565 - HANDLER and FLUSH TABLE/TABLES deadlock. Added proper close calls before some wait points to avoid deadlocks or infinite loops. sql/sql_handler.cc: bug#3565 - HANDLER and FLUSH TABLE/TABLES deadlock. Redesigned the internal function find_table_ptr_by_name(). It can now suppress locking and tells if the requested table has been flushed by itself. Extended mysql_ha_close() so that it can now suppres locking and error reporting. That way it can be used at more places and the old function mysql_ha_closeall() is now obsolete. Added a new function mysql_ha_close_list() which closes a whole list of HANDLER tables or all HANDLER tables, if the list is NULL. Furthermore is can close all 'old' (marked for flush) HANDLER tables. sql/sql_table.cc: bug#3565 - HANDLER and FLUSH TABLE/TABLES deadlock. Replaced the obsolte mysql_ha_closeall() by the new mysql_ha_close().
Diffstat (limited to 'mysql-test/r/flush_table.result')
-rw-r--r--mysql-test/r/flush_table.result120
1 files changed, 120 insertions, 0 deletions
diff --git a/mysql-test/r/flush_table.result b/mysql-test/r/flush_table.result
new file mode 100644
index 00000000000..cfba428e2e8
--- /dev/null
+++ b/mysql-test/r/flush_table.result
@@ -0,0 +1,120 @@
+drop table if exists t1;
+create table t1 (a int not null auto_increment primary key);
+insert into t1 values(0);
+lock table t1 read;
+flush table t1;
+check table t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+drop table t1;
+drop database if exists test_test;
+create database test_test;
+use test_test;
+create table t1(table_id char(20) primary key);
+insert into t1 values ('test_test.t1');
+insert into t1 values ('');
+handler t1 open;
+handler t1 read first limit 9;
+table_id
+test_test.t1
+
+create table t2(table_id char(20) primary key);
+insert into t2 values ('test_test.t2');
+insert into t2 values ('');
+handler t2 open;
+handler t2 read first limit 9;
+table_id
+test_test.t2
+
+use test;
+drop table if exists t1;
+create table t1(table_id char(20) primary key);
+insert into t1 values ('test.t1');
+insert into t1 values ('');
+handler t1 open;
+handler t1 read first limit 9;
+table_id
+test.t1
+
+use test;
+handler test.t1 read first limit 9;
+table_id
+test.t1
+
+handler test.t2 read first limit 9;
+Unknown table 't2' in HANDLER
+handler test_test.t1 read first limit 9;
+table_id
+test_test.t1
+
+handler test_test.t2 read first limit 9;
+table_id
+test_test.t2
+
+handler test_test.t1 close;
+drop table test_test.t1;
+handler test_test.t2 close;
+drop table test_test.t2;
+drop database test_test;
+use test;
+handler test.t1 close;
+drop table test.t1;
+drop table if exists t1;
+drop table if exists t2;
+create table t1(table_id char(20) primary key);
+create table t2(table_id char(20) primary key);
+insert into t1 values ('test.t1');
+insert into t1 values ('');
+insert into t2 values ('test.t2');
+insert into t2 values ('');
+handler t1 open as a1;
+handler t1 open as a2;
+handler t2 open;
+handler a1 read first limit 9;
+table_id
+test.t1
+
+handler a2 read first limit 9;
+table_id
+test.t1
+
+handler t2 read first limit 9;
+table_id
+test.t2
+
+flush tables;
+handler a1 read first limit 9;
+Unknown table 'a1' in HANDLER
+handler a2 read first limit 9;
+Unknown table 'a2' in HANDLER
+handler t2 read first limit 9;
+Unknown table 't2' in HANDLER
+handler t1 open as a1;
+handler t1 open as a2;
+handler t2 open;
+handler a1 read first limit 9;
+table_id
+test.t1
+
+handler a2 read first limit 9;
+table_id
+test.t1
+
+handler t2 read first limit 9;
+table_id
+test.t2
+
+flush table t1;
+handler a1 read first limit 9;
+Unknown table 'a1' in HANDLER
+handler a2 read first limit 9;
+Unknown table 'a2' in HANDLER
+handler t2 read first limit 9;
+table_id
+test.t2
+
+flush table t2;
+handler t2 close;
+Unknown table 't2' in HANDLER
+drop table t1;
+drop table t2;