| Bug #39729 | Error 626 not set on transaction obj with active blob handle and tuple not found | ||
|---|---|---|---|
| Submitted: | 29 Sep 2008 13:04 | Modified: | 1 Apr 2009 2:22 |
| Reporter: | Geert Vanderkelen | Email Updates: | |
| Status: | No Feedback | Impact on me: | |
| Category: | MySQL Cluster: NDB API | Severity: | S3 (Non-critical) |
| Version: | OS: | Any | |
| Assigned to: | Assigned Account | CPU Architecture: | Any |
[1 Mar 2009 0:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".
[1 Apr 2009 23:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".

Description: Currently, when reading tuples which need a blob handle, and the tuple is not found, the transaction gives success instead of error 626. A workaround is to check the Operation's error code after doing the NoCommit, which is correctly set to 626, Tuple doesn't not exists.. How to repeat: op->readTuple(NdbOperation::LM_Exclusive); op->equal("id", id); NdbBlob *blob = op->getBlobHandle("fblob"); // NoCommit is important here if( 0 != trans->execute(NdbTransaction::NoCommit) ) { APIERROR(trans->getNdbError()); } // Check the operation whether the tuple was found // This is workaround. if( 626 == op->getNdbError().code ) { printf("Tuple not found!\n"); } else { // Read the blob data here // data = .. if( 0 != trans->execute(NdbTransaction::Commit) ) { APIERROR(trans->getNdbError()); } printf("Length: %d; Data: %s\n\n", len, data); free(data); }