| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
- // This source code is licensed under both the GPLv2 (found in the
- // COPYING file in the root directory) and Apache 2.0 License
- // (found in the LICENSE.Apache file in the root directory).
- #include "db/table_properties_collector.h"
- #include "db/dbformat.h"
- #include "util/coding.h"
- #include "util/string_util.h"
- namespace ROCKSDB_NAMESPACE {
- namespace {
- uint64_t GetUint64Property(const UserCollectedProperties& props,
- const std::string& property_name,
- bool* property_present) {
- auto pos = props.find(property_name);
- if (pos == props.end()) {
- *property_present = false;
- return 0;
- }
- Slice raw = pos->second;
- uint64_t val = 0;
- *property_present = true;
- return GetVarint64(&raw, &val) ? val : 0;
- }
- } // namespace
- Status UserKeyTablePropertiesCollector::InternalAdd(const Slice& key,
- const Slice& value,
- uint64_t file_size) {
- ParsedInternalKey ikey;
- if (!ParseInternalKey(key, &ikey)) {
- return Status::InvalidArgument("Invalid internal key");
- }
- return collector_->AddUserKey(ikey.user_key, value, GetEntryType(ikey.type),
- ikey.sequence, file_size);
- }
- void UserKeyTablePropertiesCollector::BlockAdd(
- uint64_t bLockRawBytes, uint64_t blockCompressedBytesFast,
- uint64_t blockCompressedBytesSlow) {
- return collector_->BlockAdd(bLockRawBytes, blockCompressedBytesFast,
- blockCompressedBytesSlow);
- }
- Status UserKeyTablePropertiesCollector::Finish(
- UserCollectedProperties* properties) {
- return collector_->Finish(properties);
- }
- UserCollectedProperties
- UserKeyTablePropertiesCollector::GetReadableProperties() const {
- return collector_->GetReadableProperties();
- }
- uint64_t GetDeletedKeys(
- const UserCollectedProperties& props) {
- bool property_present_ignored;
- return GetUint64Property(props, TablePropertiesNames::kDeletedKeys,
- &property_present_ignored);
- }
- uint64_t GetMergeOperands(const UserCollectedProperties& props,
- bool* property_present) {
- return GetUint64Property(
- props, TablePropertiesNames::kMergeOperands, property_present);
- }
- } // namespace ROCKSDB_NAMESPACE
|