From 9064f067e835fe3848fc50bbe28b65e07c6cc959 Mon Sep 17 00:00:00 2001 From: "jonas@mc01.ndb.mysql.com" <> Date: Fri, 9 Jun 2006 11:39:27 +0200 Subject: [PATCH] ndb - fix 5.1 scan error handling problem Make sure that error gets set corretly also when error code directly after taking mutex --- storage/ndb/src/ndbapi/NdbScanOperation.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/storage/ndb/src/ndbapi/NdbScanOperation.cpp b/storage/ndb/src/ndbapi/NdbScanOperation.cpp index 6a4e657d172..49ef742a93f 100644 --- a/storage/ndb/src/ndbapi/NdbScanOperation.cpp +++ b/storage/ndb/src/ndbapi/NdbScanOperation.cpp @@ -478,10 +478,14 @@ int NdbScanOperation::nextResultImpl(bool fetchAllowed, bool forceSend) */ PollGuard poll_guard(tp, &theNdb->theImpl->theWaiter, theNdb->theNdbBlockNumber); - if(theError.code) - return -1; - Uint32 seq = theNdbCon->theNodeSequence; + const Uint32 seq = theNdbCon->theNodeSequence; + + if(theError.code) + { + goto err4; + } + if(seq == tp->getNodeSequence(nodeId) && send_next_scan(idx, false) == 0) { @@ -564,6 +568,10 @@ int NdbScanOperation::nextResultImpl(bool fetchAllowed, bool forceSend) if(theError.code == 0) setErrorCode(4028); // seq changed = Node fail break; + case -4: +err4: + setErrorCode(theError.code); + break; } theNdbCon->theTransactionIsStarted = false;