1 // Copyright (c) 2011-present, Facebook, Inc. All rights reserved. 2 // This source code is licensed under both the GPLv2 (found in the 3 // COPYING file in the root directory) and Apache 2.0 License 4 // (found in the LICENSE.Apache file in the root directory). 5 // Copyright (c) 2011 The LevelDB Authors. All rights reserved. 6 // Use of this source code is governed by a BSD-style license that can be 7 // found in the LICENSE file. See the AUTHORS file for names of contributors. 8 #pragma once 9 #include <string> 10 #include <utility> 11 #include <vector> 12 #include "db/range_tombstone_fragmenter.h" 13 #include "db/table_properties_collector.h" 14 #include "logging/event_logger.h" 15 #include "options/cf_options.h" 16 #include "rocksdb/comparator.h" 17 #include "rocksdb/env.h" 18 #include "rocksdb/listener.h" 19 #include "rocksdb/options.h" 20 #include "rocksdb/status.h" 21 #include "rocksdb/table_properties.h" 22 #include "rocksdb/types.h" 23 #include "table/scoped_arena_iterator.h" 24 25 namespace ROCKSDB_NAMESPACE { 26 27 struct Options; 28 struct FileMetaData; 29 30 class Env; 31 struct EnvOptions; 32 class Iterator; 33 class SnapshotChecker; 34 class TableCache; 35 class VersionEdit; 36 class TableBuilder; 37 class WritableFileWriter; 38 class InternalStats; 39 40 // @param column_family_name Name of the column family that is also identified 41 // by column_family_id, or empty string if unknown. It must outlive the 42 // TableBuilder returned by this function. 43 TableBuilder* NewTableBuilder( 44 const ImmutableCFOptions& options, const MutableCFOptions& moptions, 45 const InternalKeyComparator& internal_comparator, 46 const std::vector<std::unique_ptr<IntTblPropCollectorFactory>>* 47 int_tbl_prop_collector_factories, 48 uint32_t column_family_id, const std::string& column_family_name, 49 WritableFileWriter* file, const CompressionType compression_type, 50 const uint64_t sample_for_compression, 51 const CompressionOptions& compression_opts, int level, 52 const bool skip_filters = false, const uint64_t creation_time = 0, 53 const uint64_t oldest_key_time = 0, const uint64_t target_file_size = 0, 54 const uint64_t file_creation_time = 0); 55 56 // Build a Table file from the contents of *iter. The generated file 57 // will be named according to number specified in meta. On success, the rest of 58 // *meta will be filled with metadata about the generated table. 59 // If no data is present in *iter, meta->file_size will be set to 60 // zero, and no Table file will be produced. 61 // 62 // @param column_family_name Name of the column family that is also identified 63 // by column_family_id, or empty string if unknown. 64 extern Status BuildTable( 65 const std::string& dbname, Env* env, FileSystem* fs, 66 const ImmutableCFOptions& options, 67 const MutableCFOptions& mutable_cf_options, const FileOptions& file_options, 68 TableCache* table_cache, InternalIterator* iter, 69 std::vector<std::unique_ptr<FragmentedRangeTombstoneIterator>> 70 range_del_iters, 71 FileMetaData* meta, const InternalKeyComparator& internal_comparator, 72 const std::vector<std::unique_ptr<IntTblPropCollectorFactory>>* 73 int_tbl_prop_collector_factories, 74 uint32_t column_family_id, const std::string& column_family_name, 75 std::vector<SequenceNumber> snapshots, 76 SequenceNumber earliest_write_conflict_snapshot, 77 SnapshotChecker* snapshot_checker, const CompressionType compression, 78 const uint64_t sample_for_compression, 79 const CompressionOptions& compression_opts, bool paranoid_file_checks, 80 InternalStats* internal_stats, TableFileCreationReason reason, 81 IOStatus* io_status, EventLogger* event_logger = nullptr, int job_id = 0, 82 const Env::IOPriority io_priority = Env::IO_HIGH, 83 TableProperties* table_properties = nullptr, int level = -1, 84 const uint64_t creation_time = 0, const uint64_t oldest_key_time = 0, 85 Env::WriteLifeTimeHint write_hint = Env::WLTH_NOT_SET, 86 const uint64_t file_creation_time = 0); 87 88 } // namespace ROCKSDB_NAMESPACE 89