List:Commits« Previous MessageNext Message »
From:Jonas Oreland Date:September 19 2008 10:11pm
Subject:bzr push into mysql-5.1 branch (jonas:2766)
View as plain text  
 2766 Jonas Oreland	2008-09-20 [merge]
      merge 6.3 to 6.4
modified:
  mysql-test/suite/ndb/r/ndb_insert.result
  mysql-test/suite/ndb/t/ndb_insert.test
  storage/ndb/include/kernel/signaldata/CreateTrigImpl.hpp
  storage/ndb/include/kernel/signaldata/DropTrigImpl.hpp
  storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp
  storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
  storage/ndb/src/ndbapi/ndberror.c
  storage/ndb/tools/restore/Restore.cpp
  storage/ndb/tools/restore/Restore.hpp
  storage/ndb/tools/restore/restore_main.cpp

=== modified file 'mysql-test/suite/ndb/r/ndb_insert.result'
--- a/mysql-test/suite/ndb/r/ndb_insert.result	2007-11-23 12:25:00 +0000
+++ b/mysql-test/suite/ndb/r/ndb_insert.result	2008-09-19 10:56:53 +0000
@@ -427,8 +427,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-29 10:29:35 +0000
+++ b/mysql-test/suite/ndb/t/ndb_insert.test	2008-09-19 10:56:53 +0000
@@ -449,8 +449,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/include/kernel/signaldata/CreateTrigImpl.hpp'
--- a/storage/ndb/include/kernel/signaldata/CreateTrigImpl.hpp	2008-02-06 20:10:07 +0000
+++ b/storage/ndb/include/kernel/signaldata/CreateTrigImpl.hpp	2008-09-19 22:10:17 +0000
@@ -71,7 +71,7 @@ struct CreateTrigImplRef {
     BadRequestType = 4247,
     InvalidName = 4248,
     InvalidTable = 4249,
-    InconsistentTC = 291
+    InconsistentTC = 293
   };
 
   STATIC_CONST( SignalLength = 9 );

=== modified file 'storage/ndb/include/kernel/signaldata/DropTrigImpl.hpp'
--- a/storage/ndb/include/kernel/signaldata/DropTrigImpl.hpp	2007-12-25 16:26:22 +0000
+++ b/storage/ndb/include/kernel/signaldata/DropTrigImpl.hpp	2008-09-19 22:10:17 +0000
@@ -50,7 +50,7 @@ struct DropTrigImplRef {
     TriggerNotFound = 4238,
     BadRequestType = 4247,
     InvalidName = 4248,
-    InconsistentTC = 291
+    InconsistentTC = 293
   };
 
   STATIC_CONST( SignalLength = 8 );

=== modified file 'storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp'
--- a/storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp	2008-09-04 15:45:21 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp	2008-09-19 22:10:17 +0000
@@ -116,6 +116,7 @@
 #define ZUNKNOWN_TABLE_ERROR 285
 #define ZNODEFAIL_BEFORE_COMMIT 286
 #define ZINDEX_CORRUPT_ERROR 287
+#define ZSCAN_FRAGREC_ERROR 291
 
 // ----------------------------------------
 // Seize error
@@ -1408,7 +1409,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,
                    const Uint32 aiLength,

=== modified file 'storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp'
--- a/storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp	2008-09-04 15:45:21 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp	2008-09-19 22:10:17 +0000
@@ -9620,8 +9620,12 @@ void Dbtc::execSCAN_TABREQ(Signal* signa
   ndbrequire(transP->apiScanRec == RNIL);
   ndbrequire(scanptr.p->scanApiRec == RNIL);
 
-  initScanrec(scanptr, scanTabReq, scanParallel, 
-              noOprecPerFrag, aiLength, keyLen);
+  errCode = initScanrec(scanptr, scanTabReq, scanParallel, noOprecPerFrag, aiLength, keyLen);
+  if (unlikely(errCode))
+  {
+    jam();
+    goto SCAN_TAB_error;
+  }
 
   transP->apiScanRec = scanptr.i;
   transP->returncode = 0;
@@ -9721,12 +9725,13 @@ SCAN_TAB_error_no_state_change:
   return;
 }//Dbtc::execSCAN_TABREQ()
 
