MCPcopy Create free account
hub / github.com/apache/impala / PrepareForReadInternal

Method PrepareForReadInternal

be/src/runtime/buffered-tuple-stream.cc:633–661  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

631}
632
633Status BufferedTupleStream::PrepareForReadInternal(
634 bool attach_on_read, ReadIterator* read_iter) {
635 DCHECK(!closed_);
636 DCHECK(!read_it_.attach_on_read_);
637 DCHECK(!read_iter->is_valid());
638
639 read_iter->Init(attach_on_read);
640 if (pages_.empty()) {
641 // No rows to return, or a the first read/write page has not yet been allocated.
642 read_iter->SetReadPage(pages_.end());
643 } else {
644 // Eagerly pin the first page in the stream.
645 read_iter->SetReadPage(pages_.begin());
646 if (read_iter == &read_it_ && !pinned_
647 && read_iter->read_page_->len() > default_page_len_) {
648 int64_t extra_needed_reservation = read_iter->read_page_->len() - default_page_len_;
649 if (large_read_page_reservation_.GetReservation() >= extra_needed_reservation) {
650 buffer_pool_client_->RestoreReservation(&large_read_page_reservation_,
651 extra_needed_reservation);
652 }
653 }
654 // Check if we need to increment the pin count of the read page.
655 RETURN_IF_ERROR(PinPageIfNeeded(&*read_iter->read_page_, pinned_));
656 DCHECK(read_iter->read_page_->is_pinned());
657 RETURN_IF_ERROR(read_iter->InitReadPtrs());
658 }
659 CHECK_CONSISTENCY_FULL(*read_iter);
660 return Status::OK();
661}
662
663Status BufferedTupleStream::PinStream(bool* pinned) {
664 DCHECK(!closed_);

Callers

nothing calls this directly

Calls 12

OKFunction · 0.85
SetReadPageMethod · 0.80
RestoreReservationMethod · 0.80
InitReadPtrsMethod · 0.80
is_validMethod · 0.45
InitMethod · 0.45
emptyMethod · 0.45
endMethod · 0.45
beginMethod · 0.45
lenMethod · 0.45
GetReservationMethod · 0.45
is_pinnedMethod · 0.45

Tested by

no test coverage detected