List:Commits« Previous MessageNext Message »
From:tomas Date:June 14 2006 10:21am
Subject:bk commit into 5.1 tree (tomas:1.2192) BUG#18595
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of tomas. When tomas does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.2192 06/06/14 12:21:18 tomas@stripped +4 -0
  Bug #18595 repeated create, insert, drop can cause MySQL table definition cache to corrupt
  - add infinite retry on drop table temporary error

  mysql-test/t/ndb_restore_partition.test
    1.1 06/06/14 12:21:08 tomas@stripped +375 -0
    New BitKeeper file ``mysql-test/t/ndb_restore_partition.test''

  mysql-test/t/ndb_restore_partition-master.opt
    1.1 06/06/14 12:21:08 tomas@stripped +1 -0
    New BitKeeper file ``mysql-test/t/ndb_restore_partition-master.opt''

  mysql-test/t/ndb_restore_partition.test
    1.0 06/06/14 12:21:08 tomas@stripped +0 -0
    BitKeeper file /home/tomas/mysql-5.1-new-ndb/mysql-test/t/ndb_restore_partition.test

  mysql-test/t/ndb_restore_partition-master.opt
    1.0 06/06/14 12:21:08 tomas@stripped +0 -0
    BitKeeper file /home/tomas/mysql-5.1-new-ndb/mysql-test/t/ndb_restore_partition-master.opt

  mysql-test/r/ndb_restore_partition.result
    1.1 06/06/14 12:21:07 tomas@stripped +469 -0
    New BitKeeper file ``mysql-test/r/ndb_restore_partition.result''

  sql/ha_ndbcluster.cc
    1.321 06/06/14 12:21:07 tomas@stripped +61 -17
    Bug #18595 repeated create, insert, drop can cause MySQL table definition cache to corrupt
    - add infinite retry on drop table temporary error

  mysql-test/r/ndb_restore_partition.result
    1.0 06/06/14 12:21:07 tomas@stripped +0 -0
    BitKeeper file /home/tomas/mysql-5.1-new-ndb/mysql-test/r/ndb_restore_partition.result

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	tomas
# Host:	poseidon.ndb.mysql.com
# Root:	/home/tomas/mysql-5.1-new-ndb