-void Dbtc::initScanrec(ScanRecordPtr scanptr,
-		       const ScanTabReq * scanTabReq,
-		       UintR scanParallel,
-		       UintR noOprecPerFrag,
-                       Uint32 aiLength,
-                       Uint32 keyLength) 
+Uint32
+Dbtc::initScanrec(ScanRecordPtr scanptr,
+		  const ScanTabReq * scanTabReq,
+		  UintR scanParallel,
+		  UintR noOprecPerFrag,
+		  Uint32 aiLength,
+		  Uint32 keyLength)
 {
   const UintR ri = scanTabReq->requestInfo;
   scanptr.p->scanTcrec = tcConnectptr.i;
@@ -9763,7 +9768,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;
@@ -9773,6 +9782,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/ndbapi/ndberror.c'
--- a/storage/ndb/src/ndbapi/ndberror.c	2008-09-12 12:55:29 +0000
+++ b/storage/ndb/src/ndbapi/ndberror.c	2008-09-19 22:10:17 +0000
@@ -194,6 +194,7 @@ ErrorBundle ErrorCodes[] = {
   {  780, DMEC, TR, "Too many schema transactions" },
   {  783, DMEC, TR, "Too many schema operations" },
   {  785, DMEC, TR, "Schema object is busy with another schema transaction" },
+  {  291, DMEC, TR, "Out of scanfrag records in TC (increase MaxNoOfLocalScans)" },
 
   /**
    * InsufficientSpace
@@ -258,7 +259,7 @@ ErrorBundle ErrorCodes[] = {
   { 278,  DMEC, IE, "278" },
   { 287,  DMEC, IE, "Index corrupted" },
   { 290,  DMEC, IE, "Corrupt key in TC, unable to xfrm" },
-  { 291,  DMEC, IE, "Inconsistent trigger state in TC block" },
+  { 293,  DMEC, IE, "Inconsistent trigger state in TC block" },
   { 292,  DMEC, IE, "Inconsistent index state in TC block" },
   { 631,  DMEC, IE, "631" },
   { 632,  DMEC, IE, "632" },

=== modified file 'storage/ndb/tools/restore/Restore.cpp'
--- a/storage/ndb/tools/restore/Restore.cpp	2008-09-11 08:46:19 +0000
+++ b/storage/ndb/tools/restore/Restore.cpp	2008-09-19 22:10:17 +0000
@@ -193,7 +193,7 @@ RestoreMetaData::readMetaTableDesc() {
   // Read section header 
   Uint32 sz = sizeof(sectionInfo) >> 2;
   if (m_fileHeader.NdbVersion < NDBD_ROWID_VERSION ||
-      m_fileHeader.NdbVersion == DROP6_VERSION)
+      isDrop6(m_fileHeader.NdbVersion))
   {
     sz = 2;
     sectionInfo[2] = htonl(DictTabInfo::UserTable);
@@ -546,7 +546,7 @@ RestoreMetaData::parseTableDescriptor(co
   NdbTableImpl* tableImpl = 0;
   int ret = NdbDictInterface::parseTableInfo
     (&tableImpl, data, len, false,
-     m_fileHeader.NdbVersion == DROP6_VERSION ? MAKE_VERSION(5,1,2) :
+     isDrop6(m_fileHeader.NdbVersion) ? MAKE_VERSION(5,1,2) :
      m_fileHeader.NdbVersion);
   
   if (ret != 0) {
@@ -981,7 +981,7 @@ RestoreDataIterator::readTupleData_old(U
   }
 
   int res;
-  if (m_currentTable->backupVersion != DROP6_VERSION)
+  if (!isDrop6(m_currentTable->backupVersion))
   {
     if ((res = readVarData(buf_ptr, ptr, dataLength)))
       return res;
@@ -1484,7 +1484,7 @@ void TableS::createAttr(NdbDictionary::C
   }
 
   // just a reminder - does not solve backwards compat
-  if (backupVersion < MAKE_VERSION(5,1,3) || backupVersion == DROP6_VERSION)
+  if (backupVersion < MAKE_VERSION(5,1,3) || isDrop6(backupVersion))
   {
     d->m_nullBitIndex = m_noOfNullable; 
     m_noOfNullable++;
@@ -1573,7 +1573,7 @@ RestoreLogIterator::getNextLogEntry(int 
     }
 
     if (unlikely(m_metaData.getFileHeader().NdbVersion < NDBD_FRAGID_VERSION ||
-                 m_metaData.getFileHeader().NdbVersion == DROP6_VERSION))
+                 isDrop6(m_metaData.getFileHeader().NdbVersion)))
     {
       /*
         FragId was introduced in LogEntry in version

=== modified file 'storage/ndb/tools/restore/Restore.hpp'
--- a/storage/ndb/tools/restore/Restore.hpp	2008-03-18 07:19:32 +0000
+++ b/storage/ndb/tools/restore/Restore.hpp	2008-09-19 22:10:17 +0000
@@ -27,7 +27,13 @@
 
 #include <ndb_version.h>
 #include <version.h>
-#define DROP6_VERSION MAKE_VERSION(5,2,1)
+
+inline
+bool
+isDrop6(Uint32 version)
+{
+  return (getMajor(version) == 5 && getMinor(version) == 2);
+}
 
 const int FileNameLenC = 256;
 const int TableNameLenC = 256;

=== modified file 'storage/ndb/tools/restore/restore_main.cpp'
--- a/storage/ndb/tools/restore/restore_main.cpp	2008-07-24 10:57:58 +0000
+++ b/storage/ndb/tools/restore/restore_main.cpp	2008-09-19 06:45:00 +0000
@@ -756,7 +756,7 @@ main(int argc, char** argv)
   info.setLevel(254);
   info << "Backup version in files: " 
        <<  ndbGetVersionString(version, 0, 
-                               version == DROP6_VERSION ? "-drop6" : 0, 
+                               isDrop6(version) ? "-drop6" : 0, 
                                buf, sizeof(buf));
   if (version >= NDBD_RAW_LCP)
   {

Thread
bzr push into mysql-5.1 branch (jonas:2766) Jonas Oreland20 Sep