// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
-// This source code is licensed under the BSD-style license found in the
-// LICENSE file in the root directory of this source tree. An additional grant
-// of patent rights can be found in the PATENTS file in the same directory.
+// 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).
//
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
std::vector<CompactionInputFiles> inputs, int output_level,
uint64_t target_file_size, uint64_t max_compaction_bytes,
uint32_t output_path_id, CompressionType compression,
+ CompressionOptions compression_opts, uint32_t max_subcompactions,
std::vector<FileMetaData*> grandparents,
bool manual_compaction = false, double score = -1,
bool deletion_compaction = false,
// input level.
// REQUIREMENT: "compaction_input_level" must be >= 0 and
// < "input_levels()"
- const std::vector<FileMetaData*>* inputs(size_t compaction_input_level) {
+ const std::vector<FileMetaData*>* inputs(
+ size_t compaction_input_level) const {
assert(compaction_input_level < inputs_.size());
return &inputs_[compaction_input_level].files;
}
// What compression for output
CompressionType output_compression() const { return output_compression_; }
+ // What compression options for output
+ CompressionOptions output_compression_opts() const {
+ return output_compression_opts_;
+ }
+
// Whether need to write output file to second DB path.
uint32_t output_path_id() const { return output_path_id_; }
Slice GetLargestUserKey() const { return largest_user_key_; }
+ int GetInputBaseLevel() const;
+
CompactionReason compaction_reason() { return compaction_reason_; }
const std::vector<FileMetaData*>& grandparents() const {
uint64_t max_compaction_bytes() const { return max_compaction_bytes_; }
+ uint32_t max_subcompactions() const { return max_subcompactions_; }
+
+ uint64_t MaxInputFileCreationTime() const;
+
private:
// mark (or clear) all files that are being compacted
void MarkFilesBeingCompacted(bool mark_as_compacted);
const int output_level_; // levels to which output files are stored
uint64_t max_output_file_size_;
uint64_t max_compaction_bytes_;
+ uint32_t max_subcompactions_;
const ImmutableCFOptions immutable_cf_options_;
const MutableCFOptions mutable_cf_options_;
Version* input_version_;
const uint32_t output_path_id_;
CompressionType output_compression_;
+ CompressionOptions output_compression_opts_;
// If true, then the comaction can be done by simply deleting input files.
const bool deletion_compaction_;