diff --git a/db/version_set.cc b/db/version_set.cc index 63d5af3af..6d4fb7315 100644 --- a/db/version_set.cc +++ b/db/version_set.cc @@ -1774,7 +1774,11 @@ void Version::MultiGet(const ReadOptions& read_options, MultiGetRange* range, iter->value, nullptr, &(iter->merge_context), &iter->max_covering_tombstone_seq, this->env_, &iter->seq, merge_operator_ ? &pinned_iters_mgr : nullptr, callback, is_blob); - iter->get_context = &get_ctx.back(); + } + int get_ctx_index = 0; + for (auto iter = range->begin(); iter != range->end(); + ++iter, get_ctx_index++) { + iter->get_context = &(get_ctx[get_ctx_index]); } MultiGetRange file_picker_range(*range, range->begin(), range->end()); diff --git a/table/multiget_context.h b/table/multiget_context.h index d3a8d0946..c9e682fad 100644 --- a/table/multiget_context.h +++ b/table/multiget_context.h @@ -123,7 +123,7 @@ class MultiGetContext { KeyContext** sorted_keys_; size_t num_keys_; uint64_t value_mask_; - std::unique_ptr lookup_key_heap_buf; + std::unique_ptr lookup_key_heap_buf; LookupKey* lookup_key_ptr_; public: diff --git a/tools/db_stress.cc b/tools/db_stress.cc index 4ed66ed6d..c6959802b 100644 --- a/tools/db_stress.cc +++ b/tools/db_stress.cc @@ -3057,6 +3057,8 @@ class NonBatchedOpsStressTest : public StressTest { size_t num_keys = rand_keys.size(); std::vector key_str; std::vector keys; + key_str.reserve(num_keys); + keys.reserve(num_keys); std::vector values(num_keys); std::vector statuses(num_keys); ColumnFamilyHandle* cfh = column_families_[rand_column_families[0]]; @@ -3615,6 +3617,8 @@ class BatchedOpsStressTest : public StressTest { ReadOptions readoptionscopy = readoptions; readoptionscopy.snapshot = db_->GetSnapshot(); std::vector key_str; + key_str.reserve(num_keys); + key_slices.reserve(num_keys); std::string from_db; ColumnFamilyHandle* cfh = column_families_[rand_column_families[0]]; @@ -3888,6 +3892,8 @@ class AtomicFlushStressTest : public StressTest { size_t num_keys = rand_keys.size(); std::vector key_str; std::vector keys; + keys.reserve(num_keys); + key_str.reserve(num_keys); std::vector values(num_keys); std::vector statuses(num_keys); ColumnFamilyHandle* cfh = column_families_[rand_column_families[0]];