| 405 | |
| 406 | |
| 407 | void Savepoint::cleanupTempData() |
| 408 | { |
| 409 | // Find all global temporary tables with DELETE ROWS action |
| 410 | // and release their undo data |
| 411 | |
| 412 | for (VerbAction* action = m_actions; action; action = action->vct_next) |
| 413 | { |
| 414 | if (action->vct_relation->rel_flags & REL_temp_tran) |
| 415 | { |
| 416 | RecordBitmap::reset(action->vct_records); |
| 417 | |
| 418 | if (action->vct_undo) |
| 419 | { |
| 420 | if (action->vct_undo->getFirst()) |
| 421 | { |
| 422 | do |
| 423 | { |
| 424 | action->vct_undo->current().release(m_transaction); |
| 425 | } while (action->vct_undo->getNext()); |
| 426 | } |
| 427 | |
| 428 | delete action->vct_undo; |
| 429 | action->vct_undo = NULL; |
| 430 | } |
| 431 | } |
| 432 | } |
| 433 | } |
| 434 | |
| 435 | Savepoint* Savepoint::rollback(thread_db* tdbb, Savepoint* prior, bool preserveLocks) |
| 436 | { |