List:Commits« Previous MessageNext Message »
From:Jonas Oreland Date:September 25 2008 12:56pm
Subject:bzr push into mysql-5.1 branch (jonas:2665 to 2671) Bug#39518, Bug#39549
View as plain text  
 2671 Jonas Oreland	2008-09-25
      ndb - atrt
        fix replication in 6.0
        allow configurations wo/ cluster
modified:
  storage/ndb/test/run-test/db.cpp
  storage/ndb/test/run-test/main.cpp
  storage/ndb/test/run-test/setup.cpp

 2670 Tomas Ulin	2008-09-24
      Bug #39404  	Core in NdbEventBuffer::deleteUsedEventOperations()
modified:
  storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp

 2669 Jonas Oreland	2008-09-19
      ndb - bug#39549 - incorrectly handled resource shortage in TC::scanfragrec
modified:
  storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp
  storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
  storage/ndb/src/ndbapi/ndberror.c

 2668 Martin Skold	2008-09-19
      Added extra checking at constraint violation during mult-row insert
modified:
  mysql-test/suite/ndb/r/ndb_insert.result
  mysql-test/suite/ndb/t/ndb_insert.test

 2667 Jonas Oreland	2008-09-18
      ndb - bug#39518 - report error back on SUB_CREATE_REF
modified:
  storage/ndb/src/kernel/blocks/trix/Trix.cpp

 2666 Tomas Ulin	2008-09-17 [merge]
      merge
modified:
  storage/ndb/test/include/NDBT_Test.hpp
  storage/ndb/test/run-test/autotest-run.sh
  storage/ndb/test/src/NDBT_Test.cpp

 2665 Tomas Ulin	2008-09-11
      fix for machines with clock_monotonic defined but not implemented
modified:
  storage/ndb/src/common/portlib/NdbTick.c
  storage/ndb/src/common/util/ndb_init.cpp

=== modified file 'mysql-test/suite/ndb/r/ndb_insert.result'
--- a/mysql-test/suite/ndb/r/ndb_insert.result	2007-11-05 20:11:15 +0000
+++ b/mysql-test/suite/ndb/r/ndb_insert.result	2008-09-19 09:14:38 +0000
@@ -419,8 +419,8 @@ COUNT(*)
 INSERT INTO t1 VALUES (1,1,1);
 ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
 INSERT INTO t1 VALUES 
