List:Commits« Previous MessageNext Message »
From:tomas Date:April 20 2006 11:52pm
Subject:bk commit into 5.1 tree (tomas:1.2374) BUG#18594
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.2374 06/04/21 01:51:58 tomas@stripped +14 -0
  Bug#18594 ndb_restore log boken in 5.1
  - added compatability with 5.0
  - added test case for compatability with 5.0 and 5.1

  mysql-test/std_data/ndb_backup51/BACKUP-1-0.2.Data
    1.1 06/04/21 01:39:42 tomas@stripped +4025 -0
    New BitKeeper file ``mysql-test/std_data/ndb_backup51/BACKUP-1-0.2.Data''

  mysql-test/std_data/ndb_backup51/BACKUP-1-0.2.Data
    1.0 06/04/21 01:39:42 tomas@stripped +0 -0
    BitKeeper file /home/tomas/mysql-5.1-new/mysql-test/std_data/ndb_backup51/BACKUP-1-0.2.Data

  mysql-test/std_data/ndb_backup51/BACKUP-1-0.1.Data
    1.1 06/04/21 01:39:41 tomas@stripped +4105 -0
    New BitKeeper file ``mysql-test/std_data/ndb_backup51/BACKUP-1-0.1.Data''

  mysql-test/std_data/ndb_backup50/BACKUP-1.2.log
    1.1 06/04/21 01:39:41 tomas@stripped +160 -0
    New BitKeeper file ``mysql-test/std_data/ndb_backup50/BACKUP-1.2.log''

  mysql-test/std_data/ndb_backup51/BACKUP-1-0.1.Data
    1.0 06/04/21 01:39:41 tomas@stripped +0 -0
    BitKeeper file /home/tomas/mysql-5.1-new/mysql-test/std_data/ndb_backup51/BACKUP-1-0.1.Data

  mysql-test/std_data/ndb_backup50/BACKUP-1.2.log
    1.0 06/04/21 01:39:41 tomas@stripped +0 -0
    BitKeeper file /home/tomas/mysql-5.1-new/mysql-test/std_data/ndb_backup50/BACKUP-1.2.log

  mysql-test/std_data/ndb_backup50/BACKUP-1.1.log
    1.1 06/04/21 01:39:40 tomas@stripped +170 -0
    New BitKeeper file ``mysql-test/std_data/ndb_backup50/BACKUP-1.1.log''

  mysql-test/std_data/ndb_backup50/BACKUP-1.1.log
    1.0 06/04/21 01:39:40 tomas@stripped +0 -0
    BitKeeper file /home/tomas/mysql-5.1-new/mysql-test/std_data/ndb_backup50/BACKUP-1.1.log

  mysql-test/std_data/ndb_backup50/BACKUP-1-0.2.Data
    1.1 06/04/21 01:39:27 tomas@stripped +2525 -0
    New BitKeeper file ``mysql-test/std_data/ndb_backup50/BACKUP-1-0.2.Data''

  mysql-test/std_data/ndb_backup50/BACKUP-1-0.1.Data
    1.1 06/04/21 01:39:27 tomas@stripped +2584 -0
    New BitKeeper file ``mysql-test/std_data/ndb_backup50/BACKUP-1-0.1.Data''

  storage/ndb/tools/restore/restore_main.cpp
    1.43 06/04/21 01:39:27 tomas@stripped +1 -4
    Bug#18594 ndb_restore log boken in 5.1
    - added compatability with 5.0
    - added test case for compatability with 5.0 and 5.1

  storage/ndb/tools/restore/Restore.hpp
    1.25 06/04/21 01:39:27 tomas@stripped +1 -1
    Bug#18594 ndb_restore log boken in 5.1
    - added compatability with 5.0
    - added test case for compatability with 5.0 and 5.1

  storage/ndb/tools/restore/Restore.cpp
    1.37 06/04/21 01:39:27 tomas@stripped +31 -13
    Bug#18594 ndb_restore log boken in 5.1
    - added compatability with 5.0
    - added test case for compatability with 5.0 and 5.1

  storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp
    1.56 06/04/21 01:39:27 tomas@stripped +2 -1
    Bug#18594 ndb_restore log boken in 5.1
    - added compatability with 5.0
    - added test case for compatability with 5.0 and 5.1

  storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp
    1.124 06/04/21 01:39:27 tomas@stripped +11 -2
    Bug#18594 ndb_restore log boken in 5.1
    - added compatability with 5.0
    - added test case for compatability with 5.0 and 5.1

  storage/ndb/src/kernel/blocks/backup/BackupFormat.hpp
    1.7 06/04/21 01:39:27 tomas@stripped +11 -0
    Bug#18594 ndb_restore log boken in 5.1
    - added compatability with 5.0
    - added test case for compatability with 5.0 and 5.1

  mysql-test/std_data/ndb_backup50/BACKUP-1-0.2.Data
    1.0 06/04/21 01:39:27 tomas@stripped +0 -0
    BitKeeper file /home/tomas/mysql-5.1-new/mysql-test/std_data/ndb_backup50/BACKUP-1-0.2.Data

  mysql-test/std_data/ndb_backup50/BACKUP-1-0.1.Data
    1.0 06/04/21 01:39:27 tomas@stripped +0 -0
    BitKeeper file /home/tomas/mysql-5.1-new/mysql-test/std_data/ndb_backup50/BACKUP-1-0.1.Data

  mysql-test/t/ndb_restore.test
    1.18 06/04/21 01:39:26 tomas@stripped +35 -0
    Bug#18594 ndb_restore log boken in 5.1
    - added compatability with 5.0
    - added test case for compatability with 5.0 and 5.1

  mysql-test/r/ndb_restore.result
    1.13 06/04/21 01:39:26 tomas@stripped +113 -0
    Bug#18594 ndb_restore log boken in 5.1
    - added compatability with 5.0
    - added test case for compatability with 5.0 and 5.1

