52 using SnapshotIdSupplier = std::function<int64_t()>;
63 static Result<std::unique_ptr<ManifestMergeManager>> Make(
64 ManifestContent content, int64_t target_size_bytes, int32_t min_count_to_merge,
65 bool merge_enabled, std::shared_ptr<FileIO> file_io,
66 SnapshotIdSupplier snapshot_id_supplier,
67 std::function<Status(
const std::string&)> delete_file = {});
84 Result<std::vector<ManifestFile>> MergeManifests(
85 const std::vector<ManifestFile>& existing_manifests,
86 const std::vector<ManifestFile>& new_manifests,
const TableMetadata& metadata,
94 Status CleanUncommitted(
const std::unordered_set<std::string>& committed);
98 int32_t min_count_to_merge,
bool merge_enabled,
99 std::shared_ptr<FileIO> file_io,
100 SnapshotIdSupplier snapshot_id_supplier,
101 std::function<Status(
const std::string&)> delete_file);
103 struct MergedManifestCache {
105 std::vector<ManifestFile> bin;
106 bool operator==(
const Key& other)
const =
default;
110 size_t operator()(
const Key& key)
const;
113 const ManifestFile* Find(
const std::vector<const ManifestFile*>& bin)
const;
114 void Add(
const std::vector<const ManifestFile*>& bin,
const ManifestFile& manifest);
115 bool empty()
const {
return entries_.empty(); }
116 Result<int32_t> CleanUncommitted(
117 const std::unordered_set<std::string>& committed, int64_t snapshot_id,
118 const std::function<Status(
const std::string&)>& delete_file);
121 static Key MakeKey(
const std::vector<const ManifestFile*>& bin);
123 std::unordered_map<Key, ManifestFile, KeyHash> entries_;
130 Result<std::vector<ManifestFile>> MergeGroup(
131 const std::vector<const ManifestFile*>& group,
const ManifestFile* first,
141 Result<ManifestFile> FlushBin(
const std::vector<const ManifestFile*>& bin,
146 const int64_t target_size_bytes_;
147 const int32_t min_count_to_merge_;
148 const bool merge_enabled_;
149 std::shared_ptr<FileIO> file_io_;
150 SnapshotIdSupplier snapshot_id_supplier_;
151 std::function<Status(
const std::string&)> delete_file_;
152 int32_t replaced_manifests_count_{0};
153 MergedManifestCache merged_manifests_;
std::function< Result< std::unique_ptr< ManifestWriter > >(int32_t spec_id, ManifestContent content)> ManifestWriterFactory
Factory type for creating ManifestWriter instances.
Definition manifest_writer.h:169