summaryrefslogtreecommitdiff
path: root/db/column_family.h
diff options
context:
space:
mode:
authorYu Zhang <yuzhangyu@fb.com>2023-05-30 19:32:00 -0700
committerFacebook GitHub Bot <facebook-github-bot@users.noreply.github.com>2023-05-30 19:32:00 -0700
commit56ca9e3106e05c0c031b179ecbb9cb0865fc22dd (patch)
tree4deb7bea9a77ce1fb514c5b6c3e75c41f027c21b /db/column_family.h
parent8848ec92dd782d3448b874c8f57b17be7a7457bc (diff)
Logging timestamp size record in WAL and use it during recovery (#11471)
Summary: Start logging the timestamp size record in WAL and use the record during recovery. Currently, user comparator cannot be different from what was used to create a column family, so the timestamp size record is just used to confirm it's consistent with the timestamp size the running user comparator indicates. Pull Request resolved: https://github.com/facebook/rocksdb/pull/11471 Test Plan: ``` make all check ./db_secondary_test ./db_wal_test --gtest_filter="*WithTimestamp*" ./repair_test --gtest_filter="*WithTimestamp*" ``` Reviewed By: ltamasi Differential Revision: D46236769 Pulled By: jowlyzhang fbshipit-source-id: f6c60b5c8defdb05021c63df302ccc0be1275ad0
Diffstat (limited to 'db/column_family.h')
-rw-r--r--db/column_family.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/db/column_family.h b/db/column_family.h
index 9ec093010..5fe593a84 100644
--- a/db/column_family.h
+++ b/db/column_family.h
@@ -705,6 +705,16 @@ class ColumnFamilySet {
Version* dummy_version,
const ColumnFamilyOptions& options);
+ const std::unordered_map<uint32_t, size_t>&
+ GetRunningColumnFamiliesTimestampSize() const {
+ return running_ts_sz_;
+ }
+
+ const std::unordered_map<uint32_t, size_t>&
+ GetColumnFamiliesTimestampSizeForRecord() const {
+ return ts_sz_for_record_;
+ }
+
iterator begin() { return iterator(dummy_cfd_->next_); }
iterator end() { return iterator(dummy_cfd_); }
@@ -730,6 +740,15 @@ class ColumnFamilySet {
UnorderedMap<std::string, uint32_t> column_families_;
UnorderedMap<uint32_t, ColumnFamilyData*> column_family_data_;
+ // Mutating / reading `running_ts_sz_` and `ts_sz_for_record_` follow
+ // the same requirements as `column_families_` and `column_family_data_`.
+ // Mapping from column family id to user-defined timestamp size for all
+ // running column families.
+ std::unordered_map<uint32_t, size_t> running_ts_sz_;
+ // Mapping from column family id to user-defined timestamp size for
+ // column families with non-zero user-defined timestamp size.
+ std::unordered_map<uint32_t, size_t> ts_sz_for_record_;
+
uint32_t max_column_family_;
const FileOptions file_options_;