# 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

--- 1.6/storage/ndb/src/kernel/blocks/backup/BackupFormat.hpp	2006-04-20 22:04:02 +02:00
+++ 1.7/storage/ndb/src/kernel/blocks/backup/BackupFormat.hpp	2006-04-21 01:39:27 +02:00
@@ -146,6 +146,17 @@
       Uint32 FragId;
       Uint32 Data[1]; // Len = Length - 3
     };
+
+    /**
+     * Log Entry pre NDBD_FRAGID_VERSION
+     */
+    struct LogEntry_no_fragid {
+      Uint32 Length;
+      Uint32 TableId;
+      // If TriggerEvent & 0x10000 == true then GCI is right after data
+      Uint32 TriggerEvent;
+      Uint32 Data[1]; // Len = Length - 2
+    };
   };
 
   /**

--- 1.36/storage/ndb/tools/restore/Restore.cpp	2006-04-20 22:04:02 +02:00
+++ 1.37/storage/ndb/tools/restore/Restore.cpp	2006-04-21 01:39:27 +02:00
@@ -25,6 +25,7 @@
 #include <SimpleProperties.hpp>
 #include <signaldata/DictTabInfo.hpp>
 #include <ndb_limits.h>
+#include <NdbAutoPtr.hpp>
 
 #include "../../../../sql/ha_ndbcluster_tables.h"
 
@@ -291,6 +292,7 @@
         strcmp(tableName, "NDB$EVENTS_0") == 0 ||
         strcmp(tableName, "sys/def/SYSTAB_0") == 0 ||
         strcmp(tableName, "sys/def/NDB$EVENTS_0") == 0 ||
+        strcmp(tableName, "cluster_replication/def/" NDB_APPLY_TABLE) == 0 ||
         strcmp(tableName, NDB_REP_DB "/def/" NDB_APPLY_TABLE) == 0 ||
         strcmp(tableName, NDB_REP_DB "/def/" NDB_SCHEMA_TABLE)== 0 )
       table->isSysTable = true;
@@ -377,7 +379,8 @@
 RestoreMetaData::parseTableDescriptor(const Uint32 * data, Uint32 len)
 {
   NdbTableImpl* tableImpl = 0;
-  int ret = NdbDictInterface::parseTableInfo(&tableImpl, data, len, false);
+  int ret = NdbDictInterface::parseTableInfo(&tableImpl, data, len, false,
+                                             m_fileHeader.NdbVersion);
   
   if (ret != 0) {
     err << "parseTableInfo " << " failed" << endl;
@@ -956,13 +959,16 @@
 }
 
 const LogEntry *
-RestoreLogIterator::getNextLogEntry(int & res, bool *alloc_flag) {
+RestoreLogIterator::getNextLogEntry(int & res) {
   // Read record length
   typedef BackupFormat::LogFile::LogEntry LogE;
-
+  typedef BackupFormat::LogFile::LogEntry_no_fragid LogE_no_fragid;
+  const Uint32 offset= 3;
+  assert(offset == (offsetof(LogE, Data) >> 2) - 1);
   LogE * logE= 0;
   Uint32 len= ~0;
   const Uint32 stopGCP = m_metaData.getStopGCP();
+  NdbAutoPtr<char> ap1;
   do {
     if (buffer_read_ahead(&len, sizeof(Uint32), 1) != 1){
       res= -1;
@@ -988,21 +994,33 @@
         We set FragId to 0 in older versions (these versions
         do not support restore of user defined partitioned
         tables.
+
+        These log entries miss one Uint32 FragId, hence missing_len=1
+
+        Reconstruct a new log entry with old.
       */
