2701 Jonas Oreland 2008-09-19 [merge]
merge 6.2 to 6.3
modified:
storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp
storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
storage/ndb/src/ndbapi/ndberror.c
2700 Jonas Oreland 2008-09-19 [merge]
merge
modified:
mysql-test/suite/ndb/r/ndb_insert.result
mysql-test/suite/ndb/t/ndb_insert.test
=== modified file 'storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp'
--- a/storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp 2008-08-11 11:24:12 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp 2008-09-19 21:54:11 +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
@@ -1424,7 +1425,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-21 22:14:40 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp 2008-09-19 21:54:11 +0000
@@ -9222,7 +9222,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;
@@ -9312,10 +9317,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;
@@ -9350,7 +9356,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;
@@ -9360,6 +9370,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-04-28 15:27:57 +0000
+++ b/storage/ndb/src/ndbapi/ndberror.c 2008-09-19 21:54:11 +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/tools/restore/Restore.cpp'
--- a/storage/ndb/tools/restore/Restore.cpp 2008-09-09 12:01:16 +0000
+++ b/storage/ndb/tools/restore/Restore.cpp 2008-09-19 06:45:00 +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);
@@ -532,7 +532,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) {
@@ -967,7 +967,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;
@@ -1470,7 +1470,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++;
@@ -1559,7 +1559,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:12:39 +0000
+++ b/storage/ndb/tools/restore/Restore.hpp 2008-09-19 06:45:00 +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:2700 to 2701) | Jonas Oreland | 20 Sep |