List:Commits« Previous MessageNext Message »
From:Maitrayi Sabaratnam Date:September 18 2012 12:09pm
Subject:bzr push into mysql-5.1-telco-7.0 branch (maitrayi.sabaratnam:4977 to 4978)
Bug#14578595
View as plain text  
 4978 Maitrayi Sabaratnam	2012-09-18
      Bug#14578595 - CONCURRENT ALTER TABLE WITH DML GIVES: GOT ERROR -1 'UNKNOWN ERROR CODE' FROM NDB

    added:
      mysql-test/suite/ndb/r/ndb_alter_table_dml.result
      mysql-test/suite/ndb/t/ndb_alter_table_dml.test
    modified:
      storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
      storage/ndb/src/ndbapi/ndberror.c
 4977 Frazer Clement	2012-09-13 [merge]
      Merge 6.3->7.0

    added:
      mysql-test/suite/ndb/r/ndb_backup_rate.result
      mysql-test/suite/ndb/t/ndb_backup_rate.cnf
      mysql-test/suite/ndb/t/ndb_backup_rate.test
    modified:
      storage/ndb/src/kernel/blocks/backup/Backup.cpp
      storage/ndb/src/kernel/blocks/backup/Backup.hpp
=== added file 'mysql-test/suite/ndb/r/ndb_alter_table_dml.result'
--- a/mysql-test/suite/ndb/r/ndb_alter_table_dml.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb/r/ndb_alter_table_dml.result	2012-09-18 12:00:01 +0000
@@ -0,0 +1,43 @@
+call mtr.add_suppression(".*NDB_SHARE.*Moving away for safety, but possible memleak");
+use test;
+create table parent(a int primary key, b int, key(b)) engine=ndb;
+create table child(a int primary key, b int) engine=ndb;
+insert into parent values (1,1), (2,2), (3,3), (4,4);
+insert into parent select a+4, b+4 from parent;
+insert into parent select a+8, b+8 from parent;
+insert into parent select a+16, b+16 from parent;
+insert into parent select a+32, b+32 from parent;
+insert into parent select a+64, b+64 from parent;
+insert into parent select a+128, b+128 from parent;
+insert into parent select a+256, b+256 from parent;
+insert into parent select a+512, b+512 from parent;
+insert into parent select a+1024, b+1024 from parent;
+insert into parent select a+2048, b+2048 from parent;
+insert into parent select a+4096, b+4096 from parent;
+insert into child select * from parent;
+explain
+select count(*)
+from parent join child
+on (parent.b = child.a)
+where parent.b > 5;
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	parent	range	b	b	5	NULL	819	Using where with pushed condition
+1	SIMPLE	child	eq_ref	PRIMARY	PRIMARY	4	test.parent.b	1	
+show variables like 'server_id';
+Variable_name	Value
+server_id	1
+Starting engines...
+call queryload(10);
+call queryload(10);
+call queryload(10);
+call queryload(10);
+show variables like 'server_id';
+Variable_name	Value
+server_id	2
+Beginning alter table child  partition by key(a) partitions 4;
+alter table child  partition by key(a) partitions 4;
+Completed.
+Ending test. Droping table parent
+drop table parent;
+drop table child;
+drop procedure queryload;