+      const Uint32 missing_len= 1;
+      assert((offsetof(LogE, Data) - offsetof(LogE_no_fragid, Data)) >> 2 ==
+             missing_len);
+      LogE_no_fragid * logE_no_fragid= (LogE_no_fragid *)logE;
+      
       int i;
-      LogE *tmpLogE = (LogE*)NdbMem_Allocate(data_len + 4);
+      LogE *tmpLogE= (LogE*)NdbMem_Allocate(data_len + missing_len*4);
       if (!tmpLogE)
       {
         res = -2;
         return 0;
       }
-      tmpLogE->Length = logE->Length;
-      tmpLogE->TableId = logE->TableId;
-      tmpLogE->TriggerEvent = logE->TriggerEvent;
-      tmpLogE->FragId = 0;
-      for (i = 0; i < len - 3; i++)
-        tmpLogE->Data[i] = logE->Data[i-1];
-      *alloc_flag= true;
+      ap1.reset((char*)tmpLogE);
+      bzero(tmpLogE, data_len + missing_len*4);
+      /* correct len to reflect new logEntry version length */
+      len+= missing_len;
+      tmpLogE->Length = logE_no_fragid->Length;
+      tmpLogE->TableId = logE_no_fragid->TableId;
+      tmpLogE->TriggerEvent = logE_no_fragid->TriggerEvent;
+      for (i = 0; i < len - offset; i++)
+        tmpLogE->Data[i] = logE_no_fragid->Data[i];
+      logE= tmpLogE;
     }
     logE->TableId= ntohl(logE->TableId);
     logE->TriggerEvent= ntohl(logE->TriggerEvent);
@@ -1012,7 +1030,7 @@
     
     if(hasGcp){
       len--;
-      m_last_gci = ntohl(logE->Data[len-2]);
+      m_last_gci = ntohl(logE->Data[len-offset]);
     }
   } while(m_last_gci > stopGCP + 1);
   
@@ -1036,7 +1054,7 @@
   m_logEntry.clear();
 
   AttributeHeader * ah = (AttributeHeader *)&logE->Data[0];
