| 473 | } |
| 474 | |
| 475 | void BufferedTupleStream::InvalidateWriteIterator() { |
| 476 | if (!has_write_iterator()) return; |
| 477 | ResetWritePage(); |
| 478 | has_write_iterator_ = false; |
| 479 | // No more pages will be appended to stream - do not need any write reservation. |
| 480 | write_page_reservation_.Close(); |
| 481 | // May not need a read reservation once the write iterator is invalidated. |
| 482 | if (NeedReadReservation(pinned_, num_pages_, has_read_iterator(), |
| 483 | read_it_.read_page_ != pages_.end(), true, write_page_ != nullptr) |
| 484 | && !NeedReadReservation(pinned_, num_pages_, has_read_iterator(), |
| 485 | read_it_.read_page_ != pages_.end(), false, false)) { |
| 486 | buffer_pool_client_->RestoreReservation(&read_page_reservation_, default_page_len_); |
| 487 | } |
| 488 | } |
| 489 | |
| 490 | void BufferedTupleStream::SaveLargeReadPageReservation() { |
| 491 | DCHECK(!pinned_); |
nothing calls this directly
no test coverage detected