27#include <unordered_map>
28#include <unordered_set>
71 std::shared_ptr<TransactionContext> ctx);
76 std::vector<std::string> refs_to_remove;
77 std::vector<int64_t> snapshot_ids_to_remove;
78 std::vector<int32_t> partition_spec_ids_to_remove;
79 std::unordered_set<int32_t> schema_ids_to_remove;
80 std::shared_ptr<const TableMetadata> metadata_before_expiration;
158 Kind
kind() const final {
return Kind::kExpireSnapshots; }
167 Status CleanStaged()
override {
168 apply_result_.reset();
171 explicit ExpireSnapshots(std::shared_ptr<TransactionContext> ctx);
173 using SnapshotToRef = std::unordered_map<std::string, std::shared_ptr<SnapshotRef>>;
175 Result<SnapshotToRef> ComputeRetainedRefs(
const SnapshotToRef& refs)
const;
177 Result<std::unordered_set<int64_t>> ComputeBranchSnapshotsToRetain(
178 int64_t snapshot_id, TimePointMs expire_snapshot_older_than,
179 int32_t min_snapshots_to_keep)
const;
181 Result<std::unordered_set<int64_t>> ComputeAllBranchSnapshotIdsToRetain(
182 const SnapshotToRef& refs)
const;
184 Result<std::unordered_set<int64_t>> UnreferencedSnapshotIdsToRetain(
185 const SnapshotToRef& refs)
const;
188 const int64_t default_max_ref_age_ms_;
189 int32_t default_min_num_snapshots_;
191 std::function<void(
const std::string&)> delete_func_;
192 std::vector<int64_t> snapshot_ids_to_expire_;
193 enum CleanupLevel cleanup_level_ { CleanupLevel::kAll };
194 OptionalExecutor plan_executor_;
195 bool clean_expired_metadata_{
false};
196 bool specified_snapshot_id_{
false};
197 OptionalExecutor delete_executor_;
200 std::optional<ApplyResult> apply_result_;
Schedules iceberg-cpp tasks.
Definition executor.h:46
API for removing old snapshots from a table.
Definition expire_snapshots.h:68
ExpireSnapshots & RetainLast(int num_snapshots)
Retains the most recent ancestors of the current snapshot.
bool IsRetryable() const override
Whether this update can be retried after a commit conflict.
Definition expire_snapshots.h:159
ExpireSnapshots & PlanWith(Executor &executor)
Configure an executor for planning expired snapshot metadata.
ExpireSnapshots & CleanExpiredMetadata(bool clean)
Enable cleaning up unused metadata, such as partition specs, schemas, etc.
ExpireSnapshots & DeleteWith(std::function< void(const std::string &)> delete_func)
Passes an alternative delete implementation that will be used for manifests and data files.
Kind kind() const final
Return the kind of this pending update.
Definition expire_snapshots.h:158
ExpireSnapshots & CleanupLevel(enum CleanupLevel level)
Configures the cleanup level for expired files.
ExpireSnapshots & ExpireSnapshotId(int64_t snapshot_id)
Expires a specific Snapshot identified by id.
ExpireSnapshots & ExpireOlderThan(int64_t timestamp_millis)
Expires all snapshots older than the given timestamp.
ExpireSnapshots & ExecuteDeleteWith(Executor &executor)
Configure an executor for DeleteWith() callbacks.
Base class for all kinds of table metadata updates.
Definition pending_update.h:48
A transaction for performing multiple updates to a table.
Definition transaction.h:53
Definition expected.h:1199
Define task executor interfaces.
Define symbol visibility macros for core Iceberg APIs.
Core Apache Iceberg C++ APIs.
Definition arrow_io_util.h:34
std::chrono::time_point< std::chrono::system_clock, std::chrono::milliseconds > TimePointMs
A time point in milliseconds.
Definition timepoint.h:33
CleanupLevel
An enum representing possible clean up levels used in snapshot expiration.
Definition expire_snapshots.h:44
@ kAll
Clean up both metadata and data files (default).
@ kNone
Skip all file cleanup, only remove snapshot metadata.
Define Result, Status, and error helpers.
Definition expire_snapshots.h:75
Provide time point conversion helpers.