--- 1.320/sql/ha_ndbcluster.cc	2006-06-14 01:20:29 +02:00
+++ 1.321/sql/ha_ndbcluster.cc	2006-06-14 12:21:07 +02:00
@@ -4468,12 +4468,13 @@
                           TABLE *form, 
                           HA_CREATE_INFO *info)
 {
+  THD *thd= current_thd;
   NDBTAB tab;
   NDBCOL col;
   uint pack_length, length, i, pk_length= 0;
   const void *data, *pack_data;
   bool create_from_engine= (info->table_options & HA_OPTION_CREATE_FROM_ENGINE);
-  bool is_truncate= (current_thd->lex->sql_command == SQLCOM_TRUNCATE);
+  bool is_truncate= (thd->lex->sql_command == SQLCOM_TRUNCATE);
 
   DBUG_ENTER("ha_ndbcluster::create");
   DBUG_PRINT("enter", ("name: %s", name));
@@ -4661,10 +4662,20 @@
       Failed to create an index,
       drop the table (and all it's indexes)
     */
-    if (dict->dropTableGlobal(*m_table) == 0)
+    while (dict->dropTableGlobal(*m_table))
     {
-      m_table = 0;
+      switch (dict->getNdbError().status)
+      {
+        case NdbError::TemporaryError:
+          if (!thd->killed) 
+            continue; // retry indefinitly
+          break;
+        default:
+          break;
+      }
     }
+    m_table = 0;
+    DBUG_RETURN(my_errno);
   }
 
 #ifdef HAVE_NDB_BINLOG
@@ -4727,8 +4738,8 @@
       */
       if (share && !do_event_op)
         share->flags|= NSF_NO_BINLOG;
-      ndbcluster_log_schema_op(current_thd, share,
-                               current_thd->query, current_thd->query_length,
+      ndbcluster_log_schema_op(thd, share,
+                               thd->query, thd->query_length,
                                share->db, share->table_name,
                                m_table->getObjectId(),
                                m_table->getObjectVersion(),
@@ -5177,9 +5188,9 @@
   THD *thd= current_thd;
   DBUG_ENTER("ha_ndbcluster::ndbcluster_delete_table");
   NDBDICT *dict= ndb->getDictionary();
-#ifdef HAVE_NDB_BINLOG
   int ndb_table_id= 0;
   int ndb_table_version= 0;
+#ifdef HAVE_NDB_BINLOG
   /*
     Don't allow drop table unless
     schema distribution table is setup
@@ -5197,15 +5208,25 @@
   int res= 0;
   if (h && h->m_table)
   {
-    if (dict->dropTableGlobal(*h->m_table))
-      res= ndb_to_mysql_error(&dict->getNdbError());
-#ifdef HAVE_NDB_BINLOG
-    if (res == 0)
+retry_temporary_error1:
+    if (dict->dropTableGlobal(*h->m_table) == 0)
     {
       ndb_table_id= h->m_table->getObjectId();
       ndb_table_version= h->m_table->getObjectVersion();
     }
-#endif
+    else
+    {
+      switch (dict->getNdbError().status)
+      {
+        case NdbError::TemporaryError:
+          if (!thd->killed) 
+            goto retry_temporary_error1; // retry indefinitly
+          break;
+        default:
+          break;
+      }
+      res= ndb_to_mysql_error(&dict->getNdbError());
+    }
     h->release_metadata(thd, ndb);
   }
   else
@@ -5216,17 +5237,28 @@
       Ndb_table_guard ndbtab_g(dict, table_name);
       if (ndbtab_g.get_table())
       {
+    retry_temporary_error2:
         if (dict->dropTableGlobal(*ndbtab_g.get_table()) == 0)
         {
-#ifdef HAVE_NDB_BINLOG
           ndb_table_id= ndbtab_g.get_table()->getObjectId();
           ndb_table_version= ndbtab_g.get_table()->getObjectVersion();
-#endif
         }
-        else if (dict->getNdbError().code == NDB_INVALID_SCHEMA_OBJECT)
+        else
         {
-          ndbtab_g.invalidate();
-          continue;
+          switch (dict->getNdbError().status)
+          {
+            case NdbError::TemporaryError:
+              if (!thd->killed) 
+                goto retry_temporary_error2; // retry indefinitly
+              break;
+            default:
+              if (dict->getNdbError().code == NDB_INVALID_SCHEMA_OBJECT)
+              {
+                ndbtab_g.invalidate();
+                continue;
+              }
+              break;
+          }
         }
       }
       else
@@ -9747,7 +9779,19 @@
   }
   else 
   {
-    /*
+#ifdef NOT_YET
+    if (!current_thd->variables.new_mode)
+    {
+      push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_ERROR,
+                          ER_ILLEGAL_HA_CREATE_OPTION,
+                          ER(ER_ILLEGAL_HA_CREATE_OPTION),
+                          ndbcluster_hton_name,
+                          "LIST, RANGE and HASH partition disabled by default,"
+                          " use --new option to enable");
+      return HA_ERR_UNSUPPORTED;
+    }
+#endif
+   /*
       Create a shadow field for those tables that have user defined
       partitioning. This field stores the value of the partition
       function such that NDB can handle reorganisations of the data
--- New file ---
+++ mysql-test/r/ndb_restore_partition.result	06/06/14 12:21:07
use test;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
CREATE TABLE `t1_c` (
`capgoaledatta` smallint(5) unsigned NOT NULL auto_increment,
`goaledatta` char(2) NOT NULL default '',
`maturegarbagefa` varchar(32) NOT NULL default '',
PRIMARY KEY  (`capgoaledatta`,`goaledatta`,`maturegarbagefa`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
INSERT INTO `t1_c` VALUES (2,'3','q3plus.qt'),(4,'4','q3plus.qt'),(1,'3','q3.net'),(3,'4','q3.net'),(3,'20','threetrees.qt');
CREATE TABLE `t2_c` (
`capgotod` smallint(5) unsigned NOT NULL auto_increment,
`gotod` smallint(5) unsigned NOT NULL default '0',
`goaledatta` char(2) default NULL,
`maturegarbagefa` varchar(32) default NULL,
`descrpooppo` varchar(64) default NULL,
`svcutonsa` varchar(64) NOT NULL default '',
PRIMARY KEY  (`capgotod`),
KEY `i_quadaddsvr` (`gotod`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
INSERT INTO `t2_c` VALUES (5,4,'','q3.net','addavp:MK_CASELECTOR=1','postorod rattoaa'),(2,1,'4','','addavp:MK_BRANDTAD=345','REDS Brandtad'),(3,2,'4','q3.net','execorder','fixedRatediPO REDS'),(1,1,'3','','addavp:MK_BRANDTAD=123','TEST Brandtad'),(6,5,'','told.q3.net','addavp:MK_BRANDTAD=123','Brandtad Toldzone'),(4,3,'3','q3.net','addavp:MK_POOLHINT=2','ratedi PO TEST');
CREATE TABLE `t3_c` (
`CapGoaledatta` smallint(5) unsigned NOT NULL default '0',
`capgotod` smallint(5) unsigned NOT NULL default '0',
PRIMARY KEY  (`capgotod`,`CapGoaledatta`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
INSERT INTO `t3_c` VALUES (5,3),(2,4),(5,4),(1,3);
CREATE TABLE `t4_c` (
`capfa` bigint(20) unsigned NOT NULL auto_increment,
`realm` varchar(32) NOT NULL default '',
`authpwchap` varchar(32) default NULL,
`fa` varchar(32) NOT NULL default '',
`payyingatta` tinyint(4) NOT NULL default '0',
`status` char(1) default NULL,
PRIMARY KEY  (`fa`,`realm`),
KEY `capfa` (`capfa`),
KEY `i_quadentity` (`fa`,`realm`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
INSERT INTO `t4_c` VALUES (18,'john.smith','q3.net','dessjohn.smith',0,NULL),(21,'quad_katt_with_brandtad','q3.net','acne',0,NULL),(22,'quad_katt_carattoaa','q3.net','acne',0,NULL),(26,'436462612809','sqasdt.q3.net','N/A',0,'6'),(19,'john','smith.qt','dessjohn',0,NULL),(33,'436643196120','sqasdt.q3.net','N/A',1,'6'),(28,'436642900019','sqasdt.q3.net','N/A',0,'6'),(30,'436462900209','sqasdt.q3.net','N/A',0,'6'),(16,'436640006666','sqasdt.q3.net','',0,NULL),(19,'dette','el-redun.com','dessdette',0,NULL),(12,'quad_kattPP','q3.net','acne',2,NULL),(14,'436640008888','sqasdt.q3.net','',0,NULL),(29,'463624900028','sqasdt.q3.net','N/A',0,'6'),(15,'436640099099','sqasdt.q3.net','',0,NULL),(13,'pap','q3plus.qt','acne',1,NULL),(19,'436642612091','sqasdt.q3.net','N/A',0,'6'),(12,'quad_katt','q3.net','acne',0,NULL),(11,'quad_kattVK','q3.net','acne',1,NULL),(32,'463641969502','sqasdt.q3.net','N/A',1,'6'),(20,'joe','q3.net','joedesswd',0,NULL),(29,'436642900034','sqasdt.q3.net','N/A',0,'6')
 ,(25,'contind','armerde.qt','acne',1,NULL);
CREATE TABLE `t5_c` (
`capfa` bigint(20) unsigned NOT NULL default '0',
`gotod` smallint(5) unsigned NOT NULL default '0',
`orderutonsa` varchar(64) NOT NULL default '',
PRIMARY KEY  (`capfa`,`gotod`,`orderutonsa`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
INSERT INTO `t5_c` VALUES (21,2,''),(21,1,''),(22,4,'');
CREATE TABLE `t6_c` (
`capfa_parent` bigint(20) unsigned NOT NULL default '0',
`capfa_child` bigint(20) unsigned NOT NULL default '0',
`relatta` smallint(5) unsigned NOT NULL default '0',
PRIMARY KEY  (`capfa_child`,`capfa_parent`,`relatta`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
INSERT INTO `t6_c` VALUES (15,16,0),(19,20,0),(18326932092909551615,30,0),(26,29,0),(18326932092909551615,29,0),(19,18,0),(26,28,0),(12,14,0);
CREATE TABLE `t7_c` (
`dardpo` char(15) NOT NULL default '',
`dardtestard` tinyint(3) unsigned NOT NULL default '0',
`FastFA` char(5) NOT NULL default '',
`FastCode` char(6) NOT NULL default '',
`Fastca` char(1) NOT NULL default '',
`Fastmag` char(1) NOT NULL default '',
`Beareratta` char(2) NOT NULL default '',
PRIMARY KEY  (`dardpo`,`dardtestard`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
INSERT INTO `t7_c` VALUES ('2.6.2.4',24,'CECHP','54545','0','0','5'),('2.2.5.4',26,'CANFA','33223','1','1','4'),('4.3.2.4',28,'ITALD','54222','1','0','5'),('129..0.0.eins',28,'G','99999','1','1','5'),('1.1.1.1',24,'AUTPT','32323','0','1','3');
CREATE TABLE `t8_c` (
`kattjame` varchar(32) NOT NULL default '',
`realm` varchar(32) NOT NULL default '',
`realm_entered` varchar(32) NOT NULL default '',
`maturegarbagefa` varchar(32) NOT NULL default '',
`hunderaaarbagefa_parent` varchar(32) NOT NULL default '',
`kattjame_entered` varchar(32) NOT NULL default '',
`hunderaaarbagefa` varchar(32) NOT NULL default '',
`gest` varchar(16) default NULL,
`hassetino` varchar(16) NOT NULL default '',
`aaaproxysessfa` varchar(255) default NULL,
`autologonallowed` char(1) default NULL,
`squardporoot` varchar(15) NOT NULL default '',
`naspo` varchar(15) default NULL,
`beareratta` char(2) default NULL,
`fastCode` varchar(6) default NULL,
`fastFA` varchar(5) default NULL,
`fastca` char(1) default NULL,
`fastmag` char(1) default NULL,
`lastupdate` datetime default NULL,
`hassetistart` datetime NOT NULL default '0000-00-00 00:00:00',
`accthassetitime` int(10) unsigned default NULL,
`acctoutputoctets` bigint(20) unsigned default NULL,
`acctinputoctets` bigint(20) unsigned default NULL,
PRIMARY KEY  (`kattjame`,`hunderaaarbagefa`,`hassetistart`,`hassetino`),
KEY `squardporoot` (`squardporoot`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
INSERT INTO `t8_c` VALUES ('4tt45345235','pap','q3plus.qt','q3plus.qt','q3.net','436643196120','436643196929','8956234534568968','5524595699','uxasmt21.net.acne.qt/481889229462692422','','1.1.1.1','2.2.4.6','4','86989','34','x','x','2012-03-12 12:55:34','2012-12-05 11:20:04',3223433,3369,9565),('4545435545','john','q3.net','q3.net','acne.li','436643196120','436643196929','45345234568968','995696699','uxasmt21.net.acne.qt/481889229462692423','','1.1.1.1','2.2.9.8','2','86989','34','x','x','2012-03-12 11:35:03','2012-12-05 08:50:04',8821923,169,3565),('versteckter_q3net_katt','joe','q3.net','elredun.com','q3.net','436643196120','436643196939','91341234568968','695595699','uxasmt21.net.acne.qt/481889229462692421','','1.1.1.1','2.5.2.5','3','86989','34','x','x','2012-03-12 18:35:04','2012-12-05 12:35:04',1923123,9569,6565);
CREATE TABLE `t9_c` (
`kattjame` varchar(32) NOT NULL default '',
`kattjame_entered` varchar(32) NOT NULL default '',
`realm` varchar(32) NOT NULL default '',
`realm_entered` varchar(32) NOT NULL default '',
`maturegarbagefa` varchar(32) NOT NULL default '',
`hunderaaarbagefa` varchar(32) NOT NULL default '',
`hunderaaarbagefa_parent` varchar(32) NOT NULL default '',
`gest` varchar(16) default NULL,
`hassetino` varchar(16) NOT NULL default '',
`squardporoot` varchar(15) NOT NULL default '',
`naspo` varchar(15) default NULL,
`beareratta` char(2) default NULL,
`fastCode` varchar(6) default NULL,
`fastFA` varchar(5) default NULL,
`fastca` char(1) default NULL,
`fastmag` char(1) default NULL,
`lastupdate` datetime default NULL,
`hassetistart` datetime NOT NULL default '0000-00-00 00:00:00',
`accthassetitime` int(10) unsigned default NULL,
`actcoutpuocttets` bigint(20) unsigned default NULL,
`actinputocctets` bigint(20) unsigned default NULL,
`terminateraste` tinyint(3) unsigned default NULL,
PRIMARY KEY  (`kattjame`,`hunderaaarbagefa`,`hassetistart`,`hassetino`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
INSERT INTO `t9_c` VALUES ('3g4jh8gar2t','joe','q3.net','elredun.com','q3.net','436643316120','436643316939','91341234568968','695595699','1.1.1.1','2.2.6.2','3','86989','34','x','x','2012-03-12 18:35:04','2012-12-05 12:35:04',3123123,9569,6565,1),('4tt45345235','pap','q3plus.qt','q3plus.qt','q3.net','436643316120','436643316939','8956234534568968','5254595969','1.1.1.1','8.6.2.2','4','86989','34','x','x','2012-03-12 12:55:34','2012-12-05 11:20:04',3223433,3369,9565,2),('4545435545','john','q3.net','q3.net','acne.li','436643316120','436643316939','45345234568968','995696699','1.1.1.1','2.9.9.2','2','86998','34','x','x','2012-03-12 11:35:03','2012-12-05 08:50:04',8823123,169,3565,3);
create table t1 engine=myisam as select * from t1_c;
create table t2 engine=myisam as select * from t2_c;
create table t3 engine=myisam as select * from t3_c;
create table t4 engine=myisam as select * from t4_c;
create table t5 engine=myisam as select * from t5_c;
create table t6 engine=myisam as select * from t6_c;
create table t7 engine=myisam as select * from t7_c;
create table t8 engine=myisam as select * from t8_c;
create table t9 engine=myisam as select * from t9_c;
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
DELETE FROM test.backup_info;
LOAD DATA INFILE '../tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
SELECT @the_backup_id:=backup_id FROM test.backup_info;
@the_backup_id:=backup_id
<the_backup_id>
DROP TABLE test.backup_info;
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
select count(*) from t1;
count(*)
5
select count(*) from t1_c;
count(*)
5
select count(*)
from (select * from t1 union 
select * from t1_c) a;
count(*)
5
select count(*) from t2;
count(*)
6
select count(*) from t2_c;
count(*)
6
select count(*)
from (select * from t2 union 
select * from t2_c) a;
count(*)
6
select count(*) from t3;
count(*)
4
select count(*) from t3_c;
count(*)
4
select count(*)
from (select * from t3 union 
select * from t3_c) a;
count(*)
4
select count(*) from t4;
count(*)
22
select count(*) from t4_c;
count(*)
22
select count(*)
from (select * from t4 union 
select * from t4_c) a;
count(*)
22
select count(*) from t5;
count(*)
3
select count(*) from t5_c;
count(*)
3
select count(*)
from (select * from t5 union 
select * from t5_c) a;
count(*)
3
select count(*) from t6;
count(*)
8
select count(*) from t6_c;
count(*)
8
select count(*)
from (select * from t6 union 
select * from t6_c) a;
count(*)
8
select count(*) from t7;
count(*)
5
select count(*) from t7_c;
count(*)
5
select count(*)
from (select * from t7 union 
select * from t7_c) a;
count(*)
5
select count(*) from t8;
count(*)
3
select count(*) from t8_c;
count(*)
3
select count(*)
from (select * from t8 union 
select * from t8_c) a;
count(*)
3
select count(*) from t9;
count(*)
3
select count(*) from t9_c;
count(*)
3
select count(*)
from (select * from t9 union 
select * from t9_c) a;
count(*)
3
ALTER TABLE t1_c
PARTITION BY RANGE (`capgoaledatta`)
(PARTITION p0 VALUES LESS THAN MAXVALUE);
ALTER TABLE t2_c
PARTITION BY LIST(`capgotod`)
(PARTITION p0 VALUES IN (0,1,2,3,4,5,6));
ALTER TABLE t3_c
PARTITION BY HASH (`CapGoaledatta`);
ALTER TABLE t5_c
PARTITION BY HASH (`capfa`)
PARTITIONS 4;
ALTER TABLE t6_c
PARTITION BY LINEAR HASH (`relatta`)
PARTITIONS 4;
ALTER TABLE t7_c
PARTITION BY LINEAR KEY (`dardtestard`);
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
DELETE FROM test.backup_info;
LOAD DATA INFILE '../tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
SELECT @the_backup_id:=backup_id FROM test.backup_info;
@the_backup_id:=backup_id
<the_backup_id>
DROP TABLE test.backup_info;
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
select count(*) from t1;
count(*)
5
select count(*) from t1_c;
count(*)
5
select count(*)
from (select * from t1 union 
select * from t1_c) a;
count(*)
5
select count(*) from t2;
count(*)
6
select count(*) from t2_c;
count(*)
6
select count(*)
from (select * from t2 union 
select * from t2_c) a;
count(*)
6
select count(*) from t3;
count(*)
4
select count(*) from t3_c;
count(*)
4
select count(*)
from (select * from t3 union 
select * from t3_c) a;
count(*)
4
select count(*) from t4;
count(*)
22
select count(*) from t4_c;
count(*)
22
select count(*)
from (select * from t4 union 
select * from t4_c) a;
count(*)
22
select count(*) from t5;
count(*)
3
select count(*) from t5_c;
count(*)
3
select count(*)
from (select * from t5 union 
select * from t5_c) a;
count(*)
3
select count(*) from t6;
count(*)
8
select count(*) from t6_c;
count(*)
8
select count(*)
from (select * from t6 union 
select * from t6_c) a;
count(*)
8
select count(*) from t7;
count(*)
5
select count(*) from t7_c;
count(*)
5
select count(*)
from (select * from t7 union 
select * from t7_c) a;
count(*)
5
select count(*) from t8;
count(*)
3
select count(*) from t8_c;
count(*)
3
select count(*)
from (select * from t8 union 
select * from t8_c) a;
count(*)
3
select count(*) from t9;
count(*)
3
select count(*) from t9_c;
count(*)
3
select count(*)
from (select * from t9 union 
select * from t9_c) a;
count(*)
3
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
select count(*) from t1;
count(*)
5
select count(*) from t1_c;
count(*)
5
select count(*)
from (select * from t1 union 
select * from t1_c) a;
count(*)
5
select count(*) from t2;
count(*)
6
select count(*) from t2_c;
count(*)
6
select count(*)
from (select * from t2 union 
select * from t2_c) a;
count(*)
6
select count(*) from t3;
count(*)
4
select count(*) from t3_c;
count(*)
4
select count(*)
from (select * from t3 union 
select * from t3_c) a;
count(*)
4
select count(*) from t4;
count(*)
22
select count(*) from t4_c;
count(*)
22
select count(*)
from (select * from t4 union 
select * from t4_c) a;
count(*)
22
select count(*) from t5;
count(*)
3
select count(*) from t5_c;
count(*)
3
select count(*)
from (select * from t5 union 
select * from t5_c) a;
count(*)
3
select count(*) from t6;
count(*)
8
select count(*) from t6_c;
count(*)
8
select count(*)
from (select * from t6 union 
select * from t6_c) a;
count(*)
8
select count(*) from t7;
count(*)
5
select count(*) from t7_c;
count(*)
5
select count(*)
from (select * from t7 union 
select * from t7_c) a;
count(*)
5
select count(*) from t8;
count(*)
3
select count(*) from t8_c;
count(*)
3
select count(*)
from (select * from t8 union 
select * from t8_c) a;
count(*)
3
select count(*) from t9;
count(*)
3
select count(*) from t9_c;
count(*)
3
select count(*)
from (select * from t9 union 
select * from t9_c) a;
count(*)
3
drop table t1_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
DELETE FROM test.backup_info;
LOAD DATA INFILE '../tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
SELECT @the_backup_id:=backup_id FROM test.backup_info;
@the_backup_id:=backup_id
<the_backup_id>
DROP TABLE test.backup_info;
Create table test/def/t2_c failed: Translate frm error
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
drop table if exists t2_c;
520093696,<the_backup_id>

--- New file ---
+++ mysql-test/t/ndb_restore_partition-master.opt	06/06/14 12:21:08
--new

--- New file ---
+++ mysql-test/t/ndb_restore_partition.test	06/06/14 12:21:08
-- source include/have_ndb.inc
-- source include/ndb_default_cluster.inc
-- source include/not_embedded.inc

--disable_warnings
use test;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
--enable_warnings

CREATE TABLE `t1_c` (
  `capgoaledatta` smallint(5) unsigned NOT NULL auto_increment,
  `goaledatta` char(2) NOT NULL default '',
  `maturegarbagefa` varchar(32) NOT NULL default '',
  PRIMARY KEY  (`capgoaledatta`,`goaledatta`,`maturegarbagefa`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
INSERT INTO `t1_c` VALUES (2,'3','q3plus.qt'),(4,'4','q3plus.qt'),(1,'3','q3.net'),(3,'4','q3.net'),(3,'20','threetrees.qt');

CREATE TABLE `t2_c` (
  `capgotod` smallint(5) unsigned NOT NULL auto_increment,
  `gotod` smallint(5) unsigned NOT NULL default '0',
  `goaledatta` char(2) default NULL,
  `maturegarbagefa` varchar(32) default NULL,
  `descrpooppo` varchar(64) default NULL,
  `svcutonsa` varchar(64) NOT NULL default '',
  PRIMARY KEY  (`capgotod`),
  KEY `i_quadaddsvr` (`gotod`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
INSERT INTO `t2_c` VALUES (5,4,'','q3.net','addavp:MK_CASELECTOR=1','postorod rattoaa'),(2,1,'4','','addavp:MK_BRANDTAD=345','REDS Brandtad'),(3,2,'4','q3.net','execorder','fixedRatediPO REDS'),(1,1,'3','','addavp:MK_BRANDTAD=123','TEST Brandtad'),(6,5,'','told.q3.net','addavp:MK_BRANDTAD=123','Brandtad Toldzone'),(4,3,'3','q3.net','addavp:MK_POOLHINT=2','ratedi PO TEST');

CREATE TABLE `t3_c` (
  `CapGoaledatta` smallint(5) unsigned NOT NULL default '0',
  `capgotod` smallint(5) unsigned NOT NULL default '0',
  PRIMARY KEY  (`capgotod`,`CapGoaledatta`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
INSERT INTO `t3_c` VALUES (5,3),(2,4),(5,4),(1,3);

CREATE TABLE `t4_c` (
  `capfa` bigint(20) unsigned NOT NULL auto_increment,
  `realm` varchar(32) NOT NULL default '',
  `authpwchap` varchar(32) default NULL,
  `fa` varchar(32) NOT NULL default '',
  `payyingatta` tinyint(4) NOT NULL default '0',
  `status` char(1) default NULL,
  PRIMARY KEY  (`fa`,`realm`),
  KEY `capfa` (`capfa`),
  KEY `i_quadentity` (`fa`,`realm`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
INSERT INTO `t4_c` VALUES (18,'john.smith','q3.net','dessjohn.smith',0,NULL),(21,'quad_katt_with_brandtad','q3.net','acne',0,NULL),(22,'quad_katt_carattoaa','q3.net','acne',0,NULL),(26,'436462612809','sqasdt.q3.net','N/A',0,'6'),(19,'john','smith.qt','dessjohn',0,NULL),(33,'436643196120','sqasdt.q3.net','N/A',1,'6'),(28,'436642900019','sqasdt.q3.net','N/A',0,'6'),(30,'436462900209','sqasdt.q3.net','N/A',0,'6'),(16,'436640006666','sqasdt.q3.net','',0,NULL),(19,'dette','el-redun.com','dessdette',0,NULL),(12,'quad_kattPP','q3.net','acne',2,NULL),(14,'436640008888','sqasdt.q3.net','',0,NULL),(29,'463624900028','sqasdt.q3.net','N/A',0,'6'),(15,'436640099099','sqasdt.q3.net','',0,NULL),(13,'pap','q3plus.qt','acne',1,NULL),(19,'436642612091','sqasdt.q3.net','N/A',0,'6'),(12,'quad_katt','q3.net','acne',0,NULL),(11,'quad_kattVK','q3.net','acne',1,NULL),(32,'463641969502','sqasdt.q3.net','N/A',1,'6'),(20,'joe','q3.net','joedesswd',0,NULL),(29,'436642900034','sqasdt.q3.net','N/A',0,'6')
 ,(25,'contind','armerde.qt','acne',1,NULL);

CREATE TABLE `t5_c` (
  `capfa` bigint(20) unsigned NOT NULL default '0',
  `gotod` smallint(5) unsigned NOT NULL default '0',
  `orderutonsa` varchar(64) NOT NULL default '',
  PRIMARY KEY  (`capfa`,`gotod`,`orderutonsa`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
INSERT INTO `t5_c` VALUES (21,2,''),(21,1,''),(22,4,'');

CREATE TABLE `t6_c` (
  `capfa_parent` bigint(20) unsigned NOT NULL default '0',
  `capfa_child` bigint(20) unsigned NOT NULL default '0',
  `relatta` smallint(5) unsigned NOT NULL default '0',
  PRIMARY KEY  (`capfa_child`,`capfa_parent`,`relatta`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
INSERT INTO `t6_c` VALUES (15,16,0),(19,20,0),(18326932092909551615,30,0),(26,29,0),(18326932092909551615,29,0),(19,18,0),(26,28,0),(12,14,0);

CREATE TABLE `t7_c` (
  `dardpo` char(15) NOT NULL default '',
  `dardtestard` tinyint(3) unsigned NOT NULL default '0',
  `FastFA` char(5) NOT NULL default '',
  `FastCode` char(6) NOT NULL default '',
  `Fastca` char(1) NOT NULL default '',
  `Fastmag` char(1) NOT NULL default '',
  `Beareratta` char(2) NOT NULL default '',
  PRIMARY KEY  (`dardpo`,`dardtestard`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
INSERT INTO `t7_c` VALUES ('2.6.2.4',24,'CECHP','54545','0','0','5'),('2.2.5.4',26,'CANFA','33223','1','1','4'),('4.3.2.4',28,'ITALD','54222','1','0','5'),('129..0.0.eins',28,'G','99999','1','1','5'),('1.1.1.1',24,'AUTPT','32323','0','1','3');

CREATE TABLE `t8_c` (
  `kattjame` varchar(32) NOT NULL default '',
  `realm` varchar(32) NOT NULL default '',
  `realm_entered` varchar(32) NOT NULL default '',
  `maturegarbagefa` varchar(32) NOT NULL default '',
  `hunderaaarbagefa_parent` varchar(32) NOT NULL default '',
  `kattjame_entered` varchar(32) NOT NULL default '',
  `hunderaaarbagefa` varchar(32) NOT NULL default '',
  `gest` varchar(16) default NULL,
  `hassetino` varchar(16) NOT NULL default '',
  `aaaproxysessfa` varchar(255) default NULL,
  `autologonallowed` char(1) default NULL,
  `squardporoot` varchar(15) NOT NULL default '',
  `naspo` varchar(15) default NULL,
  `beareratta` char(2) default NULL,
  `fastCode` varchar(6) default NULL,
  `fastFA` varchar(5) default NULL,
  `fastca` char(1) default NULL,
  `fastmag` char(1) default NULL,
  `lastupdate` datetime default NULL,
  `hassetistart` datetime NOT NULL default '0000-00-00 00:00:00',
  `accthassetitime` int(10) unsigned default NULL,
  `acctoutputoctets` bigint(20) unsigned default NULL,
  `acctinputoctets` bigint(20) unsigned default NULL,
  PRIMARY KEY  (`kattjame`,`hunderaaarbagefa`,`hassetistart`,`hassetino`),
  KEY `squardporoot` (`squardporoot`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
INSERT INTO `t8_c` VALUES ('4tt45345235','pap','q3plus.qt','q3plus.qt','q3.net','436643196120','436643196929','8956234534568968','5524595699','uxasmt21.net.acne.qt/481889229462692422','','1.1.1.1','2.2.4.6','4','86989','34','x','x','2012-03-12 12:55:34','2012-12-05 11:20:04',3223433,3369,9565),('4545435545','john','q3.net','q3.net','acne.li','436643196120','436643196929','45345234568968','995696699','uxasmt21.net.acne.qt/481889229462692423','','1.1.1.1','2.2.9.8','2','86989','34','x','x','2012-03-12 11:35:03','2012-12-05 08:50:04',8821923,169,3565),('versteckter_q3net_katt','joe','q3.net','elredun.com','q3.net','436643196120','436643196939','91341234568968','695595699','uxasmt21.net.acne.qt/481889229462692421','','1.1.1.1','2.5.2.5','3','86989','34','x','x','2012-03-12 18:35:04','2012-12-05 12:35:04',1923123,9569,6565);

CREATE TABLE `t9_c` (
  `kattjame` varchar(32) NOT NULL default '',
  `kattjame_entered` varchar(32) NOT NULL default '',
  `realm` varchar(32) NOT NULL default '',
  `realm_entered` varchar(32) NOT NULL default '',
  `maturegarbagefa` varchar(32) NOT NULL default '',
  `hunderaaarbagefa` varchar(32) NOT NULL default '',
  `hunderaaarbagefa_parent` varchar(32) NOT NULL default '',
  `gest` varchar(16) default NULL,
  `hassetino` varchar(16) NOT NULL default '',
  `squardporoot` varchar(15) NOT NULL default '',
  `naspo` varchar(15) default NULL,
  `beareratta` char(2) default NULL,
  `fastCode` varchar(6) default NULL,
  `fastFA` varchar(5) default NULL,
  `fastca` char(1) default NULL,
  `fastmag` char(1) default NULL,
  `lastupdate` datetime default NULL,
  `hassetistart` datetime NOT NULL default '0000-00-00 00:00:00',
  `accthassetitime` int(10) unsigned default NULL,
  `actcoutpuocttets` bigint(20) unsigned default NULL,
  `actinputocctets` bigint(20) unsigned default NULL,
  `terminateraste` tinyint(3) unsigned default NULL,
  PRIMARY KEY  (`kattjame`,`hunderaaarbagefa`,`hassetistart`,`hassetino`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
INSERT INTO `t9_c` VALUES ('3g4jh8gar2t','joe','q3.net','elredun.com','q3.net','436643316120','436643316939','91341234568968','695595699','1.1.1.1','2.2.6.2','3','86989','34','x','x','2012-03-12 18:35:04','2012-12-05 12:35:04',3123123,9569,6565,1),('4tt45345235','pap','q3plus.qt','q3plus.qt','q3.net','436643316120','436643316939','8956234534568968','5254595969','1.1.1.1','8.6.2.2','4','86989','34','x','x','2012-03-12 12:55:34','2012-12-05 11:20:04',3223433,3369,9565,2),('4545435545','john','q3.net','q3.net','acne.li','436643316120','436643316939','45345234568968','995696699','1.1.1.1','2.9.9.2','2','86998','34','x','x','2012-03-12 11:35:03','2012-12-05 08:50:04',8823123,169,3565,3);

create table t1 engine=myisam as select * from t1_c;
create table t2 engine=myisam as select * from t2_c;
create table t3 engine=myisam as select * from t3_c;
create table t4 engine=myisam as select * from t4_c;
create table t5 engine=myisam as select * from t5_c;
create table t6 engine=myisam as select * from t6_c;
create table t7 engine=myisam as select * from t7_c;
create table t8 engine=myisam as select * from t8_c;
create table t9 engine=myisam as select * from t9_c;


--source include/ndb_backup.inc
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b $the_backup_id -n 1 -m -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b $the_backup_id -n 2 -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT

# random output order??
#show tables;

select count(*) from t1;
select count(*) from t1_c;
select count(*)
  from (select * from t1 union 
        select * from t1_c) a;

select count(*) from t2;
select count(*) from t2_c;
select count(*)
  from (select * from t2 union 
        select * from t2_c) a;

select count(*) from t3;
select count(*) from t3_c;
select count(*)
  from (select * from t3 union 
        select * from t3_c) a;

select count(*) from t4;
select count(*) from t4_c;
select count(*)
  from (select * from t4 union 
        select * from t4_c) a;

select count(*) from t5;
select count(*) from t5_c;
select count(*)
  from (select * from t5 union 
        select * from t5_c) a;

select count(*) from t6;
select count(*) from t6_c;
select count(*)
  from (select * from t6 union 
        select * from t6_c) a;

select count(*) from t7;
select count(*) from t7_c;
select count(*)
  from (select * from t7 union 
        select * from t7_c) a;

select count(*) from t8;
select count(*) from t8_c;
select count(*)
  from (select * from t8 union 
        select * from t8_c) a;

select count(*) from t9;
select count(*) from t9_c;
select count(*)
  from (select * from t9 union 
        select * from t9_c) a;

#
# Try Partitioned tables as well
#
ALTER TABLE t1_c
PARTITION BY RANGE (`capgoaledatta`)
(PARTITION p0 VALUES LESS THAN MAXVALUE);

ALTER TABLE t2_c
PARTITION BY LIST(`capgotod`)
(PARTITION p0 VALUES IN (0,1,2,3,4,5,6));

ALTER TABLE t3_c
PARTITION BY HASH (`CapGoaledatta`);

ALTER TABLE t5_c
PARTITION BY HASH (`capfa`)
PARTITIONS 4;

ALTER TABLE t6_c
PARTITION BY LINEAR HASH (`relatta`)
PARTITIONS 4;

ALTER TABLE t7_c
PARTITION BY LINEAR KEY (`dardtestard`);

--source include/ndb_backup.inc
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b $the_backup_id -n 1 -m -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b $the_backup_id -n 2 -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT

select count(*) from t1;
select count(*) from t1_c;
select count(*)
  from (select * from t1 union 
        select * from t1_c) a;

select count(*) from t2;
select count(*) from t2_c;
select count(*)
  from (select * from t2 union 
        select * from t2_c) a;

select count(*) from t3;
select count(*) from t3_c;
select count(*)
  from (select * from t3 union 
        select * from t3_c) a;

select count(*) from t4;
select count(*) from t4_c;
select count(*)
  from (select * from t4 union 
        select * from t4_c) a;

select count(*) from t5;
select count(*) from t5_c;
select count(*)
  from (select * from t5 union 
        select * from t5_c) a;

select count(*) from t6;
select count(*) from t6_c;
select count(*)
  from (select * from t6 union 
        select * from t6_c) a;

select count(*) from t7;
select count(*) from t7_c;
select count(*)
  from (select * from t7 union 
        select * from t7_c) a;

select count(*) from t8;
select count(*) from t8_c;
select count(*)
  from (select * from t8 union 
        select * from t8_c) a;

select count(*) from t9;
select count(*) from t9_c;
select count(*)
  from (select * from t9 union 
        select * from t9_c) a;

drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b $the_backup_id -n 1 -m -r --ndb-nodegroup_map '(0,0)' --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b $the_backup_id -n 2 -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT

select count(*) from t1;
select count(*) from t1_c;
select count(*)
  from (select * from t1 union 
        select * from t1_c) a;

select count(*) from t2;
select count(*) from t2_c;
select count(*)
  from (select * from t2 union 
        select * from t2_c) a;

select count(*) from t3;
select count(*) from t3_c;
select count(*)
  from (select * from t3 union 
        select * from t3_c) a;

select count(*) from t4;
select count(*) from t4_c;
select count(*)
  from (select * from t4 union 
        select * from t4_c) a;

select count(*) from t5;
select count(*) from t5_c;
select count(*)
  from (select * from t5 union 
        select * from t5_c) a;

select count(*) from t6;
select count(*) from t6_c;
select count(*)
  from (select * from t6 union 
        select * from t6_c) a;

select count(*) from t7;
select count(*) from t7_c;
select count(*)
  from (select * from t7 union 
        select * from t7_c) a;

select count(*) from t8;
select count(*) from t8_c;
select count(*)
  from (select * from t8 union 
        select * from t8_c) a;

select count(*) from t9;
select count(*) from t9_c;
select count(*)
  from (select * from t9 union 
        select * from t9_c) a;

#
# Drop all table except t2_c
#   This to make sure that error returned from ndb_restore above is 
#     guaranteed to be from t2_c, this since order of tables in backup
#     is none deterministic
# 
drop table t1_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
--source include/ndb_backup.inc
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults --core=0 -b $the_backup_id -n 1 -m -r --ndb-nodegroup_map '(0,1)' $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id 2>&1 | grep Translate || true

#
# Cleanup
#

--disable_warnings
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
drop table if exists t2_c;
--enable_warnings

#
# Test BUG#10287
#

--exec $NDB_TOOLS_DIR/ndb_select_all --no-defaults -d sys -D , SYSTAB_0 | grep 520093696, | sed "s/,$the_backup_id/,<the_backup_id>/"

# End of 4.1 tests

Thread
bk commit into 5.1 tree (tomas:1.2192) BUG#18595tomas14 Jun