| 53 | constexpr int64_t BufferedTupleStream::MAX_PAGE_ITER_DEBUG; |
| 54 | |
| 55 | BufferedTupleStream::BufferedTupleStream(RuntimeState* state, |
| 56 | const RowDescriptor* row_desc, BufferPool::ClientHandle* buffer_pool_client, |
| 57 | int64_t default_page_len, int64_t max_page_len, const set<SlotId>& ext_varlen_slots) |
| 58 | : state_(state), |
| 59 | desc_(row_desc), |
| 60 | buffer_pool_(ExecEnv::GetInstance()->buffer_pool()), |
| 61 | buffer_pool_client_(buffer_pool_client), |
| 62 | read_page_reservation_(buffer_pool_client_), |
| 63 | large_read_page_reservation_(buffer_pool_client_), |
| 64 | write_page_reservation_(buffer_pool_client_), |
| 65 | default_page_len_(default_page_len), |
| 66 | max_page_len_(max_page_len), |
| 67 | has_nullable_tuple_(row_desc->IsAnyTupleNullable()) { |
| 68 | DCHECK_GE(max_page_len, default_page_len); |
| 69 | DCHECK(BitUtil::IsPowerOf2(default_page_len)) << default_page_len; |
| 70 | DCHECK(BitUtil::IsPowerOf2(max_page_len)) << max_page_len; |
| 71 | read_it_.Reset(&pages_); |
| 72 | for (int i = 0; i < desc_->tuple_descriptors().size(); ++i) { |
| 73 | const TupleDescriptor* tuple_desc = desc_->tuple_descriptors()[i]; |
| 74 | const int tuple_byte_size = tuple_desc->byte_size(); |
| 75 | fixed_tuple_sizes_.push_back(tuple_byte_size); |
| 76 | CollectInlinedSlots(tuple_desc, ext_varlen_slots, i); |
| 77 | } |
| 78 | } |
| 79 | |
| 80 | void BufferedTupleStream::CollectInlinedSlots(const TupleDescriptor* tuple_desc, |
| 81 | const set<SlotId>& ext_varlen_slots, int tuple_idx) { |
nothing calls this directly
no test coverage detected