| 586 | } |
| 587 | |
| 588 | void BufferedTupleStream::InvalidateReadIterator() { |
| 589 | int64_t rows_returned = read_it_.rows_returned(); |
| 590 | if (read_it_.read_page_ != pages_.end()) { |
| 591 | // Unpin the write page if we're reading in unpinned mode. |
| 592 | Page* prev_read_page = &*read_it_.read_page_; |
| 593 | read_it_.Reset(&pages_); |
| 594 | |
| 595 | // May need to decrement pin count after destroying read iterator. |
| 596 | UnpinPageIfNeeded(prev_read_page, pinned_); |
| 597 | } else { |
| 598 | read_it_.Reset(&pages_); |
| 599 | } |
| 600 | if (read_page_reservation_.GetReservation() > 0) { |
| 601 | buffer_pool_client_->RestoreReservation(&read_page_reservation_, default_page_len_); |
| 602 | } |
| 603 | // It is safe to re-read an attach-on-read stream if no rows were read and no pages |
| 604 | // were therefore deleted. |
| 605 | DCHECK(read_it_.attach_on_read_ == false || rows_returned == 0); |
| 606 | if (rows_returned == 0 && read_it_.attach_on_read_) { |
| 607 | read_it_.attach_on_read_ = false; |
| 608 | } |
| 609 | } |
| 610 | |
| 611 | void BufferedTupleStream::DoneWriting() { |
| 612 | CHECK_CONSISTENCY_FULL(read_it_); |
nothing calls this directly
no test coverage detected