From 6d58ea901d64626745b96cc9ac072b5c1c5c8be4 Mon Sep 17 00:00:00 2001 From: Adam Retter Date: Tue, 26 Nov 2019 16:55:46 -0800 Subject: [PATCH] Fix compilation under MSVC VS2015 (#6081) Summary: **NOTE**: this also needs to be back-ported to 6.4.6 and possibly older branches if further releases from them is envisaged. Pull Request resolved: https://github.com/facebook/rocksdb/pull/6081 Differential Revision: D18710107 Pulled By: zhichao-cao fbshipit-source-id: 03260f9316566e2bfc12c7d702d6338bb7941e01 --- .../block_cache_trace_analyzer.cc | 17 +++++++++-------- .../block_cache_trace_analyzer.h | 2 +- utilities/transactions/transaction_base.cc | 2 +- utilities/transactions/transaction_base.h | 2 +- utilities/transactions/write_prepared_txn.cc | 2 +- utilities/transactions/write_prepared_txn.h | 2 +- utilities/transactions/write_unprepared_txn.cc | 2 +- utilities/transactions/write_unprepared_txn.h | 2 +- 8 files changed, 16 insertions(+), 15 deletions(-) diff --git a/tools/block_cache_analyzer/block_cache_trace_analyzer.cc b/tools/block_cache_analyzer/block_cache_trace_analyzer.cc index 891af9a52..e6b6a2c05 100644 --- a/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +++ b/tools/block_cache_analyzer/block_cache_trace_analyzer.cc @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -650,7 +651,7 @@ void BlockCacheTraceAnalyzer::WriteCorrelationFeaturesToFile( const std::map& label_features, const std::map& label_predictions, uint32_t max_number_of_values) const { - std::default_random_engine rand_engine(static_cast(env_->NowMicros())); + std::default_random_engine rand_engine(static_cast(env_->NowMicros())); for (auto const& label_feature_vectors : label_features) { const Features& past = label_feature_vectors.second; auto it = label_predictions.find(label_feature_vectors.first); @@ -1170,7 +1171,7 @@ void BlockCacheTraceAnalyzer::WriteReuseLifetime( } void BlockCacheTraceAnalyzer::WriteBlockReuseTimeline( - uint64_t reuse_window, bool user_access_only, TraceType block_type) const { + const uint64_t reuse_window, bool user_access_only, TraceType block_type) const { // A map from block key to an array of bools that states whether a block is // accessed in a time window. std::map> block_accessed; @@ -1209,11 +1210,11 @@ void BlockCacheTraceAnalyzer::WriteBlockReuseTimeline( TraverseBlocks(block_callback); // A cell is the number of blocks accessed in a reuse window. - uint64_t reuse_table[reuse_vector_size][reuse_vector_size]; + std::unique_ptr reuse_table(new uint64_t[reuse_vector_size * reuse_vector_size]); for (uint64_t start_time = 0; start_time < reuse_vector_size; start_time++) { // Initialize the reuse_table. for (uint64_t i = 0; i < reuse_vector_size; i++) { - reuse_table[start_time][i] = 0; + reuse_table[start_time * reuse_vector_size + i] = 0; } // Examine all blocks. for (auto const& block : block_accessed) { @@ -1222,7 +1223,7 @@ void BlockCacheTraceAnalyzer::WriteBlockReuseTimeline( // This block is accessed at start time and at the current time. We // increment reuse_table[start_time][i] since it is reused at the ith // window. - reuse_table[start_time][i]++; + reuse_table[start_time * reuse_vector_size + i]++; } } } @@ -1250,8 +1251,8 @@ void BlockCacheTraceAnalyzer::WriteBlockReuseTimeline( if (j < start_time) { row += "100.0"; } else { - row += std::to_string(percent(reuse_table[start_time][j], - reuse_table[start_time][start_time])); + row += std::to_string(percent(reuse_table[start_time * reuse_vector_size + j], + reuse_table[start_time * reuse_vector_size + start_time])); } } out << row << std::endl; @@ -1673,7 +1674,7 @@ void BlockCacheTraceAnalyzer::PrintAccessCountStats(bool user_access_only, if (bottom_k_index >= bottom_k) { break; } - std::map caller_naccesses; + std::map caller_naccesses; uint64_t naccesses = 0; for (auto const& block_id : naccess_it->second) { BlockAccessInfo* block = block_info_map_.find(block_id)->second; diff --git a/tools/block_cache_analyzer/block_cache_trace_analyzer.h b/tools/block_cache_analyzer/block_cache_trace_analyzer.h index d7abd0100..4a15429e4 100644 --- a/tools/block_cache_analyzer/block_cache_trace_analyzer.h +++ b/tools/block_cache_analyzer/block_cache_trace_analyzer.h @@ -289,7 +289,7 @@ class BlockCacheTraceAnalyzer { // The file is named // "block_type_user_access_only_reuse_window_reuse_timeline". The file format // is start_time,0,1,...,N where N equals trace_duration / reuse_window. - void WriteBlockReuseTimeline(uint64_t reuse_window, bool user_access_only, + void WriteBlockReuseTimeline(const uint64_t reuse_window, bool user_access_only, TraceType block_type) const; // Write the Get spatical locality into csv files saved in 'output_dir'. diff --git a/utilities/transactions/transaction_base.cc b/utilities/transactions/transaction_base.cc index 04e664f6f..54b5b6204 100644 --- a/utilities/transactions/transaction_base.cc +++ b/utilities/transactions/transaction_base.cc @@ -323,7 +323,7 @@ void TransactionBaseImpl::MultiGet(const ReadOptions& read_options, ColumnFamilyHandle* column_family, const size_t num_keys, const Slice* keys, PinnableSlice* values, Status* statuses, - bool sorted_input) { + const bool sorted_input) { write_batch_.MultiGetFromBatchAndDB(db_, read_options, column_family, num_keys, keys, values, statuses, sorted_input); diff --git a/utilities/transactions/transaction_base.h b/utilities/transactions/transaction_base.h index 72fa9d26a..082b0b4f5 100644 --- a/utilities/transactions/transaction_base.h +++ b/utilities/transactions/transaction_base.h @@ -98,7 +98,7 @@ class TransactionBaseImpl : public Transaction { void MultiGet(const ReadOptions& options, ColumnFamilyHandle* column_family, const size_t num_keys, const Slice* keys, PinnableSlice* values, - Status* statuses, bool sorted_input = false) override; + Status* statuses, const bool sorted_input = false) override; using Transaction::MultiGetForUpdate; std::vector MultiGetForUpdate( diff --git a/utilities/transactions/write_prepared_txn.cc b/utilities/transactions/write_prepared_txn.cc index 8dfc0d1d4..f8eef361b 100644 --- a/utilities/transactions/write_prepared_txn.cc +++ b/utilities/transactions/write_prepared_txn.cc @@ -44,7 +44,7 @@ void WritePreparedTxn::MultiGet(const ReadOptions& options, ColumnFamilyHandle* column_family, const size_t num_keys, const Slice* keys, PinnableSlice* values, Status* statuses, - bool sorted_input) { + const bool sorted_input) { SequenceNumber min_uncommitted, snap_seq; const SnapshotBackup backed_by_snapshot = wpt_db_->AssignMinMaxSeqs(options.snapshot, &min_uncommitted, &snap_seq); diff --git a/utilities/transactions/write_prepared_txn.h b/utilities/transactions/write_prepared_txn.h index e5dadabc4..aaebaf48a 100644 --- a/utilities/transactions/write_prepared_txn.h +++ b/utilities/transactions/write_prepared_txn.h @@ -61,7 +61,7 @@ class WritePreparedTxn : public PessimisticTransaction { ColumnFamilyHandle* column_family, const size_t num_keys, const Slice* keys, PinnableSlice* values, Status* statuses, - bool sorted_input = false) override; + const bool sorted_input = false) override; // Note: The behavior is undefined in presence of interleaved writes to the // same transaction. diff --git a/utilities/transactions/write_unprepared_txn.cc b/utilities/transactions/write_unprepared_txn.cc index 9b58d8bc8..bcaeb1eae 100644 --- a/utilities/transactions/write_unprepared_txn.cc +++ b/utilities/transactions/write_unprepared_txn.cc @@ -837,7 +837,7 @@ void WriteUnpreparedTxn::MultiGet(const ReadOptions& options, ColumnFamilyHandle* column_family, const size_t num_keys, const Slice* keys, PinnableSlice* values, Status* statuses, - bool sorted_input) { + const bool sorted_input) { SequenceNumber min_uncommitted, snap_seq; const SnapshotBackup backed_by_snapshot = wupt_db_->AssignMinMaxSeqs(options.snapshot, &min_uncommitted, &snap_seq); diff --git a/utilities/transactions/write_unprepared_txn.h b/utilities/transactions/write_unprepared_txn.h index e2a5399c3..f39f39891 100644 --- a/utilities/transactions/write_unprepared_txn.h +++ b/utilities/transactions/write_unprepared_txn.h @@ -194,7 +194,7 @@ class WriteUnpreparedTxn : public WritePreparedTxn { ColumnFamilyHandle* column_family, const size_t num_keys, const Slice* keys, PinnableSlice* values, Status* statuses, - bool sorted_input = false) override; + const bool sorted_input = false) override; using Transaction::GetIterator; virtual Iterator* GetIterator(const ReadOptions& options) override;