=== added file 'mysql-test/suite/ndb/t/ndb_alter_table_dml.test'
--- a/mysql-test/suite/ndb/t/ndb_alter_table_dml.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb/t/ndb_alter_table_dml.test	2012-09-18 12:00:01 +0000
@@ -0,0 +1,111 @@
+--source include/have_multi_ndb.inc
+connect (j1,localhost,root,,test);
+connect (j2,localhost,root,,test);
+connect (j3,localhost,root,,test);
+connect (j4,localhost,root,,test);
+
+connect (ddl,localhost,root,,test);
+
+connection ddl;
+call mtr.add_suppression(".*NDB_SHARE.*Moving away for safety, but possible memleak");
+
+use test;
+
+create table parent(a int primary key, b int, key(b)) engine=ndb;
+create table child(a int primary key, b int) engine=ndb;
+
+insert into parent values (1,1), (2,2), (3,3), (4,4);
+insert into parent select a+4, b+4 from parent;
+insert into parent select a+8, b+8 from parent;
+insert into parent select a+16, b+16 from parent;
+insert into parent select a+32, b+32 from parent;
+insert into parent select a+64, b+64 from parent;
+insert into parent select a+128, b+128 from parent;
+insert into parent select a+256, b+256 from parent;
+insert into parent select a+512, b+512 from parent;
+insert into parent select a+1024, b+1024 from parent;
+insert into parent select a+2048, b+2048 from parent;
+insert into parent select a+4096, b+4096 from parent;
+
+insert into child select * from parent;
+
+connection j1;
+
+explain
+  select count(*)
+  from parent join child
+  on (parent.b = child.a)
+  where parent.b > 5;
+
+show variables like 'server_id';
+
+--disable_query_log
+delimiter %;
+create procedure queryload (seconds int)
+begin
+  set @x=time_to_sec(current_time()) + seconds;
+  repeat
+    select count(*)
+    from parent join child
+    on (parent.b = child.a)
+    where parent.b > 5;
+  until @x <= time_to_sec(current_time())
+  end repeat;
+end%
+
+delimiter ;%
+--enable_query_log
+
+--echo Starting engines...
+
+connection j1;
+send call queryload(10);
+
+connection j2;
+send call queryload(10);
+
+connection j3;
+send call queryload(10);
+
+connection j4;
+send call queryload(10);
+
+sleep 3;
+
+connection server2;
+show variables like 'server_id';
+--echo Beginning alter table child  partition by key(a) partitions 4;
+
+alter table child  partition by key(a) partitions 4;
+
+--echo  Completed.
+
+connection j1;
+--disable_result_log
+--error 0,ER_NO_SUCH_TABLE
+reap;
+--enable_result_log
+
+connection j2;
+--disable_result_log
+--error 0,ER_NO_SUCH_TABLE
+reap;
+--enable_result_log
+
+connection j3;
+--disable_result_log
+--error 0,ER_NO_SUCH_TABLE
+reap;
+--enable_result_log
+
+connection j4;
+--disable_result_log
+--error 0,ER_NO_SUCH_TABLE
+reap;
+--enable_result_log
+
+connection ddl;
+--echo Ending test. Droping table parent
+drop table parent;
+drop table child;
+drop procedure queryload;

=== modified file 'storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp'
--- a/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp	2012-09-12 14:18:33 +0000
+++ b/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp	2012-09-18 12:00:01 +0000
@@ -3130,7 +3130,7 @@ Dblqh::get_table_state_error(Ptr<Tablere
     jam();
   case Tablerec::DROP_TABLE_TUX:
     jam();
-    return PrepDropTabRef::DropInProgress;
+    return ZDROP_TABLE_IN_PROGRESS;
     break;
   case Tablerec::TABLE_DEFINED:
   case Tablerec::TABLE_READ_ONLY:

=== modified file 'storage/ndb/src/ndbapi/ndberror.c'
--- a/storage/ndb/src/ndbapi/ndberror.c	2012-09-12 14:18:33 +0000
+++ b/storage/ndb/src/ndbapi/ndberror.c	2012-09-18 12:00:01 +0000
@@ -468,7 +468,7 @@ ErrorBundle ErrorCodes[] = {
   { 919,  DMEC, TR, "Cannot execute index stats update" },
   { 1224, HA_WRONG_CREATE_OPTION, SE, "Too many fragments" },
   { 1225, DMEC, SE, "Table not defined in local query handler" },
-  { 1226, DMEC, SE, "Table is being dropped" },
+  { 1226, HA_ERR_NO_SUCH_TABLE, SE, "Table is being dropped" },
   { 1227, HA_WRONG_CREATE_OPTION, SE, "Invalid schema version" },
   { 1228, DMEC, SE, "Cannot use drop table for drop index" },
   { 1229, DMEC, SE, "Too long frm data supplied" },

No bundle (reason: useless for push emails).
Thread
bzr push into mysql-5.1-telco-7.0 branch (maitrayi.sabaratnam:4977 to 4978)Bug#14578595Maitrayi Sabaratnam19 Sep