-  AttributeHeader *end = (AttributeHeader *)&logE->Data[len - 3];
+  AttributeHeader *end = (AttributeHeader *)&logE->Data[len - offset];
   AttributeS *  attr;
   m_logEntry.m_frag_id = ntohl(logE->FragId);
   while(ah < end){

--- 1.24/storage/ndb/tools/restore/Restore.hpp	2006-03-23 04:56:54 +01:00
+++ 1.25/storage/ndb/tools/restore/Restore.hpp	2006-04-21 01:39:27 +02:00
@@ -386,7 +386,7 @@
   RestoreLogIterator(const RestoreMetaData &);
   virtual ~RestoreLogIterator() {};
 
-  const LogEntry * getNextLogEntry(int & res, bool *alloc_flag);
+  const LogEntry * getNextLogEntry(int & res);
 };
 
 NdbOut& operator<<(NdbOut& ndbout, const TableS&);

--- 1.42/storage/ndb/tools/restore/restore_main.cpp	2006-03-23 04:56:54 +01:00
+++ 1.43/storage/ndb/tools/restore/restore_main.cpp	2006-04-21 01:39:27 +02:00
@@ -615,14 +615,11 @@
       }
       
       const LogEntry * logEntry = 0;
-      bool alloc_flag = false;
-      while ((logEntry = logIter.getNextLogEntry(res= 0, &alloc_flag)) != 0)
+      while ((logEntry = logIter.getNextLogEntry(res= 0)) != 0)
       {
 	if (checkSysTable(logEntry->m_table))
 	  for(Uint32 i= 0; i < g_consumers.size(); i++)
 	    g_consumers[i]->logEntry(* logEntry);
-        if (alloc_flag)
-          NdbMem_Free((void*)logEntry);
       }
       if (res < 0)
       {

--- 1.123/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp	2006-04-18 15:03:32 +02:00
+++ 1.124/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp	2006-04-21 01:39:27 +02:00
@@ -43,6 +43,7 @@
 #include <my_sys.h>
 #include <NdbEnv.h>
 #include <NdbMem.h>
+#include <ndb_version.h>
 
 #define DEBUG_PRINT 0
 #define INCOMPATIBLE_VERSION -2
@@ -1963,7 +1964,8 @@
 int
 NdbDictInterface::parseTableInfo(NdbTableImpl ** ret,
 				 const Uint32 * data, Uint32 len,
-				 bool fullyQualifiedNames)
+				 bool fullyQualifiedNames,
+                                 Uint32 version)
 {
   SimplePropertiesLinearReader it(data, len);
   DictTabInfo::Table *tableDesc;
@@ -2142,7 +2144,14 @@
   * ret = impl;
 
   NdbMem_Free((void*)tableDesc);
-  DBUG_ASSERT(impl->m_fragmentCount > 0);
+  if (version < MAKE_VERSION(5,1,3))
+  {
+    ;
+  } 
+  else
+  {
+    DBUG_ASSERT(impl->m_fragmentCount > 0);
+  }
   DBUG_RETURN(0);
 }
 

--- 1.55/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp	2006-03-23 22:48:55 +01:00
+++ 1.56/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp	2006-04-21 01:39:27 +02:00
@@ -454,7 +454,8 @@
 
   static int parseTableInfo(NdbTableImpl ** dst, 
 			    const Uint32 * data, Uint32 len,
-			    bool fullyQualifiedNames);
+			    bool fullyQualifiedNames,
+                            Uint32 version= 0xFFFFFFFF);
 
   static int parseFileInfo(NdbFileImpl &dst,
 			   const Uint32 * data, Uint32 len);

--- 1.12/mysql-test/r/ndb_restore.result	2006-03-10 21:43:47 +01:00
+++ 1.13/mysql-test/r/ndb_restore.result	2006-04-21 01:39:26 +02:00
@@ -467,3 +467,116 @@
 drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
 drop table if exists t2_c;
 520093696,<the_backup_id>
