| 603 | } |
| 604 | |
| 605 | Status Sorter::Run::PinNextReadPage(vector<Page>* pages, int page_index) { |
| 606 | DCHECK_GE(page_index, 0); |
| 607 | DCHECK_LT(page_index, pages->size() - 1); |
| 608 | Page* curr_page = &(*pages)[page_index]; |
| 609 | Page* next_page = &(*pages)[page_index + 1]; |
| 610 | DCHECK_EQ(is_pinned_, next_page->is_pinned()); |
| 611 | // The current page was attached to a batch. |
| 612 | DCHECK(!curr_page->is_open()); |
| 613 | // 'next_page' is already pinned if the whole stream is pinned. |
| 614 | if (is_pinned_) return Status::OK(); |
| 615 | RETURN_IF_ERROR(next_page->Pin(sorter_->buffer_pool_client_)); |
| 616 | return Status::OK(); |
| 617 | } |
| 618 | |
| 619 | void Sorter::Run::CollectNonNullNonSmallVarSlots(Tuple* src, const TupleDescriptor& tuple_desc, |
| 620 | vector<StringValue*>* string_values, |