#At file:///C:/Work/bzr/Merge/mysql-6.0-falcon-team/ based on revid:kevin.lewis@stripped
3118 Kevin Lewis 2009-04-13
Bug#44233 - The priorRecord for the record to be inserted might not be the current record if that prior record rolled back. This may have happend by a system transactions during updateCarbinalities. If that happened, the current record may not be a RecordVersion, and may not have a TransactionState.
modified:
storage/falcon/Table.cpp
=== modified file 'storage/falcon/Table.cpp'
--- a/storage/falcon/Table.cpp 2009-04-13 14:41:15 +0000
+++ b/storage/falcon/Table.cpp 2009-04-13 15:12:55 +0000
@@ -3354,9 +3354,12 @@ void Table::validateAndInsert(Transactio
{
// The current record is not our prior. If it is committed, we have
// an update conflict. If not, wait on that trans and, if it is not
- // committed, try again.
+ // committed, try again. (transState == NULL) means committed.
TransactionState *transState = current->getTransactionState();
+ if (!transState)
+ throw SQLError(UPDATE_CONFLICT, "update conflict in table %s.%s record %d", schemaName, name, record->recordNumber);
+
transState->addRef();
current->release(REC_HISTORY);
syncTable.unlock();
Attachment: [text/bzr-bundle] bzr/kevin.lewis@sun.com-20090413151255-h64gg0x3rihwpp2e.bundle
| Thread |
|---|
| • bzr commit into mysql-6.0-falcon-team branch (kevin.lewis:3118)Bug#44233 | Kevin Lewis | 13 Apr |