+DROP DATABASE IF EXISTS BANK;
+CREATE DATABASE BANK default charset=latin1 default collate=latin1_bin;
+USE BANK;
+SHOW TABLES;
+Tables_in_BANK
+ACCOUNT
+GL
+ACCOUNT_TYPE
+TRANSACTION
+SYSTEM_VALUES
+SELECT * FROM GL            ORDER BY TIME,ACCOUNT_TYPE;
+TIME	ACCOUNT_TYPE	BALANCE	DEPOSIT_COUNT	DEPOSIT_SUM	WITHDRAWAL_COUNT	WITHDRAWAL_SUM	PURGED
+0	0	10000000	0	0	0	0	1
+0	1	30000	0	0	0	0	1
+0	2	20000	0	0	0	0	1
+0	3	20000	0	0	0	0	1
+0	4	20000	0	0	0	0	1
+1	0	10000000	0	0	0	0	1
+1	1	30000	0	0	0	0	1
+1	2	20000	0	0	0	0	1
+1	3	20000	0	0	0	0	1
+1	4	20000	0	0	0	0	1
+2	0	9857062	54	225197	76	368135	1
+2	1	60601	174	822920	181	792319	1
+2	2	68832	117	531214	98	482382	1
+2	3	83550	106	521953	104	458403	1
+2	4	19955	118	532084	110	532129	1
+3	0	9732896	62	289563	88	413729	1
+3	1	51056	202	895888	193	905433	0
+3	2	67183	122	596787	127	598436	1
+3	3	97669	159	761743	141	747624	1
+3	4	141196	140	727808	136	606567	1
+4	0	9616621	138	603930	142	720205	0
+4	1	178927	348	1741521	344	1613650	0
+4	2	52141	236	1169929	232	1184971	0
+4	3	48938	228	1147957	244	1196688	0
+4	4	193373	246	1257982	234	1205805	0
+5	0	9515281	156	726253	166	827593	0
+5	1	253798	597	2840640	545	2765769	0
+5	2	102776	362	1821680	364	1771045	0
+5	3	87349	359	1778652	375	1740241	0
+5	4	130796	351	1727448	375	1790025	0
+SELECT * FROM ACCOUNT       ORDER BY ACCOUNT_ID;
+ACCOUNT_ID	OWNER	BALANCE	ACCOUNT_TYPE
+0	0	9531306	0
+1	3001	123844	1
+2	3002	30800	2
+3	3003	3133	3
+4	3004	6524	4
+5	3005	80152	1
+6	3006	107390	1
+7	3007	69448	2
+8	3008	663	3
+9	3009	136740	4
+SELECT COUNT(*) FROM TRANSACTION;
+COUNT(*)
+6649
+SELECT * FROM SYSTEM_VALUES ORDER BY SYSTEM_VALUES_ID;
+SYSTEM_VALUES_ID	VALUE
+0	4767
+1	6
+TRUNCATE GL;
+TRUNCATE ACCOUNT;
+TRUNCATE TRANSACTION;
+TRUNCATE SYSTEM_VALUES;
+TRUNCATE ACCOUNT_TYPE;
+SELECT * FROM GL            ORDER BY TIME,ACCOUNT_TYPE;
+TIME	ACCOUNT_TYPE	BALANCE	DEPOSIT_COUNT	DEPOSIT_SUM	WITHDRAWAL_COUNT	WITHDRAWAL_SUM	PURGED
+0	0	10000000	0	0	0	0	1
+0	1	30000	0	0	0	0	1
+0	2	20000	0	0	0	0	1
+0	3	20000	0	0	0	0	1
+0	4	20000	0	0	0	0	1
+1	0	10000000	0	0	0	0	1
+1	1	30000	0	0	0	0	1
+1	2	20000	0	0	0	0	1
+1	3	20000	0	0	0	0	1
+1	4	20000	0	0	0	0	1
+2	0	10000000	0	0	0	0	1
+2	1	30000	0	0	0	0	1
+2	2	20000	0	0	0	0	1
+2	3	20000	0	0	0	0	1
+2	4	20000	0	0	0	0	1
+3	0	9963591	14	59111	19	95520	0
+3	1	44264	49	255559	53	241295	0
+3	2	25515	39	177806	36	172291	0
+3	3	16779	26	129200	29	132421	0
+3	4	39851	43	182771	34	162920	0
+4	0	9733661	141	632616	162	862546	0
+4	1	63853	426	2005337	415	1985748	0
+4	2	140473	314	1548632	297	1433674	0
+4	3	13481	310	1528043	324	1531341	0
+4	4	138532	316	1540206	309	1441525	0
+SELECT * FROM ACCOUNT       ORDER BY ACCOUNT_ID;
+ACCOUNT_ID	OWNER	BALANCE	ACCOUNT_TYPE
+0	0	9679579	0
+1	3001	18130	1
+2	3002	12318	2
+3	3003	3049	3
+4	3004	39517	4
+5	3005	37051	1
+6	3006	144497	1
+7	3007	130670	2
+8	3008	13747	3
+9	3009	11442	4
+SELECT COUNT(*) FROM TRANSACTION;
+COUNT(*)
+4056
+SELECT * FROM SYSTEM_VALUES ORDER BY SYSTEM_VALUES_ID;
+SYSTEM_VALUES_ID	VALUE
+0	2297
+1	5
+DROP DATABASE BANK;
--- New file ---
+++ mysql-test/std_data/ndb_backup50/BACKUP-1-0.1.Data	06/04/21 01:39:27
NDBBCKUP

 
#



 


 
 
 



 


 


 
 
 
 
 

