|
iceberg-cpp
|
Appending new files in a table. More...
#include <fast_append.h>
Public Member Functions | |
| FastAppend & | AppendFile (const std::shared_ptr< DataFile > &file) |
| Append a data file to this update. | |
| FastAppend & | AppendManifest (const ManifestFile &manifest) |
| Append a manifest file to this update. | |
| std::string | operation () override |
| A string that describes the action that produced the new snapshot. | |
| Result< std::vector< ManifestFile > > | Apply (const TableMetadata &metadata_to_update, const std::shared_ptr< Snapshot > &snapshot) override |
| Apply the update's changes to the given metadata and snapshot. | |
| std::unordered_map< std::string, std::string > | Summary () override |
| Get the summary map for this operation. | |
| void | CleanUncommitted (const std::unordered_set< std::string > &committed) override |
| Clean up any uncommitted manifests that were created. | |
| bool | CleanupAfterCommit () const override |
| Check if cleanup should happen after commit. | |
Public Member Functions inherited from iceberg::SnapshotUpdate | |
| Kind | kind () const override |
| Return the kind of this pending update. | |
| bool | IsRetryable () const override |
| Whether this update can be retried after a commit conflict. | |
| auto & | DeleteWith (this auto &self, std::function< Status(const std::string &)> delete_func) |
| Set a callback to delete files instead of the table's default. | |
| auto & | StageOnly (this auto &self) |
| Stage a snapshot in table metadata, but not update the current snapshot id. | |
| auto & | SetTargetBranch (this auto &self, const std::string &branch) |
| Perform operations on a particular branch. | |
| auto & | Set (this auto &self, const std::string &property, const std::string &value) |
| Set a summary property. | |
| Result< ApplyResult > | Apply () |
| Apply the update's changes to create a new snapshot. | |
| Status | Finalize (Result< const TableMetadata * > commit_result) override |
| Finalize the snapshot update, cleaning up any uncommitted files. | |
Public Member Functions inherited from iceberg::PendingUpdate | |
| virtual Status | Commit () |
| Apply the pending changes and commit. | |
| PendingUpdate (const PendingUpdate &)=delete | |
| PendingUpdate & | operator= (const PendingUpdate &)=delete |
| PendingUpdate (PendingUpdate &&) noexcept=default | |
| PendingUpdate & | operator= (PendingUpdate &&) noexcept=default |
Public Member Functions inherited from iceberg::ErrorCollector | |
| ErrorCollector (ErrorCollector &&)=default | |
| ErrorCollector & | operator= (ErrorCollector &&)=default |
| ErrorCollector (const ErrorCollector &)=default | |
| ErrorCollector & | operator= (const ErrorCollector &)=default |
| template<typename... Args> | |
| auto & | AddError (this auto &self, ErrorKind kind, const std::format_string< Args... > fmt, Args &&... args) |
| Add a specific error and return reference to derived class. | |
| auto & | AddError (this auto &self, Error err) |
| Add an existing error object and return reference to derived class. | |
| auto & | AddError (this auto &self, std::unexpected< Error > err) |
| Add an unexpected result's error and return reference to derived class. | |
| bool | has_errors () const |
| Check if any errors have been collected. | |
| size_t | error_count () const |
| Get the number of errors collected. | |
| Status | CheckErrors () const |
| Check for accumulated errors and return them if any exist. | |
| void | ClearErrors () |
| Clear all accumulated errors. | |
| const std::vector< Error > & | errors () const |
| Get read-only access to all collected errors. | |
Static Public Member Functions | |
| static Result< std::unique_ptr< FastAppend > > | Make (std::string table_name, std::shared_ptr< TransactionContext > ctx) |
| Create a new FastAppend instance. | |
Additional Inherited Members | |
Public Types inherited from iceberg::PendingUpdate | |
| enum class | Kind : uint8_t { kExpireSnapshots , kSetSnapshot , kUpdateLocation , kUpdatePartitionSpec , kUpdatePartitionStatistics , kUpdateProperties , kUpdateSchema , kUpdateSnapshot , kUpdateSnapshotReference , kUpdateSortOrder , kUpdateStatistics } |
Protected Member Functions inherited from iceberg::SnapshotUpdate | |
| SnapshotUpdate (std::shared_ptr< TransactionContext > ctx) | |
| Result< std::vector< ManifestFile > > | WriteDataManifests (std::span< const std::shared_ptr< DataFile > > files, const std::shared_ptr< PartitionSpec > &spec, std::optional< int64_t > data_sequence_number=std::nullopt) |
| Write data manifests for the given data files. | |
| Result< std::vector< ManifestFile > > | WriteDeleteManifests (std::span< const std::shared_ptr< DataFile > > files, const std::shared_ptr< PartitionSpec > &spec) |
| Write delete manifests for the given delete files. | |
| const std::string & | target_branch () const |
| bool | can_inherit_snapshot_id () const |
| const std::string & | commit_uuid () const |
| int32_t | manifest_count () const |
| int32_t | attempt () const |
| int64_t | target_manifest_size_bytes () const |
| virtual Status | Validate (const TableMetadata ¤t_metadata, const std::shared_ptr< Snapshot > &snapshot) |
| Validate the current metadata. | |
| int64_t | SnapshotId () |
| Get or generate the snapshot ID for the new snapshot. | |
| Status | DeleteFile (const std::string &path) |
| Delete a file at the given path. | |
| std::string | ManifestPath () |
| std::string | ManifestListPath () |
| SnapshotSummaryBuilder & | summary_builder () |
Protected Member Functions inherited from iceberg::PendingUpdate | |
| PendingUpdate (std::shared_ptr< TransactionContext > ctx) | |
| const TableMetadata & | base () const |
Protected Attributes inherited from iceberg::SnapshotUpdate | |
| SnapshotSummaryBuilder | summary_ |
Protected Attributes inherited from iceberg::PendingUpdate | |
| std::shared_ptr< TransactionContext > | ctx_ |
Protected Attributes inherited from iceberg::ErrorCollector | |
| std::vector< Error > | errors_ |
Appending new files in a table.
FastAppend is optimized for appending new data files to a table, it creates new manifest files for the added data without compacting or rewriting existing manifests, making it faster for write-heavy workloads.
| FastAppend & iceberg::FastAppend::AppendFile | ( | const std::shared_ptr< DataFile > & | file | ) |
Append a data file to this update.
| file | The data file to append |
| FastAppend & iceberg::FastAppend::AppendManifest | ( | const ManifestFile & | manifest | ) |
Append a manifest file to this update.
The manifest must only contain added files (no existing or deleted files). If the manifest doesn't have a snapshot ID assigned and snapshot ID inheritance is enabled, it will be used directly. Otherwise, it will be copied with the new snapshot ID.
| manifest | The manifest file to append |
|
overridevirtual |
Apply the update's changes to the given metadata and snapshot.
| metadata_to_update | The base table metadata to apply changes to |
| snapshot | Snapshot to apply the changes to |
Implements iceberg::SnapshotUpdate.
|
overridevirtual |
Clean up any uncommitted manifests that were created.
Manifests may not be committed if Apply is called multiple times because a commit conflict has occurred. Implementations may keep around manifests because the same changes will be made by both Apply calls. This method instructs the implementation to clean up those manifests and passes the paths of the manifests that were actually committed.
| committed | A set of manifest paths that were actually committed |
Implements iceberg::SnapshotUpdate.
|
overridevirtual |
Check if cleanup should happen after commit.
Reimplemented from iceberg::SnapshotUpdate.
|
static |
Create a new FastAppend instance.
| table_name | The name of the table |
| transaction | The transaction to use for this update |
|
overridevirtual |
A string that describes the action that produced the new snapshot.
Implements iceberg::SnapshotUpdate.
|
overridevirtual |
Get the summary map for this operation.
Implements iceberg::SnapshotUpdate.