-(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
-(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
+(-1,-1,-1),(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
+(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10),(9999,9999,9999);
 ERROR 23000: Can't write; duplicate key in table 't1'
 select count(*) from t1;
 count(*)

=== modified file 'mysql-test/suite/ndb/t/ndb_insert.test'
--- a/mysql-test/suite/ndb/t/ndb_insert.test	2007-11-05 20:11:15 +0000
+++ b/mysql-test/suite/ndb/t/ndb_insert.test	2008-09-19 09:14:38 +0000
@@ -438,8 +438,8 @@ INSERT INTO t1 VALUES (1,1,1);
 
 --error 1022
 INSERT INTO t1 VALUES 
-(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
-(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
+(-1,-1,-1),(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
+(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10),(9999,9999,9999);
 
 select count(*) from t1;
 

=== modified file 'storage/ndb/src/common/portlib/NdbTick.c'
--- a/storage/ndb/src/common/portlib/NdbTick.c	2008-06-09 11:57:17 +0000
+++ b/storage/ndb/src/common/portlib/NdbTick.c	2008-09-11 11:40:54 +0000
@@ -26,15 +26,34 @@
 #ifdef HAVE_CLOCK_GETTIME
 
 #ifdef CLOCK_MONOTONIC
-#define CLOCK CLOCK_MONOTONIC
+static clockid_t NdbTick_clk_id = CLOCK_MONOTONIC;
 #else
-#define CLOCK CLOCK_REALTIME
+static clockid_t NdbTick_clk_id = CLOCK_REALTIME;
 #endif
 
+void NdbTick_Init()
+{
+  struct timespec tick_time;
+  if (clock_gettime(NdbTick_clk_id, &tick_time) == 0)
+    return;
+#ifdef CLOCK_MONOTONIC
+  fprintf(stderr, "Failed to use CLOCK_MONOTONIC for clock_realtime,"
+          " errno= %u\n", errno);
+  fflush(stderr);
+  NdbTick_clk_id = CLOCK_REALTIME;
+  if (clock_gettime(NdbTick_clk_id, &tick_time) == 0)
+    return;
+#endif
+  fprintf(stderr, "Failed to use CLOCK_REALTIME for clock_realtime,"
+          " errno=%u.  Aborting\n", errno);
+  fflush(stderr);
+  abort();
+}
+
 NDB_TICKS NdbTick_CurrentMillisecond(void)
 {
   struct timespec tick_time;
-  clock_gettime(CLOCK, &tick_time);
+  clock_gettime(NdbTick_clk_id, &tick_time);
 
   return 
     ((NDB_TICKS)tick_time.tv_sec)  * ((NDB_TICKS)MILLISEC_PER_SEC) +
@@ -44,12 +63,16 @@ NDB_TICKS NdbTick_CurrentMillisecond(voi
 int 
 NdbTick_CurrentMicrosecond(NDB_TICKS * secs, Uint32 * micros){
   struct timespec t;
-  int res = clock_gettime(CLOCK, &t);
+  int res = clock_gettime(NdbTick_clk_id, &t);
   * secs   = t.tv_sec;
   * micros = t.tv_nsec / 1000;
   return res;
 }
 #else
+void NdbTick_Init()
+{
+}
+
 NDB_TICKS NdbTick_CurrentMillisecond(void)
 {
   struct timeval tick_time;

=== modified file 'storage/ndb/src/common/util/ndb_init.cpp'
--- a/storage/ndb/src/common/util/ndb_init.cpp	2008-06-09 11:57:17 +0000
+++ b/storage/ndb/src/common/util/ndb_init.cpp	2008-09-11 11:40:54 +0000
@@ -27,6 +27,7 @@ extern void destroy_event_logger(class E
 static int ndb_init_called = 0;
 
 extern "C" void NdbCondition_Init();
+extern "C" void NdbTick_Init();
 
 extern "C"
 {
@@ -46,7 +47,7 @@ ndb_init_internal()
       exit(1);
     }
   }
-
+  NdbTick_Init();
   NdbCondition_Init();
 }
 

=== modified file 'storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp'
--- a/storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp	2008-08-11 10:41:11 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp	2008-09-19 21:49:00 +0000
@@ -123,6 +123,7 @@
 #define ZUNKNOWN_TABLE_ERROR 285
 #define ZNODEFAIL_BEFORE_COMMIT 286
 #define ZINDEX_CORRUPT_ERROR 287
+#define ZSCAN_FRAGREC_ERROR 291
 
 // ----------------------------------------
 // Seize error
@@ -1418,7 +1419,7 @@ private:
                            UintR anApiConnectPtr);
   void handleScanStop(Signal* signal, UintR aFailedNode);
   void initScanTcrec(Signal* signal);
-  void initScanrec(ScanRecordPtr,  const class ScanTabReq*,
+  Uint32 initScanrec(ScanRecordPtr,  const class ScanTabReq*,
 		   const UintR scanParallel, 
 		   const UintR noOprecPerFrag);
   void initScanfragrec(Signal* signal);

=== modified file 'storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp'
--- a/storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp	2008-08-20 20:00:56 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp	2008-09-19 21:49:00 +0000
@@ -9227,7 +9227,12 @@ void Dbtc::execSCAN_TABREQ(Signal* signa
   ndbrequire(transP->apiScanRec == RNIL);
   ndbrequire(scanptr.p->scanApiRec == RNIL);
 
-  initScanrec(scanptr, scanTabReq, scanParallel, noOprecPerFrag);
+  errCode = initScanrec(scanptr, scanTabReq, scanParallel, noOprecPerFrag);
+  if (unlikely(errCode))
+  {
+    jam();
+    goto SCAN_TAB_error;
+  }
 
   transP->apiScanRec = scanptr.i;
   transP->returncode = 0;
@@ -9317,10 +9322,11 @@ SCAN_TAB_error_no_state_change:
   return;
 }//Dbtc::execSCAN_TABREQ()
 
-void Dbtc::initScanrec(ScanRecordPtr scanptr,
-		       const ScanTabReq * scanTabReq,
-		       UintR scanParallel,
-		       UintR noOprecPerFrag) 
+Uint32
+Dbtc::initScanrec(ScanRecordPtr scanptr,
+		  const ScanTabReq * scanTabReq,
+		  UintR scanParallel,
+		  UintR noOprecPerFrag) 
 {
   const UintR ri = scanTabReq->requestInfo;
   scanptr.p->scanTcrec = tcConnectptr.i;
@@ -9355,7 +9361,11 @@ void Dbtc::initScanrec(ScanRecordPtr sca
   for (Uint32 i = 0; i < scanParallel; i++) {
     jam();
     ScanFragRecPtr ptr;
-    ndbrequire(list.seize(ptr));
+    if (unlikely(list.seize(ptr) == false))
+    {
+      jam();
+      goto errout;
+    }
     ptr.p->scanFragState = ScanFragRec::IDLE;
     ptr.p->scanRec = scanptr.i;
     ptr.p->scanFragId = 0;
@@ -9365,6 +9375,10 @@ void Dbtc::initScanrec(ScanRecordPtr sca
   (* (ScanTabReq::getRangeScanFlag(ri) ? 
       &c_counters.c_range_scan_count : 
       &c_counters.c_scan_count))++;
+  return 0;
+errout:
+  list.release();
+  return ZSCAN_FRAGREC_ERROR;
 }//Dbtc::initScanrec()
 
 void Dbtc::scanTabRefLab(Signal* signal, Uint32 errCode) 

=== modified file 'storage/ndb/src/kernel/blocks/trix/Trix.cpp'
--- a/storage/ndb/src/kernel/blocks/trix/Trix.cpp	2008-02-20 09:04:29 +0000
+++ b/storage/ndb/src/kernel/blocks/trix/Trix.cpp	2008-09-18 14:29:25 +0000
@@ -541,7 +541,11 @@ void Trix::execUTIL_PREPARE_REF(Signal* 
     return;
   }
   subRecPtr.p = subRec;
-  subRec->errorCode = BuildIndxRef::InternalError;
+  subRec->errorCode = (BuildIndxRef::ErrorCode)utilPrepareRef->errorCode;
+
+  UtilReleaseConf* conf = (UtilReleaseConf*)signal->getDataPtrSend();
+  conf->senderData = subRecPtr.i;
+  execUTIL_RELEASE_CONF(signal);
 }
 
 void Trix::execUTIL_EXECUTE_CONF(Signal* signal)
@@ -611,20 +615,27 @@ void Trix::execSUB_CREATE_REF(Signal* si
 {
   jamEntry();
   DBUG_ENTER("Trix::execSUB_CREATE_REF");
-  // THIS SIGNAL IS NEVER SENT FROM SUMA?
-  /*
+
   SubCreateRef * subCreateRef = (SubCreateRef *)signal->getDataPtr();
   SubscriptionRecPtr subRecPtr;
   SubscriptionRecord* subRec;
 
-  subRecPtr.i = subCreateRef->subscriberData;
-  if ((subRec = c_theSubscriptions.getPtr(subRecPtr.i)) == NULL) {
+  subRecPtr.i = subCreateRef->senderData;
+  if ((subRec = c_theSubscriptions.getPtr(subRecPtr.i)) == NULL)
+  {
     printf("Trix::execSUB_CREATE_REF: Failed to find subscription data %u\n",
subRecPtr.i);
     return;
   }
   subRecPtr.p = subRec;
-  buildFailed(signal, subRecPtr, BuildIndxRef::InternalError);
-  */
+  subRecPtr.p->errorCode = (BuildIndxRef::ErrorCode)subCreateRef->errorCode;
+
+  UtilReleaseReq * const req = (UtilReleaseReq*)signal->getDataPtrSend();
+  req->prepareId = subRecPtr.p->prepareId;
+  req->senderData = subRecPtr.i;
+
+  sendSignal(DBUTIL_REF, GSN_UTIL_RELEASE_REQ, signal,
+	     UtilReleaseReq::SignalLength, JBB);
+
   DBUG_VOID_RETURN;
 }
 
@@ -731,6 +742,7 @@ void Trix::setupSubscription(Signal* sig
 
   sendSignal(SUMA_REF, GSN_SUB_CREATE_REQ, 
 	     signal, SubCreateReq::SignalLength, JBB);
+
   DBUG_VOID_RETURN;
 }
 

=== modified file 'storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp'
--- a/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp	2008-06-25 12:49:13 +0000
+++ b/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp	2008-09-24 12:27:11 +0000
@@ -1326,7 +1326,9 @@ NdbEventBuffer::nextEvent()
          {
            // moved to next gci, check if any references have been
            // released when completing the last gci
+           NdbMutex_Lock(m_mutex);
            deleteUsedEventOperations();
+           NdbMutex_Unlock(m_mutex);
            gci_ops = m_available_data.delete_next_gci_ops();
          }
          if (!gci_ops->m_consistent)
@@ -1357,12 +1359,14 @@ NdbEventBuffer::nextEvent()
   // free all "per gci unique" collected operations
   // completed gci, check if any references have been
   // released when completing the gci
+  NdbMutex_Lock(m_mutex);
   EventBufData_list::Gci_ops *gci_ops = m_available_data.first_gci_ops();
   while (gci_ops)
   {
     deleteUsedEventOperations();
     gci_ops = m_available_data.delete_next_gci_ops();
   }
+  NdbMutex_Unlock(m_mutex);
   DBUG_RETURN_EVENT(0);
 }
 

=== modified file 'storage/ndb/src/ndbapi/ndberror.c'
--- a/storage/ndb/src/ndbapi/ndberror.c	2008-04-25 15:12:47 +0000
+++ b/storage/ndb/src/ndbapi/ndberror.c	2008-09-19 21:49:00 +0000
@@ -191,6 +191,7 @@ ErrorBundle ErrorCodes[] = {
   { 1501, DMEC, TR, "Out of undo space" },
   {  288, DMEC, TR, "Out of index operations in transaction coordinator (increase
MaxNoOfConcurrentIndexOperations)" },
   {  289, DMEC, TR, "Out of transaction buffer memory in TC (increase
TransactionBufferMemory)" },
+  {  291, DMEC, TR, "Out of scanfrag records in TC (increase MaxNoOfLocalScans)" },
 
   /**
    * InsufficientSpace

=== modified file 'storage/ndb/test/include/NDBT_Test.hpp'
--- a/storage/ndb/test/include/NDBT_Test.hpp	2007-03-01 09:43:14 +0000
+++ b/storage/ndb/test/include/NDBT_Test.hpp	2008-09-11 10:08:57 +0000
@@ -208,7 +208,7 @@ public:
   virtual void print() = 0;
   virtual void printHTML() = 0;
 
-  const char* getName(){return name;};
+  const char* getName() const { return _name.c_str(); };
   virtual bool tableExists(NdbDictionary::Table* aTable) = 0;
   virtual bool isVerify(const NdbDictionary::Table* aTable) = 0;
 
@@ -238,8 +238,6 @@ protected:
 
   BaseString _name;
   BaseString _comment;
-  const char* name;
-  const char* comment;
   NDBT_TestSuite* suite;
   Properties props;
   NdbTimer timer;

=== modified file 'storage/ndb/test/run-test/autotest-run.sh'
--- a/storage/ndb/test/run-test/autotest-run.sh	2007-08-31 14:55:59 +0000
+++ b/storage/ndb/test/run-test/autotest-run.sh	2008-09-11 08:44:49 +0000
@@ -258,7 +258,8 @@ tar cfz $tar_dir/$tarfile `basename $p2`
 
 if [ "$report" ]
 then
-    scp $tar_dir/$tarfile $result_host:$result_path/
+    scp $tar_dir/$tarfile $result_host:$result_path/${tarfile}.upload
+    ssh $result_host mv $result_path/${tarfile}.upload $result_path/${tarfile}
 fi
 
 cd $p

=== modified file 'storage/ndb/test/run-test/db.cpp'
--- a/storage/ndb/test/run-test/db.cpp	2008-08-27 11:42:30 +0000
+++ b/storage/ndb/test/run-test/db.cpp	2008-09-25 10:21:14 +0000
@@ -23,6 +23,17 @@ static bool setup_repl(atrt_config&);
 
 static atrt_process* f_mysqld = 0;
 
+static
+int
+run_query(atrt_process* src, const char * query)
+{
+  g_logger.debug("%s:%s - %s",
+		 src->m_cluster->m_name.c_str(),
+		 src->m_host->m_hostname.c_str(),
+		 query);
+  return mysql_query(&src->m_mysql, query);
+}
+
 bool
 setup_db(atrt_config& config)
 {
@@ -398,16 +409,16 @@ populate_db(atrt_config& config, atrt_pr
 
 static
 bool
-setup_repl(atrt_process* src, atrt_process* dst)
+setup_repl(atrt_process* dst, atrt_process* src)
 {
-  if (mysql_query(&src->m_mysql, "STOP SLAVE"))
+  if (run_query(src, "STOP SLAVE"))
   {
     g_logger.error("Failed to stop slave: %s",
 		   mysql_error(&src->m_mysql));
     return false;
   }
 
-  if (mysql_query(&src->m_mysql, "RESET SLAVE"))
+  if (run_query(src, "RESET SLAVE"))
   {
     g_logger.error("Failed to reset slave: %s",
 		   mysql_error(&src->m_mysql));
@@ -421,7 +432,7 @@ setup_repl(atrt_process* src, atrt_proce
 	     dst->m_host->m_hostname.c_str(),
 	     atoi(find(dst, "--port=")));
   
-  if (mysql_query(&src->m_mysql, tmp.c_str()))
+  if (run_query(src, tmp.c_str()))
   {
     g_logger.error("Failed to setup repl from %s to %s: %s",
 		   src->m_host->m_hostname.c_str(),
@@ -430,7 +441,7 @@ setup_repl(atrt_process* src, atrt_proce
     return false;
   }
 
-  if (mysql_query(&src->m_mysql, "START SLAVE"))
+  if (run_query(src, "START SLAVE"))
   {
     g_logger.error("Failed to start slave: %s",
 		   mysql_error(&src->m_mysql));

=== modified file 'storage/ndb/test/run-test/main.cpp'
--- a/storage/ndb/test/run-test/main.cpp	2008-08-27 11:42:30 +0000
+++ b/storage/ndb/test/run-test/main.cpp	2008-09-25 10:21:14 +0000
@@ -767,8 +767,7 @@ wait_ndb(atrt_config& config, int goal){
     }
 
     if(handle == 0){
-      g_logger.critical("Unable to find mgm handle");
-      return false;
+      return true;
     }
     
     if(goal == NDB_MGM_NODE_STATUS_STARTED){

=== modified file 'storage/ndb/test/run-test/setup.cpp'
--- a/storage/ndb/test/run-test/setup.cpp	2008-09-04 09:43:51 +0000
+++ b/storage/ndb/test/run-test/setup.cpp	2008-09-25 10:21:14 +0000
@@ -34,10 +34,12 @@ struct proc_option f_options[] = {
   ,{ "--host=",        atrt_process::AP_CLIENT, 0 }
   ,{ "--server-id=",   atrt_process::AP_MYSQLD, PO_REP }
   ,{ "--log-bin",      atrt_process::AP_MYSQLD, PO_REP_MASTER }
+#if 0
   ,{ "--master-host=", atrt_process::AP_MYSQLD, PO_REP_SLAVE }
   ,{ "--master-port=", atrt_process::AP_MYSQLD, PO_REP_SLAVE }
   ,{ "--master-user=", atrt_process::AP_MYSQLD, PO_REP_SLAVE }
   ,{ "--master-password=", atrt_process::AP_MYSQLD, PO_REP_SLAVE }
+#endif
   ,{ "--ndb-connectstring=", atrt_process::AP_MYSQLD | atrt_process::AP_CLUSTER
      ,PO_NDB }
   ,{ "--ndbcluster", atrt_process::AP_MYSQLD, PO_NDB }

=== modified file 'storage/ndb/test/src/NDBT_Test.cpp'
--- a/storage/ndb/test/src/NDBT_Test.cpp	2007-08-01 07:24:01 +0000
+++ b/storage/ndb/test/src/NDBT_Test.cpp	2008-09-11 10:08:57 +0000
@@ -371,14 +371,10 @@ NDBT_Finalizer::NDBT_Finalizer(NDBT_Test
 NDBT_TestCase::NDBT_TestCase(NDBT_TestSuite* psuite, 
 			     const char* pname, 
 			     const char* pcomment) : 
-  name(strdup(pname)) ,
-  comment(strdup(pcomment)),
+  _name(pname) ,
+  _comment(pcomment),
   suite(psuite)
 {
-  _name.assign(pname);
-  _comment.assign(pcomment);
-  name= _name.c_str();
-  comment= _comment.c_str();
   assert(suite != NULL);
 
   m_all_tables = false;
@@ -602,7 +598,7 @@ void NDBT_TestCaseImpl1::reportStepResul
 int NDBT_TestCase::execute(NDBT_Context* ctx){
   int res;
 
-  ndbout << "- " << name << " started [" <<
ctx->suite->getDate()
+  ndbout << "- " << _name << " started [" <<
ctx->suite->getDate()
 	 << "]" << endl;
 
   ctx->setCase(this);
@@ -654,11 +650,11 @@ int NDBT_TestCase::execute(NDBT_Context*
   runFinal(ctx); 
 
   if (res == NDBT_OK) {
-    ndbout << "- " << name << " PASSED [" <<
ctx->suite->getDate() << "]" 
+    ndbout << "- " << _name << " PASSED [" <<
ctx->suite->getDate() << "]"
 	   << endl;
   }
   else {
-    ndbout << "- " << name << " FAILED [" <<
ctx->suite->getDate() << "]" 
+    ndbout << "- " << _name << " FAILED [" <<
ctx->suite->getDate() << "]"
 	   << endl;
   }
   return res;
@@ -741,7 +737,7 @@ void NDBT_TestCaseImpl1::saveTestResult(
 void NDBT_TestCaseImpl1::printTestResult(){
 
   char buf[255];
-  ndbout << name<<endl;
+  ndbout << _name<<endl;
 
   for (unsigned i = 0; i < testResults.size(); i++){
     NDBT_TestCaseResult* tcr = testResults[i];
@@ -754,8 +750,9 @@ void NDBT_TestCaseImpl1::printTestResult
       res = "FAILED TO CREATE TABLE";
     else if (tcr->getResult() == FAILED_TO_DISCOVER)
       res = "FAILED TO DISCOVER TABLE";
-    BaseString::snprintf(buf, 255," %-10s %-5s %-20s", tcr->getName(), res,
tcr->getTimeStr());
-    ndbout << buf<<endl;    
+    BaseString::snprintf(buf, 255," %-10s %-5s %-20s",
+                         tcr->getName(), res, tcr->getTimeStr());
+    ndbout << buf<<endl;
   }
 }
 
@@ -1444,13 +1441,13 @@ const char* NDBT_TestSuite::getDate(){
 void NDBT_TestCaseImpl1::printHTML(){
 
   ndbout << "<tr><td>&nbsp;</td>" << endl;
-  ndbout << "<td name=tc>" << endl << name <<
"</td><td width=70%>" 
-	 << comment << "</td></tr>" << endl;  
+  ndbout << "<td name=tc>" << endl << _name <<
"</td><td width=70%>" 
+	 << _comment << "</td></tr>" << endl;  
 }
 
 void NDBT_TestCaseImpl1::print(){
-  ndbout << "Test case: " << name << endl;
-  ndbout << "Description: "<< comment << endl;
+  ndbout << "Test case: " << _name << endl;
+  ndbout << "Description: "<< _comment << endl;
 
   ndbout << "Parameters: " << endl;
 

Thread
bzr push into mysql-5.1 branch (jonas:2665 to 2671) Bug#39518, Bug#39549Jonas Oreland25 Sep