#

 
 
 

 
 





 

 

 

 


 


 

 


 



 
 
 
 
'
 
 




 
 
 
 
 

 

 

 
 








 
 

 
 
 




 


 
 

 
 
 

 
 
 


 


 


 
 


 
 
 
 /


 
 
 4
 
 
 .
 
 
 
 
 
 


 
--- New file ---
+++ mysql-test/std_data/ndb_backup50/BACKUP-1-0.2.Data	06/04/21 01:39:27
NDBBCKUP
 

 

 
 

 
 

 
 
 







 

 


 
 

 
 


 





 

 
 
'
 

 
 
 

 
 
 

 



 

 
 

 


 
 
 
 

 

 


 
 


 
 




 
 
 
 
 
 
 

 

 

 


 







 
 
 
 
 
 
 
 
 
 
 
 0
 
 
 
 


 
 
 


 
 
 
 
--- New file ---
+++ mysql-test/std_data/ndb_backup50/BACKUP-1.1.log	06/04/21 01:39:40
NDBBCKUP


 
 
 
 


 
	
--- New file ---
+++ mysql-test/std_data/ndb_backup50/BACKUP-1.2.log	06/04/21 01:39:41
NDBBCKUP


 


 


 
	
	
	
	
--- New file ---
+++ mysql-test/std_data/ndb_backup51/BACKUP-1-0.1.Data	06/04/21 01:39:41
NDBBCKUP

   ENGINE = NDB
 
 BANK
                           TIME BIGINT UNSIGNED NOT NULL,
                           AMOUNT INT UNSIGNED NOT NULL,
                           PRIMARY KEY USING HASH (TRANSACTION_ID,ACCOUNT))
   ENGINE = NDB
 
                  WITHDRAWAL_COUNT INT UNSIGNED NOT NULL,
                  WITHDRAWAL_SUM INT UNSIGNED NOT NULL,
                  PURGED INT UNSIGNED NOT NULL,
                  PRIMARY KEY USING HASH (TIME,ACCOUNT_TYPE))
   ENGINE = NDB
 
 
 
 






















 


 


 Z




 `










 












 `

 





























 B







 










 























 


























	
 
 
























 h	

























	
























 X













 





























 z!




















