Commit 055a9681 authored by stewart@mysql.com's avatar stewart@mysql.com

Merge mysql.com:/home/stewart/Documents/MySQL/4.1/main

into  mysql.com:/home/stewart/Documents/MySQL/4.1/bug11607
parents 1e6736b5 bfd4b626
...@@ -280,6 +280,7 @@ NdbConnection::execute(ExecType aTypeOfExec, ...@@ -280,6 +280,7 @@ NdbConnection::execute(ExecType aTypeOfExec,
AbortOption abortOption, AbortOption abortOption,
int forceSend) int forceSend)
{ {
NdbError savedError= theError;
DBUG_ENTER("NdbConnection::execute"); DBUG_ENTER("NdbConnection::execute");
DBUG_PRINT("enter", ("aTypeOfExec: %d, abortOption: %d", DBUG_PRINT("enter", ("aTypeOfExec: %d, abortOption: %d",
aTypeOfExec, abortOption)); aTypeOfExec, abortOption));
...@@ -309,7 +310,11 @@ NdbConnection::execute(ExecType aTypeOfExec, ...@@ -309,7 +310,11 @@ NdbConnection::execute(ExecType aTypeOfExec,
NdbBlob* tBlob = tPrepOp->theBlobList; NdbBlob* tBlob = tPrepOp->theBlobList;
while (tBlob != NULL) { while (tBlob != NULL) {
if (tBlob->preExecute(tExecType, batch) == -1) if (tBlob->preExecute(tExecType, batch) == -1)
{
ret = -1; ret = -1;
if(savedError.code==0)
savedError= theError;
}
tBlob = tBlob->theNext; tBlob = tBlob->theNext;
} }
if (batch) { if (batch) {
...@@ -338,7 +343,11 @@ NdbConnection::execute(ExecType aTypeOfExec, ...@@ -338,7 +343,11 @@ NdbConnection::execute(ExecType aTypeOfExec,
NdbBlob* tBlob = tOp->theBlobList; NdbBlob* tBlob = tOp->theBlobList;
while (tBlob != NULL) { while (tBlob != NULL) {
if (tBlob->preCommit() == -1) if (tBlob->preCommit() == -1)
ret = -1; {
ret = -1;
if(savedError.code==0)
savedError= theError;
}
tBlob = tBlob->theNext; tBlob = tBlob->theNext;
} }
} }
...@@ -360,7 +369,12 @@ NdbConnection::execute(ExecType aTypeOfExec, ...@@ -360,7 +369,12 @@ NdbConnection::execute(ExecType aTypeOfExec,
} }
if (executeNoBlobs(tExecType, abortOption, forceSend) == -1) if (executeNoBlobs(tExecType, abortOption, forceSend) == -1)
ret = -1; {
ret = -1;
if(savedError.code==0)
savedError= theError;
}
#ifdef ndb_api_crash_on_complex_blob_abort #ifdef ndb_api_crash_on_complex_blob_abort
assert(theFirstOpInList == NULL && theLastOpInList == NULL); assert(theFirstOpInList == NULL && theLastOpInList == NULL);
#else #else
...@@ -375,7 +389,11 @@ NdbConnection::execute(ExecType aTypeOfExec, ...@@ -375,7 +389,11 @@ NdbConnection::execute(ExecType aTypeOfExec,
while (tBlob != NULL) { while (tBlob != NULL) {
// may add new operations if batch // may add new operations if batch
if (tBlob->postExecute(tExecType) == -1) if (tBlob->postExecute(tExecType) == -1)
{
ret = -1; ret = -1;
if(savedError.code==0)
savedError= theError;
}
tBlob = tBlob->theNext; tBlob = tBlob->theNext;
} }
} }
...@@ -406,6 +424,10 @@ NdbConnection::execute(ExecType aTypeOfExec, ...@@ -406,6 +424,10 @@ NdbConnection::execute(ExecType aTypeOfExec,
ndbout << "completed ops: " << n << endl; ndbout << "completed ops: " << n << endl;
} }
#endif #endif
if(savedError.code!=0 && theError.code==4350) // Trans already aborted
theError= savedError;
DBUG_RETURN(ret); DBUG_RETURN(ret);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment