Loading mysql-test/r/flush_table.result +43 −58 Original line number Diff line number Diff line Loading @@ -7,58 +7,6 @@ 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); Loading @@ -84,14 +32,23 @@ test.t2 flush tables; handler a1 read first limit 9; Unknown table 'a1' in HANDLER table_id test.t1 handler a2 read first limit 9; Unknown table 'a2' in HANDLER table_id test.t1 handler t2 read first limit 9; Unknown table 't2' in HANDLER table_id test.t2 handler t1 open as a1; Not unique table/alias: 'a1' handler t1 open as a2; Not unique table/alias: 'a2' handler t2 open; Not unique table/alias: 't2' handler a1 read first limit 9; table_id test.t1 Loading @@ -106,15 +63,43 @@ test.t2 flush table t1; handler a1 read first limit 9; Unknown table 'a1' in HANDLER table_id test.t1 handler a2 read first limit 9; Unknown table 'a2' in HANDLER table_id test.t1 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; create table t1(table_id char(20) primary key); insert into t1 values ('Record-01'); insert into t1 values ('Record-02'); insert into t1 values ('Record-03'); insert into t1 values ('Record-04'); insert into t1 values ('Record-05'); handler t1 open; handler t1 read first limit 1; table_id Record-01 handler t1 read next limit 1; table_id Record-02 handler t1 read next limit 1; table_id Record-03 flush table t1; handler t1 read next limit 1; table_id Record-01 handler t1 read next limit 1; table_id Record-02 handler t1 close; drop table t1; mysql-test/r/handler.result +244 −0 Original line number Diff line number Diff line Loading @@ -203,3 +203,247 @@ handler t1 read a=(1) where b=1; a b handler t1 close; 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; Not unique table/alias: 't1' use test; handler test.t1 read first limit 9; Unknown table 'test.t1' in HANDLER handler test_test.t1 read first limit 9; table_id test_test.t1 handler t1 read first limit 9; table_id test_test.t1 handler test_test.t2 read first limit 9; table_id test_test.t2 handler t2 read first limit 9; table_id test_test.t2 handler test_test.t1 close; handler t1 close; Unknown table 't1' in HANDLER drop table test_test.t1; handler test_test.t2 close; handler t2 close; Unknown table 't2' in HANDLER drop table test_test.t2; drop database test_test; use test; handler test.t1 close; Unknown table 'test.t1' in HANDLER handler t1 close; Unknown table 't1' in HANDLER drop table test.t1; drop database if exists test_test; drop table if exists t1; drop table if exists t2; drop table if exists t3; create database test_test; use test_test; create table t1 (c1 char(20)); insert into t1 values ('test_test.t1'); create table t3 (c1 char(20)); insert into t3 values ('test_test.t3'); handler t1 open; handler t1 read first limit 9; c1 test_test.t1 handler t1 open h1; handler h1 read first limit 9; c1 test_test.t1 use test; create table t1 (c1 char(20)); create table t2 (c1 char(20)); create table t3 (c1 char(20)); insert into t1 values ('t1'); insert into t2 values ('t2'); insert into t3 values ('t3'); handler t1 open; Not unique table/alias: 't1' handler t2 open t1; Not unique table/alias: 't1' handler t3 open t1; Not unique table/alias: 't1' handler t1 read first limit 9; c1 test_test.t1 handler test.t1 close; Unknown table 'test.t1' in HANDLER handler test.t1 open h1; Not unique table/alias: 'h1' handler test_test.t1 open h1; Not unique table/alias: 'h1' handler test_test.t3 open h3; handler test.t1 open h2; handler t1 read first limit 9; c1 test_test.t1 handler h1 read first limit 9; c1 test_test.t1 handler h2 read first limit 9; c1 t1 handler h3 read first limit 9; c1 test_test.t3 handler test.h2 read first limit 9; c1 t1 handler test.h1 close; Unknown table 'test.h1' in HANDLER handler test_test.t1 close; handler test_test.h1 close; handler h2 close; handler t1 read first limit 9; Unknown table 't1' in HANDLER handler h1 read first limit 9; Unknown table 'h1' in HANDLER handler h2 read first limit 9; Unknown table 'h2' in HANDLER handler h3 read first limit 9; c1 test_test.t3 handler test_test.h3 read first limit 9; c1 test_test.t3 use test_test; handler h3 read first limit 9; c1 test_test.t3 handler test.h3 read first limit 9; Unknown table 'test.h3' in HANDLER handler test_test.h3 close; use test; drop table t3; drop table t2; drop table t1; drop database test_test; create table t1 (c1 char(20)); insert into t1 values ("t1"); handler t1 open as h1; handler h1 read first limit 9; c1 t1 create table t2 (c1 char(20)); insert into t2 values ("t2"); handler t2 open as h2; handler h2 read first limit 9; c1 t2 create table t3 (c1 char(20)); insert into t3 values ("t3"); handler t3 open as h3; handler h3 read first limit 9; c1 t3 create table t4 (c1 char(20)); insert into t4 values ("t4"); handler t4 open as h4; handler h4 read first limit 9; c1 t4 create table t5 (c1 char(20)); insert into t5 values ("t5"); handler t5 open as h5; handler h5 read first limit 9; c1 t5 alter table t1 engine=MyISAM; handler h1 read first limit 9; Unknown table 'h1' in HANDLER handler h2 read first limit 9; c1 t2 handler h3 read first limit 9; c1 t3 handler h4 read first limit 9; c1 t4 handler h5 read first limit 9; c1 t5 alter table t5 engine=MyISAM; handler h1 read first limit 9; Unknown table 'h1' in HANDLER handler h2 read first limit 9; c1 t2 handler h3 read first limit 9; c1 t3 handler h4 read first limit 9; c1 t4 handler h5 read first limit 9; Unknown table 'h5' in HANDLER alter table t3 engine=MyISAM; handler h1 read first limit 9; Unknown table 'h1' in HANDLER handler h2 read first limit 9; c1 t2 handler h3 read first limit 9; Unknown table 'h3' in HANDLER handler h4 read first limit 9; c1 t4 handler h5 read first limit 9; Unknown table 'h5' in HANDLER handler h2 close; handler h4 close; handler t1 open as h1_1; handler t1 open as h1_2; handler t1 open as h1_3; handler h1_1 read first limit 9; c1 t1 handler h1_2 read first limit 9; c1 t1 handler h1_3 read first limit 9; c1 t1 alter table t1 engine=MyISAM; handler h1_1 read first limit 9; Unknown table 'h1_1' in HANDLER handler h1_2 read first limit 9; Unknown table 'h1_2' in HANDLER handler h1_3 read first limit 9; Unknown table 'h1_3' in HANDLER drop table t1; drop table t2; drop table t3; drop table t4; drop table t5; mysql-test/t/flush_table.test +23 −61 Original line number Diff line number Diff line Loading @@ -12,63 +12,10 @@ flush table t1; check table t1; drop table t1; # # Check if two database names beginning the same are seen as different. # # This database begins like the usual 'test' database. # --disable_warnings drop database if exists test_test; --enable_warnings 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; 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; # # This is the usual 'test' database. # use test; --disable_warnings drop table if exists t1; --enable_warnings 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; # # Check accesibility of all the tables. # use test; handler test.t1 read first limit 9; --error 1109; handler test.t2 read first limit 9; handler test_test.t1 read first limit 9; handler test_test.t2 read first limit 9; # # Cleanup. # 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; # # In the following test FLUSH TABLES produces a deadlock # (hang forever) if the fix for bug#3565 is missing. # (hang forever) if the fix for BUG #3565 is missing. # And it shows that handler tables are re-opened after flush (BUG #4286). # --disable_warnings drop table if exists t1; Loading @@ -87,28 +34,43 @@ handler a1 read first limit 9; handler a2 read first limit 9; handler t2 read first limit 9; flush tables; --error 1109; handler a1 read first limit 9; --error 1109; handler a2 read first limit 9; --error 1109; handler t2 read first limit 9; # --error 1066 handler t1 open as a1; --error 1066 handler t1 open as a2; --error 1066 handler t2 open; handler a1 read first limit 9; handler a2 read first limit 9; handler t2 read first limit 9; flush table t1; --error 1109; handler a1 read first limit 9; --error 1109; handler a2 read first limit 9; handler t2 read first limit 9; flush table t2; --error 1109; handler t2 close; drop table t1; drop table t2; # # The fix for BUG #4286 cannot restore the position after a flush. # create table t1(table_id char(20) primary key); insert into t1 values ('Record-01'); insert into t1 values ('Record-02'); insert into t1 values ('Record-03'); insert into t1 values ('Record-04'); insert into t1 values ('Record-05'); handler t1 open; handler t1 read first limit 1; handler t1 read next limit 1; handler t1 read next limit 1; flush table t1; handler t1 read next limit 1; handler t1 read next limit 1; handler t1 close; drop table t1; mysql-test/t/handler.test +204 −0 Original line number Diff line number Diff line Loading @@ -135,3 +135,207 @@ handler t1 read a=(1) where b=1; handler t1 close; drop table t1; # # Check if two database names beginning the same are seen as different. # # This database begins like the usual 'test' database. # --disable_warnings drop database if exists test_test; --enable_warnings 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; 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; # # This is the usual 'test' database. # use test; --disable_warnings drop table if exists t1; --enable_warnings create table t1(table_id char(20) primary key); insert into t1 values ('test.t1'); insert into t1 values (''); --error 1066 handler t1 open; # # Check accesibility of all the tables. # use test; --error 1109; handler test.t1 read first limit 9; handler test_test.t1 read first limit 9; handler t1 read first limit 9; handler test_test.t2 read first limit 9; handler t2 read first limit 9; # # Cleanup. # handler test_test.t1 close; --error 1109; handler t1 close; drop table test_test.t1; handler test_test.t2 close; --error 1109; handler t2 close; drop table test_test.t2; drop database test_test; # use test; --error 1109; handler test.t1 close; --error 1109; handler t1 close; drop table test.t1; # # BUG#4335 # --disable_warnings drop database if exists test_test; drop table if exists t1; drop table if exists t2; drop table if exists t3; --enable_warnings create database test_test; use test_test; create table t1 (c1 char(20)); insert into t1 values ('test_test.t1'); create table t3 (c1 char(20)); insert into t3 values ('test_test.t3'); handler t1 open; handler t1 read first limit 9; handler t1 open h1; handler h1 read first limit 9; use test; create table t1 (c1 char(20)); create table t2 (c1 char(20)); create table t3 (c1 char(20)); insert into t1 values ('t1'); insert into t2 values ('t2'); insert into t3 values ('t3'); --error 1066 handler t1 open; --error 1066 handler t2 open t1; --error 1066 handler t3 open t1; handler t1 read first limit 9; --error 1109 handler test.t1 close; --error 1066 handler test.t1 open h1; --error 1066 handler test_test.t1 open h1; handler test_test.t3 open h3; handler test.t1 open h2; handler t1 read first limit 9; handler h1 read first limit 9; handler h2 read first limit 9; handler h3 read first limit 9; handler test.h2 read first limit 9; --error 1109 handler test.h1 close; handler test_test.t1 close; handler test_test.h1 close; handler h2 close; --error 1109 handler t1 read first limit 9; --error 1109 handler h1 read first limit 9; --error 1109 handler h2 read first limit 9; handler h3 read first limit 9; handler test_test.h3 read first limit 9; use test_test; handler h3 read first limit 9; --error 1109 handler test.h3 read first limit 9; handler test_test.h3 close; use test; drop table t3; drop table t2; drop table t1; drop database test_test; # # Test if fix for BUG#4286 correctly closes handler tables. # create table t1 (c1 char(20)); insert into t1 values ("t1"); handler t1 open as h1; handler h1 read first limit 9; create table t2 (c1 char(20)); insert into t2 values ("t2"); handler t2 open as h2; handler h2 read first limit 9; create table t3 (c1 char(20)); insert into t3 values ("t3"); handler t3 open as h3; handler h3 read first limit 9; create table t4 (c1 char(20)); insert into t4 values ("t4"); handler t4 open as h4; handler h4 read first limit 9; create table t5 (c1 char(20)); insert into t5 values ("t5"); handler t5 open as h5; handler h5 read first limit 9; # close first alter table t1 engine=MyISAM; --error 1109; handler h1 read first limit 9; handler h2 read first limit 9; handler h3 read first limit 9; handler h4 read first limit 9; handler h5 read first limit 9; # close last alter table t5 engine=MyISAM; --error 1109; handler h1 read first limit 9; handler h2 read first limit 9; handler h3 read first limit 9; handler h4 read first limit 9; --error 1109; handler h5 read first limit 9; # close middle alter table t3 engine=MyISAM; --error 1109; handler h1 read first limit 9; handler h2 read first limit 9; --error 1109; handler h3 read first limit 9; handler h4 read first limit 9; --error 1109; handler h5 read first limit 9; handler h2 close; handler h4 close; # close all depending handler tables handler t1 open as h1_1; handler t1 open as h1_2; handler t1 open as h1_3; handler h1_1 read first limit 9; handler h1_2 read first limit 9; handler h1_3 read first limit 9; alter table t1 engine=MyISAM; --error 1109; handler h1_1 read first limit 9; --error 1109; handler h1_2 read first limit 9; --error 1109; handler h1_3 read first limit 9; drop table t1; drop table t2; drop table t3; drop table t4; drop table t5; sql/mysql_priv.h +7 −4 Original line number Diff line number Diff line Loading @@ -540,12 +540,15 @@ int mysql_find_files(THD *thd,List<char> *files, const char *db, const char *path, const char *wild, bool dir); /* sql_handler.cc */ int mysql_ha_open(THD *thd, TABLE_LIST *tables); int mysql_ha_close(THD *thd, TABLE_LIST *tables, bool dont_send_ok=0, bool dont_lock=0, bool no_alias=0); int mysql_ha_close_list(THD *thd, TABLE_LIST *tables, bool flushed=0); int mysql_ha_open(THD *thd, TABLE_LIST *tables, bool reopen= 0); int mysql_ha_close(THD *thd, TABLE_LIST *tables); int mysql_ha_read(THD *, TABLE_LIST *,enum enum_ha_read_modes,char *, List<Item> *,enum ha_rkey_function,Item *,ha_rows,ha_rows); int mysql_ha_flush(THD *thd, TABLE_LIST *tables, int mode_flags); /* mysql_ha_flush mode_flags bits */ #define MYSQL_HA_CLOSE_FINAL 0x00 #define MYSQL_HA_REOPEN_ON_USAGE 0x01 #define MYSQL_HA_FLUSH_ALL 0x02 /* sql_base.cc */ void set_item_name(Item *item,char *pos,uint length); Loading Loading
mysql-test/r/flush_table.result +43 −58 Original line number Diff line number Diff line Loading @@ -7,58 +7,6 @@ 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); Loading @@ -84,14 +32,23 @@ test.t2 flush tables; handler a1 read first limit 9; Unknown table 'a1' in HANDLER table_id test.t1 handler a2 read first limit 9; Unknown table 'a2' in HANDLER table_id test.t1 handler t2 read first limit 9; Unknown table 't2' in HANDLER table_id test.t2 handler t1 open as a1; Not unique table/alias: 'a1' handler t1 open as a2; Not unique table/alias: 'a2' handler t2 open; Not unique table/alias: 't2' handler a1 read first limit 9; table_id test.t1 Loading @@ -106,15 +63,43 @@ test.t2 flush table t1; handler a1 read first limit 9; Unknown table 'a1' in HANDLER table_id test.t1 handler a2 read first limit 9; Unknown table 'a2' in HANDLER table_id test.t1 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; create table t1(table_id char(20) primary key); insert into t1 values ('Record-01'); insert into t1 values ('Record-02'); insert into t1 values ('Record-03'); insert into t1 values ('Record-04'); insert into t1 values ('Record-05'); handler t1 open; handler t1 read first limit 1; table_id Record-01 handler t1 read next limit 1; table_id Record-02 handler t1 read next limit 1; table_id Record-03 flush table t1; handler t1 read next limit 1; table_id Record-01 handler t1 read next limit 1; table_id Record-02 handler t1 close; drop table t1;
mysql-test/r/handler.result +244 −0 Original line number Diff line number Diff line Loading @@ -203,3 +203,247 @@ handler t1 read a=(1) where b=1; a b handler t1 close; 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; Not unique table/alias: 't1' use test; handler test.t1 read first limit 9; Unknown table 'test.t1' in HANDLER handler test_test.t1 read first limit 9; table_id test_test.t1 handler t1 read first limit 9; table_id test_test.t1 handler test_test.t2 read first limit 9; table_id test_test.t2 handler t2 read first limit 9; table_id test_test.t2 handler test_test.t1 close; handler t1 close; Unknown table 't1' in HANDLER drop table test_test.t1; handler test_test.t2 close; handler t2 close; Unknown table 't2' in HANDLER drop table test_test.t2; drop database test_test; use test; handler test.t1 close; Unknown table 'test.t1' in HANDLER handler t1 close; Unknown table 't1' in HANDLER drop table test.t1; drop database if exists test_test; drop table if exists t1; drop table if exists t2; drop table if exists t3; create database test_test; use test_test; create table t1 (c1 char(20)); insert into t1 values ('test_test.t1'); create table t3 (c1 char(20)); insert into t3 values ('test_test.t3'); handler t1 open; handler t1 read first limit 9; c1 test_test.t1 handler t1 open h1; handler h1 read first limit 9; c1 test_test.t1 use test; create table t1 (c1 char(20)); create table t2 (c1 char(20)); create table t3 (c1 char(20)); insert into t1 values ('t1'); insert into t2 values ('t2'); insert into t3 values ('t3'); handler t1 open; Not unique table/alias: 't1' handler t2 open t1; Not unique table/alias: 't1' handler t3 open t1; Not unique table/alias: 't1' handler t1 read first limit 9; c1 test_test.t1 handler test.t1 close; Unknown table 'test.t1' in HANDLER handler test.t1 open h1; Not unique table/alias: 'h1' handler test_test.t1 open h1; Not unique table/alias: 'h1' handler test_test.t3 open h3; handler test.t1 open h2; handler t1 read first limit 9; c1 test_test.t1 handler h1 read first limit 9; c1 test_test.t1 handler h2 read first limit 9; c1 t1 handler h3 read first limit 9; c1 test_test.t3 handler test.h2 read first limit 9; c1 t1 handler test.h1 close; Unknown table 'test.h1' in HANDLER handler test_test.t1 close; handler test_test.h1 close; handler h2 close; handler t1 read first limit 9; Unknown table 't1' in HANDLER handler h1 read first limit 9; Unknown table 'h1' in HANDLER handler h2 read first limit 9; Unknown table 'h2' in HANDLER handler h3 read first limit 9; c1 test_test.t3 handler test_test.h3 read first limit 9; c1 test_test.t3 use test_test; handler h3 read first limit 9; c1 test_test.t3 handler test.h3 read first limit 9; Unknown table 'test.h3' in HANDLER handler test_test.h3 close; use test; drop table t3; drop table t2; drop table t1; drop database test_test; create table t1 (c1 char(20)); insert into t1 values ("t1"); handler t1 open as h1; handler h1 read first limit 9; c1 t1 create table t2 (c1 char(20)); insert into t2 values ("t2"); handler t2 open as h2; handler h2 read first limit 9; c1 t2 create table t3 (c1 char(20)); insert into t3 values ("t3"); handler t3 open as h3; handler h3 read first limit 9; c1 t3 create table t4 (c1 char(20)); insert into t4 values ("t4"); handler t4 open as h4; handler h4 read first limit 9; c1 t4 create table t5 (c1 char(20)); insert into t5 values ("t5"); handler t5 open as h5; handler h5 read first limit 9; c1 t5 alter table t1 engine=MyISAM; handler h1 read first limit 9; Unknown table 'h1' in HANDLER handler h2 read first limit 9; c1 t2 handler h3 read first limit 9; c1 t3 handler h4 read first limit 9; c1 t4 handler h5 read first limit 9; c1 t5 alter table t5 engine=MyISAM; handler h1 read first limit 9; Unknown table 'h1' in HANDLER handler h2 read first limit 9; c1 t2 handler h3 read first limit 9; c1 t3 handler h4 read first limit 9; c1 t4 handler h5 read first limit 9; Unknown table 'h5' in HANDLER alter table t3 engine=MyISAM; handler h1 read first limit 9; Unknown table 'h1' in HANDLER handler h2 read first limit 9; c1 t2 handler h3 read first limit 9; Unknown table 'h3' in HANDLER handler h4 read first limit 9; c1 t4 handler h5 read first limit 9; Unknown table 'h5' in HANDLER handler h2 close; handler h4 close; handler t1 open as h1_1; handler t1 open as h1_2; handler t1 open as h1_3; handler h1_1 read first limit 9; c1 t1 handler h1_2 read first limit 9; c1 t1 handler h1_3 read first limit 9; c1 t1 alter table t1 engine=MyISAM; handler h1_1 read first limit 9; Unknown table 'h1_1' in HANDLER handler h1_2 read first limit 9; Unknown table 'h1_2' in HANDLER handler h1_3 read first limit 9; Unknown table 'h1_3' in HANDLER drop table t1; drop table t2; drop table t3; drop table t4; drop table t5;
mysql-test/t/flush_table.test +23 −61 Original line number Diff line number Diff line Loading @@ -12,63 +12,10 @@ flush table t1; check table t1; drop table t1; # # Check if two database names beginning the same are seen as different. # # This database begins like the usual 'test' database. # --disable_warnings drop database if exists test_test; --enable_warnings 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; 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; # # This is the usual 'test' database. # use test; --disable_warnings drop table if exists t1; --enable_warnings 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; # # Check accesibility of all the tables. # use test; handler test.t1 read first limit 9; --error 1109; handler test.t2 read first limit 9; handler test_test.t1 read first limit 9; handler test_test.t2 read first limit 9; # # Cleanup. # 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; # # In the following test FLUSH TABLES produces a deadlock # (hang forever) if the fix for bug#3565 is missing. # (hang forever) if the fix for BUG #3565 is missing. # And it shows that handler tables are re-opened after flush (BUG #4286). # --disable_warnings drop table if exists t1; Loading @@ -87,28 +34,43 @@ handler a1 read first limit 9; handler a2 read first limit 9; handler t2 read first limit 9; flush tables; --error 1109; handler a1 read first limit 9; --error 1109; handler a2 read first limit 9; --error 1109; handler t2 read first limit 9; # --error 1066 handler t1 open as a1; --error 1066 handler t1 open as a2; --error 1066 handler t2 open; handler a1 read first limit 9; handler a2 read first limit 9; handler t2 read first limit 9; flush table t1; --error 1109; handler a1 read first limit 9; --error 1109; handler a2 read first limit 9; handler t2 read first limit 9; flush table t2; --error 1109; handler t2 close; drop table t1; drop table t2; # # The fix for BUG #4286 cannot restore the position after a flush. # create table t1(table_id char(20) primary key); insert into t1 values ('Record-01'); insert into t1 values ('Record-02'); insert into t1 values ('Record-03'); insert into t1 values ('Record-04'); insert into t1 values ('Record-05'); handler t1 open; handler t1 read first limit 1; handler t1 read next limit 1; handler t1 read next limit 1; flush table t1; handler t1 read next limit 1; handler t1 read next limit 1; handler t1 close; drop table t1;
mysql-test/t/handler.test +204 −0 Original line number Diff line number Diff line Loading @@ -135,3 +135,207 @@ handler t1 read a=(1) where b=1; handler t1 close; drop table t1; # # Check if two database names beginning the same are seen as different. # # This database begins like the usual 'test' database. # --disable_warnings drop database if exists test_test; --enable_warnings 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; 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; # # This is the usual 'test' database. # use test; --disable_warnings drop table if exists t1; --enable_warnings create table t1(table_id char(20) primary key); insert into t1 values ('test.t1'); insert into t1 values (''); --error 1066 handler t1 open; # # Check accesibility of all the tables. # use test; --error 1109; handler test.t1 read first limit 9; handler test_test.t1 read first limit 9; handler t1 read first limit 9; handler test_test.t2 read first limit 9; handler t2 read first limit 9; # # Cleanup. # handler test_test.t1 close; --error 1109; handler t1 close; drop table test_test.t1; handler test_test.t2 close; --error 1109; handler t2 close; drop table test_test.t2; drop database test_test; # use test; --error 1109; handler test.t1 close; --error 1109; handler t1 close; drop table test.t1; # # BUG#4335 # --disable_warnings drop database if exists test_test; drop table if exists t1; drop table if exists t2; drop table if exists t3; --enable_warnings create database test_test; use test_test; create table t1 (c1 char(20)); insert into t1 values ('test_test.t1'); create table t3 (c1 char(20)); insert into t3 values ('test_test.t3'); handler t1 open; handler t1 read first limit 9; handler t1 open h1; handler h1 read first limit 9; use test; create table t1 (c1 char(20)); create table t2 (c1 char(20)); create table t3 (c1 char(20)); insert into t1 values ('t1'); insert into t2 values ('t2'); insert into t3 values ('t3'); --error 1066 handler t1 open; --error 1066 handler t2 open t1; --error 1066 handler t3 open t1; handler t1 read first limit 9; --error 1109 handler test.t1 close; --error 1066 handler test.t1 open h1; --error 1066 handler test_test.t1 open h1; handler test_test.t3 open h3; handler test.t1 open h2; handler t1 read first limit 9; handler h1 read first limit 9; handler h2 read first limit 9; handler h3 read first limit 9; handler test.h2 read first limit 9; --error 1109 handler test.h1 close; handler test_test.t1 close; handler test_test.h1 close; handler h2 close; --error 1109 handler t1 read first limit 9; --error 1109 handler h1 read first limit 9; --error 1109 handler h2 read first limit 9; handler h3 read first limit 9; handler test_test.h3 read first limit 9; use test_test; handler h3 read first limit 9; --error 1109 handler test.h3 read first limit 9; handler test_test.h3 close; use test; drop table t3; drop table t2; drop table t1; drop database test_test; # # Test if fix for BUG#4286 correctly closes handler tables. # create table t1 (c1 char(20)); insert into t1 values ("t1"); handler t1 open as h1; handler h1 read first limit 9; create table t2 (c1 char(20)); insert into t2 values ("t2"); handler t2 open as h2; handler h2 read first limit 9; create table t3 (c1 char(20)); insert into t3 values ("t3"); handler t3 open as h3; handler h3 read first limit 9; create table t4 (c1 char(20)); insert into t4 values ("t4"); handler t4 open as h4; handler h4 read first limit 9; create table t5 (c1 char(20)); insert into t5 values ("t5"); handler t5 open as h5; handler h5 read first limit 9; # close first alter table t1 engine=MyISAM; --error 1109; handler h1 read first limit 9; handler h2 read first limit 9; handler h3 read first limit 9; handler h4 read first limit 9; handler h5 read first limit 9; # close last alter table t5 engine=MyISAM; --error 1109; handler h1 read first limit 9; handler h2 read first limit 9; handler h3 read first limit 9; handler h4 read first limit 9; --error 1109; handler h5 read first limit 9; # close middle alter table t3 engine=MyISAM; --error 1109; handler h1 read first limit 9; handler h2 read first limit 9; --error 1109; handler h3 read first limit 9; handler h4 read first limit 9; --error 1109; handler h5 read first limit 9; handler h2 close; handler h4 close; # close all depending handler tables handler t1 open as h1_1; handler t1 open as h1_2; handler t1 open as h1_3; handler h1_1 read first limit 9; handler h1_2 read first limit 9; handler h1_3 read first limit 9; alter table t1 engine=MyISAM; --error 1109; handler h1_1 read first limit 9; --error 1109; handler h1_2 read first limit 9; --error 1109; handler h1_3 read first limit 9; drop table t1; drop table t2; drop table t3; drop table t4; drop table t5;
sql/mysql_priv.h +7 −4 Original line number Diff line number Diff line Loading @@ -540,12 +540,15 @@ int mysql_find_files(THD *thd,List<char> *files, const char *db, const char *path, const char *wild, bool dir); /* sql_handler.cc */ int mysql_ha_open(THD *thd, TABLE_LIST *tables); int mysql_ha_close(THD *thd, TABLE_LIST *tables, bool dont_send_ok=0, bool dont_lock=0, bool no_alias=0); int mysql_ha_close_list(THD *thd, TABLE_LIST *tables, bool flushed=0); int mysql_ha_open(THD *thd, TABLE_LIST *tables, bool reopen= 0); int mysql_ha_close(THD *thd, TABLE_LIST *tables); int mysql_ha_read(THD *, TABLE_LIST *,enum enum_ha_read_modes,char *, List<Item> *,enum ha_rkey_function,Item *,ha_rows,ha_rows); int mysql_ha_flush(THD *thd, TABLE_LIST *tables, int mode_flags); /* mysql_ha_flush mode_flags bits */ #define MYSQL_HA_CLOSE_FINAL 0x00 #define MYSQL_HA_REOPEN_ON_USAGE 0x01 #define MYSQL_HA_FLUSH_ALL 0x02 /* sql_base.cc */ void set_item_name(Item *item,char *pos,uint length); Loading