"

  


























































 
                  ACCOUNT_TYPE INT UNSIGNED NOT NULL,
                  BALANCE INT UNSIGNED NOT NULL,
                  DEPOSIT_COUNT INT UNSIGNED NOT NULL,
                  DEPOSIT_SUM INT UNSIGNED NOT NU
                       OWNER INT UNSIGNED NOT NULL,
                       BALANCE INT UNSIGNED NOT NULL,
                       ACCOUNT_TYPE INT UNSIGNED NOT NULL,
                       PRIMARY KEY
 


 
 


 
 
 
 B
 




 
 
 
 
 %
 
 
 


 


 
 
 
 
--- New file ---
+++ mysql-test/std_data/ndb_backup51/BACKUP-1-0.2.Data	06/04/21 01:39:42
NDBBCKUP


 ION
 






 






#




 =



 r






 l$








 

















 







#
 


	






















 









 

 


































 	'







	



















 










%
 

 














 









  







 

















 
























 
%




 0	


























 













 

































 





 v%





"








































 
                            DESCRIPTION CHAR(64) NOT NULL,
                            PRIMARY KEY USING HASH (ACCOUNT_TYPE_ID))
   ENGINE = NDB
                             VALUE BIGINT UNSIGNED NOT NULL,
                             PRIMARY KEY USING HASH (SYSTEM_VALUES_ID))
   ENGINE = NDB
                           ACCOUNT INT UNSIGNED NOT NULL,
                           ACCOUNT_TYPE INT UNSIGNED NOT NULL,
                           OTHER_ACCOUNT INT UNSIGNED NOT NULL,
   
 
 
 
 
 
 
 
 
 
 
 
 


 
 
 


 
 
 
 
 
 

--- 1.17/mysql-test/t/ndb_restore.test	2006-03-10 21:43:47 +01:00
+++ 1.18/mysql-test/t/ndb_restore.test	2006-04-21 01:39:26 +02:00
@@ -373,3 +373,38 @@
 --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
+
+#
+# Bug #18594 ndb_restore log boken in 5.1
+#
+
+--disable_warnings
+DROP DATABASE IF EXISTS BANK;
+--enable_warnings
+CREATE DATABASE BANK default charset=latin1 default collate=latin1_bin;
+USE BANK;
+--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 1 -n 1 -p 1 -m -r $MYSQL_TEST_DIR/std_data/ndb_backup51 >> $NDB_TOOLS_OUTPUT
+--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 1 -n 2 -p 1 -r $MYSQL_TEST_DIR/std_data/ndb_backup51 >> $NDB_TOOLS_OUTPUT
+SHOW TABLES;
+SELECT * FROM GL            ORDER BY TIME,ACCOUNT_TYPE;
+SELECT * FROM ACCOUNT       ORDER BY ACCOUNT_ID;
+SELECT COUNT(*) FROM TRANSACTION;
+SELECT * FROM SYSTEM_VALUES ORDER BY SYSTEM_VALUES_ID;
+
+#
+# verify restore of 5.0 backup
+# here we must use the already created tables as restoring the old
+# table definitions will not work
+#
+TRUNCATE GL;
+TRUNCATE ACCOUNT;
+TRUNCATE TRANSACTION;
+TRUNCATE SYSTEM_VALUES;
+TRUNCATE ACCOUNT_TYPE;
+--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 1 -n 1 -p 1 -r $MYSQL_TEST_DIR/std_data/ndb_backup50 >> $NDB_TOOLS_OUTPUT
+--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 1 -n 2 -p 1 -r $MYSQL_TEST_DIR/std_data/ndb_backup50 >> $NDB_TOOLS_OUTPUT
+SELECT * FROM GL            ORDER BY TIME,ACCOUNT_TYPE;
+SELECT * FROM ACCOUNT       ORDER BY ACCOUNT_ID;
+SELECT COUNT(*) FROM TRANSACTION;
+SELECT * FROM SYSTEM_VALUES ORDER BY SYSTEM_VALUES_ID;
+DROP DATABASE BANK;
Thread
bk commit into 5.1 tree (tomas:1.2374) BUG#18594tomas21 Apr