List:Commits« Previous MessageNext Message »
From:stewart Date:October 11 2007 8:45am
Subject:[patch 3/8] WL4081: Add compressed file support to AsyncFile (azio) and support compressed backups.
View as plain text  
- add azio to NDB
- add config option for CompressedBackup
- add ability to change CompressedBackup (per-node) online using DUMP
interface
- add test for mysql-test-run for compressed backups
  (NOTE: won't pass unless read compressed backups patch also applied)

Part of the design here is to by default (i.e. without any of the compressed
options enabled) - NOT futz with the code paths for normal IO. So if
any bug/problem is found - disabling the compression options means
none of that code is run.

Index: telco-6.2/storage/ndb/include/kernel/signaldata/FsOpenReq.hpp
===================================================================
--- telco-6.2.orig/storage/ndb/include/kernel/signaldata/FsOpenReq.hpp	2007-10-11
18:20:06.840816095 +1000
+++ telco-6.2/storage/ndb/include/kernel/signaldata/FsOpenReq.hpp	2007-10-11
18:20:29.865945400 +1000
@@ -87,6 +87,7 @@ private:
   STATIC_CONST( OM_INIT           = 0x1000 ); // 
   STATIC_CONST( OM_CHECK_SIZE     = 0x2000 );
   STATIC_CONST( OM_DIRECT         = 0x4000 );
+  STATIC_CONST( OM_GZ             = 0x8000 );
   
   enum Suffixes {
     S_DATA = 0,
Index: telco-6.2/storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp
===================================================================
--- telco-6.2.orig/storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp	2007-10-11
18:20:06.952821589 +1000
+++ telco-6.2/storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp	2007-10-11
18:20:29.901947165 +1000
@@ -94,6 +94,7 @@ AsyncFile::AsyncFile(SimulatedBlock& fs)
   theFd(-1),
 #endif
   theReportTo(0),
+  use_gz(0),
   theMemoryChannelPtr(NULL),
   m_fs(fs)
 {
@@ -450,6 +451,8 @@ void AsyncFile::openReq(Request* request
     break;
     return;
   }
+  if(flags & FsOpenReq::OM_GZ)
+    use_gz= 1;
 
   // allow for user to choose any permissionsa with umask
   const int mode = S_IRUSR | S_IWUSR |
@@ -471,13 +474,15 @@ void AsyncFile::openReq(Request* request
   }
 
 no_odirect:
-  if (-1 == (theFd = ::open(theFileName.c_str(), new_flags, mode))) 
+  theFd = ::open(theFileName.c_str(), new_flags, mode);
+  if (-1 == theFd)
   {
     PRINT_ERRORANDFLAGS(new_flags);
     if ((errno == ENOENT) && (new_flags & O_CREAT)) 
     {
       createDirectories();
-      if (-1 == (theFd = ::open(theFileName.c_str(), new_flags, mode))) 
+      theFd = ::open(theFileName.c_str(), new_flags, mode);
+      if (-1 == theFd)
       {
 #ifdef O_DIRECT
 	if (new_flags & O_DIRECT)
@@ -561,7 +566,11 @@ no_odirect:
       Uint32 size = request->par.open.page_size;
       char* buf = (char*)m_page_ptr.p;
       while(size > 0){
-	const int n = write(theFd, buf, size);
+        int n;
+	if(use_gz)
+          n= azwrite(&azf,buf,size);
+        else
+          n= write(theFd, buf, size);
 	if(n == -1 && errno == EINTR)
 	{
 	  continue;
@@ -643,6 +652,12 @@ no_odirect:
 #endif
   }
 #endif
+  if(use_gz)
+    if(!azdopen(&azf, theFd, O_CREAT|O_RDWR|O_BINARY))
+    {
+      ndbout_c("Stewart's brain broke");
+      abort();
+    }
 }
 
 int
@@ -790,9 +805,14 @@ AsyncFile::extendfile(Request* request) 
       ndbd_free(pbuf,maxSize);
       return -1;
     }
-    return_value = ::write(theFd, 
-                           pbuf,
-                           maxSize);
+    if(use_gz)
+      return_value = azwrite(&azf,
+                             pbuf,
+                             maxSize);
+    else
+      return_value = ::write(theFd,
+                             pbuf,
+                             maxSize);
     if ((return_value == -1) || (return_value != maxSize)) {
       ndbd_free(pbuf,maxSize);
       return -1;
@@ -913,9 +933,15 @@ AsyncFile::writeBuffer(const char * buf,
     }
     
 #elif ! defined(HAVE_PWRITE)
-    return_value = ::write(theFd, buf, bytes_to_write);
+    if(use_gz)
+      return_value= azwrite(&azf, buf, bytes_to_write);
+    else
+      return_value = ::write(theFd, buf, bytes_to_write);
 #else // UNIX
-    return_value = ::pwrite(theFd, buf, bytes_to_write, offset);
+    if(use_gz)
+      return_value= azwrite(&azf, buf, bytes_to_write);
+    else
+      return_value = ::pwrite(theFd, buf, bytes_to_write, offset);
 #endif
 #ifndef NDB_WIN32
     if (return_value == -1 && errno == EINTR) {
@@ -968,7 +994,13 @@ AsyncFile::closeReq(Request * request)
   }
   hFile = INVALID_HANDLE_VALUE;
 #else
-  if (-1 == ::close(theFd)) {
+  int r;
+  if(use_gz)
+    r= azclose(&azf);
+  else
+    ::close(theFd);
+  use_gz= 0;
+  if (-1 == r) {
 #ifndef DBUG_OFF
     if (theFd == -1) {
       DEBUG(ndbout_c("close on fd = -1"));
@@ -1031,7 +1063,11 @@ AsyncFile::appendReq(Request * request){
   }
 #else
   while(size > 0){
-    const int n = write(theFd, buf, size);
+    int n;
+    if(use_gz)
+      n= azwrite(&azf,buf,size);
+    else
+      n= write(theFd, buf, size);
     if(n == -1 && errno == EINTR){
       continue;
     }
Index: telco-6.2/storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp
===================================================================
--- telco-6.2.orig/storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp	2007-10-11
18:20:06.960821981 +1000
+++ telco-6.2/storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp	2007-10-11
18:20:30.025953247 +1000
@@ -97,6 +97,8 @@
 #include "MemoryChannel.hpp"
 #include "Filename.hpp"
 
+#include <azlib.h>
+
 const int ERR_ReadUnderflow = 1000;
 
 const int WRITECHUNK = 262144;
@@ -226,7 +228,10 @@ private:
 #endif
 
   Uint32 m_open_flags; // OM_ flags from request to open file
-  
+
+  int use_gz;
+  azio_stream azf;
+
   MemoryChannel<Request> *theReportTo;
   MemoryChannel<Request>* theMemoryChannelPtr;
   
Index: telco-6.2/storage/ndb/src/kernel/blocks/backup/Backup.cpp
===================================================================
--- telco-6.2.orig/storage/ndb/src/kernel/blocks/backup/Backup.cpp	2007-10-11
18:20:06.968822373 +1000
+++ telco-6.2/storage/ndb/src/kernel/blocks/backup/Backup.cpp	2007-10-11
18:20:30.033953640 +1000
@@ -54,6 +54,7 @@
 
 #include <signaldata/WaitGCP.hpp>
 #include <signaldata/LCP.hpp>
+#include <signaldata/DumpStateOrd.hpp>
 
 #include <signaldata/DumpStateOrd.hpp>
 
@@ -550,6 +551,18 @@ Backup::execDUMP_STATE_ORD(Signal* signa
 		 lcp_file.p->pages.getSize());
     }
   }
+
+  if(signal->theData[0] == DumpStateOrd::DumpBackup)
+  {
+    /* Display a bunch of stuff about Backup defaults */
+    infoEvent("Compressed Backup: %d", c_defaults.m_compressed_backup);
+  }
+
+  if(signal->theData[0] == DumpStateOrd::DumpBackupSetCompressed)
+  {
+    c_defaults.m_compressed_backup= signal->theData[1];
+    infoEvent("Compressed Backup: %d", c_defaults.m_compressed_backup);
+  }
 }
 
 bool
@@ -2876,6 +2889,10 @@ Backup::openFiles(Signal* signal, Backup
     FsOpenReq::OM_CREATE | 
     FsOpenReq::OM_APPEND |
     FsOpenReq::OM_AUTOSYNC;
+
+  if (c_defaults.m_compressed_backup)
+    req->fileFlags |= FsOpenReq::OM_GZ;
+
   FsOpenReq::v2_setCount(req->fileNumber, 0xFFFFFFFF);
   req->auto_sync_size = c_defaults.m_disk_synch_size;
   /**
Index: telco-6.2/storage/ndb/src/kernel/blocks/Makefile.am
===================================================================
--- telco-6.2.orig/storage/ndb/src/kernel/blocks/Makefile.am	2007-10-11 18:20:07.048826297
+1000
+++ telco-6.2/storage/ndb/src/kernel/blocks/Makefile.am	2007-10-11 18:20:30.109957367
+1000
@@ -22,7 +22,8 @@ SUBDIRS = \
 
 noinst_LIBRARIES = libblocks.a
 
-INCLUDES_LOC = -I$(top_srcdir)/storage/ndb/src/kernel/blocks/dblqh
+INCLUDES_LOC = -I$(top_srcdir)/storage/ndb/src/kernel/blocks/dblqh \
+		@ZLIB_INCLUDES@
 libblocks_a_SOURCES = tsman.cpp lgman.cpp pgman.cpp diskpage.cpp restore.cpp\
   cmvmi/Cmvmi.cpp \
   dbacc/DbaccInit.cpp dbacc/DbaccMain.cpp \
Index: telco-6.2/storage/ndb/include/mgmapi/mgmapi_config_parameters.h
===================================================================
--- telco-6.2.orig/storage/ndb/include/mgmapi/mgmapi_config_parameters.h	2007-10-11
18:20:06.864817272 +1000
+++ telco-6.2/storage/ndb/include/mgmapi/mgmapi_config_parameters.h	2007-10-11
18:20:47.494810035 +1000
@@ -123,6 +123,8 @@
 #define CFG_DB_MICRO_GCP_INTERVAL     170 /* micro gcp */
 #define CFG_DB_MICRO_GCP_TIMEOUT      171
 
+#define CFG_DB_COMPRESSED_BACKUP      172
+
 #define CFG_DB_SGA                    198 /* super pool mem */
 #define CFG_DB_DATA_MEM_2             199 /* used in special build in 5.1 */
 
Index: telco-6.2/storage/ndb/src/kernel/blocks/backup/Backup.hpp
===================================================================
--- telco-6.2.orig/storage/ndb/src/kernel/blocks/backup/Backup.hpp	2007-10-11
18:20:06.976822766 +1000
+++ telco-6.2/storage/ndb/src/kernel/blocks/backup/Backup.hpp	2007-10-11
18:20:30.289966196 +1000
@@ -551,6 +551,7 @@ public:
     Uint32 m_disk_synch_size;
     Uint32 m_diskless;
     Uint32 m_o_direct;
+    Uint32   m_compressed_backup;
   };
   
   /**
Index: telco-6.2/storage/ndb/src/mgmsrv/ConfigInfo.cpp
===================================================================
--- telco-6.2.orig/storage/ndb/src/mgmsrv/ConfigInfo.cpp	2007-10-11 18:20:07.072827475
+1000
+++ telco-6.2/storage/ndb/src/mgmsrv/ConfigInfo.cpp	2007-10-11 18:20:30.397971494 +1000
@@ -1405,6 +1405,17 @@ const ConfigInfo::ParamInfo ConfigInfo::
     "false",
     "false",
     "true"},
+  {
+    CFG_DB_COMPRESSED_BACKUP,
+    "CompressedBackup",
+    DB_TOKEN,
+    "Use zlib to compress BACKUPs as they are written",
+    ConfigInfo::CI_USED,
+    true,
+    ConfigInfo::CI_BOOL,
+    "false",
+    "false",
+    "true"},
 
   /***************************************************************************
    * API
Index: telco-6.2/storage/ndb/src/kernel/blocks/backup/BackupInit.cpp
===================================================================
--- telco-6.2.orig/storage/ndb/src/kernel/blocks/backup/BackupInit.cpp	2007-10-11
18:20:07.004824139 +1000
+++ telco-6.2/storage/ndb/src/kernel/blocks/backup/BackupInit.cpp	2007-10-11
18:20:30.477975418 +1000
@@ -161,6 +161,8 @@ Backup::execREAD_CONFIG_REQ(Signal* sign
 			    &c_defaults.m_disk_write_speed);
   ndb_mgm_get_int_parameter(p, CFG_DB_DISK_SYNCH_SIZE,
 			    &c_defaults.m_disk_synch_size);
+  ndb_mgm_get_int_parameter(p, CFG_DB_COMPRESSED_BACKUP,
+			    &c_defaults.m_compressed_backup);
 
   m_backup_report_frequency = 0;
   ndb_mgm_get_int_parameter(p, CFG_DB_BACKUP_REPORT_FREQUENCY, 
Index: telco-6.2/storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp
===================================================================
--- telco-6.2.orig/storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp	2007-10-11
18:20:06.844816291 +1000
+++ telco-6.2/storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp	2007-10-11
18:20:30.533978164 +1000
@@ -156,7 +156,9 @@ public:
     
     DumpTsman = 9800, 
     DumpLgman = 10000,
-    DumpPgman = 11000
+    DumpPgman = 11000,
+    DumpBackup = 13000,
+    DumpBackupSetCompressed = 13001
   };
 public:
   
Index: telco-6.2/mysql-test/suite/ndb/r/ndb_restore_compressed.result
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ telco-6.2/mysql-test/suite/ndb/r/ndb_restore_compressed.result	2007-10-11
18:20:31.154008575 +1000
@@ -0,0 +1,490 @@
+use test;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c,t10_c;
+CREATE TABLE `t1_c` (
+`capgoaledatta` mediumint(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'),(400,'4','q3plus.qt'),(1,'3','q3.net'),(3,'4','q3.net'),(3000,'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 (500,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'),(5,0,'',NULL,NULL,'');
+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 ROW_FORMAT=FIXED;
+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),(2200,'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),(32000,'463641969502','sqasdt.q3.net','N/A',1,'6'),(20,'joe','q3.net','joedesswd',0,NULL),(290000000,'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 auto_increment,
+`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 t10_c (a INT AUTO_INCREMENT KEY) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
+INSERT INTO t10_c VALUES (1),(2),(3);
+insert into t10_c values (10000),(2000),(3000);
+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 table t10 engine=myisam as select * from t10_c;
+ForceVarPart: 0
+ForceVarPart: 1
+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,t10_c;
+ForceVarPart: 0
+ForceVarPart: 1
+select * from information_schema.columns where table_name = "t1_c";
+TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	COLUMN_NAME	ORDINAL_POSITION	COLUMN_DEFAULT	IS_NULLABLE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	COLUMN_TYPE	COLUMN_KEY	EXTRA	PRIVILEGES	COLUMN_COMMENT
+NULL	test	t1_c	capgoaledatta	1	NULL	NO	mediumint	NULL	NULL	7	0	NULL	NULL	mediumint(5)
unsigned	PRI	auto_increment	select,insert,update,references	
+NULL	test	t1_c	goaledatta	2		NO	char	2	2	NULL	NULL	latin1	latin1_swedish_ci	char(2)	PRI		select,insert,update,references	
+NULL	test	t1_c	maturegarbagefa	3		NO	varchar	32	32	NULL	NULL	latin1	latin1_swedish_ci	varchar(32)	PRI		select,insert,update,references	
+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(*)
+7
+select count(*) from t2_c;
+count(*)
+7
+select count(*)
+from (select * from t2 union 
+select * from t2_c) a;
+count(*)
+7
+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
+select * from t10_c order by a;
+a
+1
+2
+3
+2000
+3000
+10000
+show table status like 't1_c';
+Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
+X	X	X	X	X	X	X	X	X	X	3001	X	X	X	X	X	X	X
+show table status like 't2_c';
+Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
+X	X	X	X	X	X	X	X	X	X	501	X	X	X	X	X	X	X
+show table status like 't4_c';
+Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
+X	X	X	X	X	X	X	X	X	X	290000001	X	X	X	X	X	X	X
+show table status like 't7_c';
+Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
+X	X	X	X	X	X	X	X	X	X	29	X	X	X	X	X	X	X
+show table status like 't10_c';
+Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
+X	X	X	X	X	X	X	X	X	X	10001	X	X	X	X	X	X	X
+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,t10_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(*)
+7
+select count(*) from t2_c;
+count(*)
+7
+select count(*)
+from (select * from t2 union 
+select * from t2_c) a;
+count(*)
+7
+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,t10_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(*)
+7
+select count(*) from t2_c;
+count(*)
+7
+select count(*)
+from (select * from t2 union 
+select * from t2_c) a;
+count(*)
+7
+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,t10_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 if exists t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+drop table if exists t2_c;
+520093696,<the_backup_id>
Index: telco-6.2/mysql-test/suite/ndb/t/ndb_restore_compressed.test
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ telco-6.2/mysql-test/suite/ndb/t/ndb_restore_compressed.test	2007-10-11
18:20:31.274014461 +1000
@@ -0,0 +1,3 @@
+--exec $NDB_MGM --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT" -e "all
dump 13001 1" >> $NDB_TOOLS_OUTPUT
+-- source suite/ndb/t/ndb_restore.test
+--exec $NDB_MGM --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT" -e "all
dump 13001 0" >> $NDB_TOOLS_OUTPUT

--
Stewart Smith
Thread
[patch 0/8] WL4081 NDB Compressed LCP and Backupstewart11 Oct
  • [patch 4/8] WL4081: read compressed backup filesstewart11 Oct
  • [patch 3/8] WL4081: Add compressed file support to AsyncFile (azio) and support compressed backups.stewart11 Oct
  • [patch 1/8] WL4081: Copy azio for NDBstewart11 Oct
  • [patch 6/8] WL4081: Add support to AsyncFile for reading zlib compressed files.stewart11 Oct
  • [patch 5/8] WL4081: add support for *storing* compressed LCPstewart11 Oct
  • [patch 8/8] WL4081 Futz with mtr ndb config to enable compressed lcp, backup and O_DIRECTstewart11 Oct
  • [patch 7/8] WL4081 Allow use of direct IO (O_DIRECT) with aziostewart11 Oct
  • [patch 2/8] WL4081: Make azio build for NDBstewart11 Oct
  • Re: [patch 0/8] WL4081 NDB Compressed LCP and BackupStewart Smith11 Oct