mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
BUG#11607 Incorrect error code returned on deletion
Save error on first failure. At end of execute, if the current error is 4350 (transaction already aborted), restore the original error (if there was one).
This commit is contained in:
parent
4b5ca92631
commit
bfd4b626a1
1 changed files with 24 additions and 2 deletions
|
@ -280,6 +280,7 @@ NdbConnection::execute(ExecType aTypeOfExec,
|
|||
AbortOption abortOption,
|
||||
int forceSend)
|
||||
{
|
||||
NdbError savedError= theError;
|
||||
DBUG_ENTER("NdbConnection::execute");
|
||||
DBUG_PRINT("enter", ("aTypeOfExec: %d, abortOption: %d",
|
||||
aTypeOfExec, abortOption));
|
||||
|
@ -309,7 +310,11 @@ NdbConnection::execute(ExecType aTypeOfExec,
|
|||
NdbBlob* tBlob = tPrepOp->theBlobList;
|
||||
while (tBlob != NULL) {
|
||||
if (tBlob->preExecute(tExecType, batch) == -1)
|
||||
{
|
||||
ret = -1;
|
||||
if(savedError.code==0)
|
||||
savedError= theError;
|
||||
}
|
||||
tBlob = tBlob->theNext;
|
||||
}
|
||||
if (batch) {
|
||||
|
@ -338,7 +343,11 @@ NdbConnection::execute(ExecType aTypeOfExec,
|
|||
NdbBlob* tBlob = tOp->theBlobList;
|
||||
while (tBlob != NULL) {
|
||||
if (tBlob->preCommit() == -1)
|
||||
ret = -1;
|
||||
{
|
||||
ret = -1;
|
||||
if(savedError.code==0)
|
||||
savedError= theError;
|
||||
}
|
||||
tBlob = tBlob->theNext;
|
||||
}
|
||||
}
|
||||
|
@ -360,7 +369,12 @@ NdbConnection::execute(ExecType aTypeOfExec,
|
|||
}
|
||||
|
||||
if (executeNoBlobs(tExecType, abortOption, forceSend) == -1)
|
||||
ret = -1;
|
||||
{
|
||||
ret = -1;
|
||||
if(savedError.code==0)
|
||||
savedError= theError;
|
||||
}
|
||||
|
||||
#ifdef ndb_api_crash_on_complex_blob_abort
|
||||
assert(theFirstOpInList == NULL && theLastOpInList == NULL);
|
||||
#else
|
||||
|
@ -375,7 +389,11 @@ NdbConnection::execute(ExecType aTypeOfExec,
|
|||
while (tBlob != NULL) {
|
||||
// may add new operations if batch
|
||||
if (tBlob->postExecute(tExecType) == -1)
|
||||
{
|
||||
ret = -1;
|
||||
if(savedError.code==0)
|
||||
savedError= theError;
|
||||
}
|
||||
tBlob = tBlob->theNext;
|
||||
}
|
||||
}
|
||||
|
@ -406,6 +424,10 @@ NdbConnection::execute(ExecType aTypeOfExec,
|
|||
ndbout << "completed ops: " << n << endl;
|
||||
}
|
||||
#endif
|
||||
|
||||
if(savedError.code!=0 && theError.code==4350) // Trans already aborted
|
||||
theError= savedError;
|
||||
|
||||
DBUG_RETURN(ret);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue