Lines Matching refs:r
506 Rep* r = rep_; in Add() local
512 if (r->props.num_entries > r->props.num_range_deletions) { in Add()
513 assert(r->internal_comparator.Compare(key, Slice(r->last_key)) > 0); in Add()
517 auto should_flush = r->flush_block_policy->Update(key, value); in Add()
519 assert(!r->data_block.empty()); in Add()
522 if (r->state == Rep::State::kBuffered && in Add()
523 r->data_begin_offset > r->target_file_size) { in Add()
535 if (ok() && r->state == Rep::State::kUnbuffered) { in Add()
536 r->index_builder->AddIndexEntry(&r->last_key, &key, r->pending_handle); in Add()
542 if (r->state == Rep::State::kUnbuffered && r->filter_builder != nullptr) { in Add()
543 size_t ts_sz = r->internal_comparator.user_comparator()->timestamp_size(); in Add()
544 r->filter_builder->Add(ExtractUserKeyAndStripTimestamp(key, ts_sz)); in Add()
547 r->last_key.assign(key.data(), key.size()); in Add()
548 r->data_block.Add(key, value); in Add()
549 if (r->state == Rep::State::kBuffered) { in Add()
552 if (r->data_block_and_keys_buffers.empty() || should_flush) { in Add()
553 r->data_block_and_keys_buffers.emplace_back(); in Add()
555 r->data_block_and_keys_buffers.back().second.emplace_back(key.ToString()); in Add()
557 r->index_builder->OnKeyAdded(key); in Add()
559 NotifyCollectTableCollectorsOnAdd(key, value, r->offset, in Add()
560 r->table_properties_collectors, in Add()
561 r->ioptions.info_log); in Add()
564 r->range_del_block.Add(key, value); in Add()
565 NotifyCollectTableCollectorsOnAdd(key, value, r->offset, in Add()
566 r->table_properties_collectors, in Add()
567 r->ioptions.info_log); in Add()
572 r->props.num_entries++; in Add()
573 r->props.raw_key_size += key.size(); in Add()
574 r->props.raw_value_size += value.size(); in Add()
576 r->props.num_deletions++; in Add()
578 r->props.num_deletions++; in Add()
579 r->props.num_range_deletions++; in Add()
581 r->props.num_merge_operands++; in Add()
586 Rep* r = rep_; in Flush() local
589 if (r->data_block.empty()) return; in Flush()
590 WriteBlock(&r->data_block, &r->pending_handle, true /* is_data_block */); in Flush()
608 Rep* r = rep_; in WriteBlock() local
610 auto type = r->compression_type; in WriteBlock()
611 uint64_t sample_for_compression = r->sample_for_compression; in WriteBlock()
616 r->ioptions.env, in WriteBlock()
617 ShouldReportDetailedTime(r->ioptions.env, r->ioptions.statistics)); in WriteBlock()
619 if (r->state == Rep::State::kBuffered) { in WriteBlock()
621 assert(!r->data_block_and_keys_buffers.empty()); in WriteBlock()
622 r->data_block_and_keys_buffers.back().first = raw_block_contents.ToString(); in WriteBlock()
623 r->data_begin_offset += r->data_block_and_keys_buffers.back().first.size(); in WriteBlock()
629 if (!is_data_block || r->compression_dict == nullptr) { in WriteBlock()
632 compression_dict = r->compression_dict.get(); in WriteBlock()
635 CompressionInfo compression_info(r->compression_opts, r->compression_ctx, in WriteBlock()
643 r->table_options.format_version, is_data_block /* do_sample */, in WriteBlock()
644 &r->compressed_output, &sampled_output_fast, &sampled_output_slow); in WriteBlock()
648 r->table_properties_collectors, raw_block_contents.size(), in WriteBlock()
654 if (type != kNoCompression && r->table_options.verify_compression) { in WriteBlock()
657 if (!is_data_block || r->verify_dict == nullptr) { in WriteBlock()
660 verify_dict = r->verify_dict.get(); in WriteBlock()
664 UncompressionInfo uncompression_info(*r->verify_ctx, *verify_dict, in WriteBlock()
665 r->compression_type); in WriteBlock()
668 &contents, r->table_options.format_version, r->ioptions); in WriteBlock()
675 ROCKS_LOG_ERROR(r->ioptions.info_log, in WriteBlock()
677 r->status = in WriteBlock()
682 r->status = Status::Corruption("Could not decompress"); in WriteBlock()
694 RecordTick(r->ioptions.statistics, NUMBER_BLOCK_NOT_COMPRESSED); in WriteBlock()
698 if (ShouldReportDetailedTime(r->ioptions.env, r->ioptions.statistics)) { in WriteBlock()
699 RecordTimeToHistogram(r->ioptions.statistics, COMPRESSION_TIMES_NANOS, in WriteBlock()
702 RecordInHistogram(r->ioptions.statistics, BYTES_COMPRESSED, in WriteBlock()
704 RecordTick(r->ioptions.statistics, NUMBER_BLOCK_COMPRESSED); in WriteBlock()
705 } else if (type != r->compression_type) { in WriteBlock()
706 RecordTick(r->ioptions.statistics, NUMBER_BLOCK_NOT_COMPRESSED); in WriteBlock()
710 r->compressed_output.clear(); in WriteBlock()
712 if (r->filter_builder != nullptr) { in WriteBlock()
713 r->filter_builder->StartBlock(r->offset); in WriteBlock()
715 r->props.data_size = r->offset; in WriteBlock()
716 ++r->props.num_data_blocks; in WriteBlock()
724 Rep* r = rep_; in WriteRawBlock() local
725 StopWatch sw(r->ioptions.env, r->ioptions.statistics, WRITE_RAW_BLOCK_MICROS); in WriteRawBlock()
726 handle->set_offset(r->offset); in WriteRawBlock()
728 assert(r->status.ok()); in WriteRawBlock()
729 assert(r->io_status.ok()); in WriteRawBlock()
730 r->io_status = r->file->Append(block_contents); in WriteRawBlock()
731 if (r->io_status.ok()) { in WriteRawBlock()
735 switch (r->table_options.checksum) { in WriteRawBlock()
770 assert(r->io_status.ok()); in WriteRawBlock()
774 r->io_status = r->file->Append(Slice(trailer, kBlockTrailerSize)); in WriteRawBlock()
775 if (r->io_status.ok()) { in WriteRawBlock()
776 r->status = InsertBlockInCache(block_contents, type, handle); in WriteRawBlock()
778 if (r->status.ok() && r->io_status.ok()) { in WriteRawBlock()
779 r->offset += block_contents.size() + kBlockTrailerSize; in WriteRawBlock()
780 if (r->table_options.block_align && is_data_block) { in WriteRawBlock()
782 (r->alignment - ((block_contents.size() + kBlockTrailerSize) & in WriteRawBlock()
783 (r->alignment - 1))) & in WriteRawBlock()
784 (r->alignment - 1); in WriteRawBlock()
785 r->io_status = r->file->Pad(pad_bytes); in WriteRawBlock()
786 if (r->io_status.ok()) { in WriteRawBlock()
787 r->offset += pad_bytes; in WriteRawBlock()
792 r->status = r->io_status; in WriteRawBlock()
805 Rep* r = rep_; in InsertBlockInCache() local
806 Cache* block_cache_compressed = r->table_options.block_cache_compressed.get(); in InsertBlockInCache()
824 r->compressed_cache_key_prefix + r->compressed_cache_key_prefix_size, in InsertBlockInCache()
826 Slice key(r->compressed_cache_key_prefix, in InsertBlockInCache()
827 static_cast<size_t>(end - r->compressed_cache_key_prefix)); in InsertBlockInCache()
836 r->file->InvalidateCache(static_cast<size_t>(r->offset), size); in InsertBlockInCache()
1037 Rep* r = rep_; in WriteFooter() local
1045 bool legacy = (r->table_options.format_version == 0); in WriteFooter()
1047 assert(r->table_options.checksum == kCRC32c || in WriteFooter()
1048 r->table_options.format_version != 0); in WriteFooter()
1051 r->table_options.format_version); in WriteFooter()
1054 footer.set_checksum(r->table_options.checksum); in WriteFooter()
1057 assert(r->status.ok()); in WriteFooter()
1058 assert(r->io_status.ok()); in WriteFooter()
1059 r->io_status = r->file->Append(footer_encoding); in WriteFooter()
1060 if (r->io_status.ok()) { in WriteFooter()
1061 r->offset += footer_encoding.size(); in WriteFooter()
1063 r->status = r->io_status; in WriteFooter()
1067 Rep* r = rep_; in EnterUnbuffered() local
1068 assert(r->state == Rep::State::kBuffered); in EnterUnbuffered()
1069 r->state = Rep::State::kUnbuffered; in EnterUnbuffered()
1070 const size_t kSampleBytes = r->compression_opts.zstd_max_train_bytes > 0 in EnterUnbuffered()
1071 ? r->compression_opts.zstd_max_train_bytes in EnterUnbuffered()
1072 : r->compression_opts.max_dict_bytes; in EnterUnbuffered()
1073 Random64 generator{r->creation_time}; in EnterUnbuffered()
1076 if (!r->data_block_and_keys_buffers.empty()) { in EnterUnbuffered()
1080 generator.Uniform(r->data_block_and_keys_buffers.size())); in EnterUnbuffered()
1083 r->data_block_and_keys_buffers[rand_idx].first.size()); in EnterUnbuffered()
1085 r->data_block_and_keys_buffers[rand_idx].first, 0, copy_len); in EnterUnbuffered()
1093 if (r->compression_opts.zstd_max_train_bytes > 0) { in EnterUnbuffered()
1096 r->compression_opts.max_dict_bytes); in EnterUnbuffered()
1100 r->compression_dict.reset(new CompressionDict(dict, r->compression_type, in EnterUnbuffered()
1101 r->compression_opts.level)); in EnterUnbuffered()
1102 r->verify_dict.reset(new UncompressionDict( in EnterUnbuffered()
1103 dict, r->compression_type == kZSTD || in EnterUnbuffered()
1104 r->compression_type == kZSTDNotFinalCompression)); in EnterUnbuffered()
1106 for (size_t i = 0; ok() && i < r->data_block_and_keys_buffers.size(); ++i) { in EnterUnbuffered()
1107 const auto& data_block = r->data_block_and_keys_buffers[i].first; in EnterUnbuffered()
1108 auto& keys = r->data_block_and_keys_buffers[i].second; in EnterUnbuffered()
1113 if (r->filter_builder != nullptr) { in EnterUnbuffered()
1115 r->internal_comparator.user_comparator()->timestamp_size(); in EnterUnbuffered()
1116 r->filter_builder->Add(ExtractUserKeyAndStripTimestamp(key, ts_sz)); in EnterUnbuffered()
1118 r->index_builder->OnKeyAdded(key); in EnterUnbuffered()
1120 WriteBlock(Slice(data_block), &r->pending_handle, true /* is_data_block */); in EnterUnbuffered()
1121 if (ok() && i + 1 < r->data_block_and_keys_buffers.size()) { in EnterUnbuffered()
1123 r->data_block_and_keys_buffers[i + 1].second.front(); in EnterUnbuffered()
1125 r->index_builder->AddIndexEntry(&keys.back(), first_key_in_next_block_ptr, in EnterUnbuffered()
1126 r->pending_handle); in EnterUnbuffered()
1129 r->data_block_and_keys_buffers.clear(); in EnterUnbuffered()
1133 Rep* r = rep_; in Finish() local
1134 assert(r->state != Rep::State::kClosed); in Finish()
1135 bool empty_data_block = r->data_block.empty(); in Finish()
1137 if (r->state == Rep::State::kBuffered) { in Finish()
1143 r->index_builder->AddIndexEntry( in Finish()
1144 &r->last_key, nullptr /* no next data block */, r->pending_handle); in Finish()
1170 r->state = Rep::State::kClosed; in Finish()
1171 return r->status; in Finish()