31#include <unordered_set>
52 : base_(base), is_replace_(is_replace) {}
94 const bool is_replace_;
96 std::vector<std::unique_ptr<TableRequirement>> requirements_;
99 bool added_last_assigned_field_id_ =
false;
100 bool added_current_schema_id_ =
false;
101 bool added_last_assigned_partition_id_ =
false;
102 bool added_default_spec_id_ =
false;
103 bool added_default_sort_order_id_ =
false;
106 std::unordered_set<std::string> changed_refs_;
122 const std::vector<std::unique_ptr<TableUpdate>>& table_updates);
134 const std::vector<std::unique_ptr<TableUpdate>>& table_updates);
146 const std::vector<std::unique_ptr<TableUpdate>>& table_updates);
150 const std::vector<std::unique_ptr<TableRequirement>>& requirements);
Base class for update requirement operations.
Definition table_requirement.h:44
Factory class for generating table requirements.
Definition table_requirements.h:113
static Result< std::vector< std::unique_ptr< TableRequirement > > > ForReplaceTable(const TableMetadata &base, const std::vector< std::unique_ptr< TableUpdate > > &table_updates)
Generate requirements for replacing an existing table.
static Result< std::vector< std::unique_ptr< TableRequirement > > > ForCreateTable(const std::vector< std::unique_ptr< TableUpdate > > &table_updates)
Generate requirements for creating a new table.
static Result< bool > IsCreate(const std::vector< std::unique_ptr< TableRequirement > > &requirements)
Check if the requirements are for table creation.
static Result< std::vector< std::unique_ptr< TableRequirement > > > ForUpdateTable(const TableMetadata &base, const std::vector< std::unique_ptr< TableUpdate > > &table_updates)
Generate requirements for updating an existing table.
Context for generating table requirements.
Definition table_requirements.h:45
void RequireCurrentSchemaIdUnchanged()
Require that the current schema ID remains unchanged.
void RequireDefaultSpecIdUnchanged()
Require that the default spec ID remains unchanged.
void RequireDefaultSortOrderIdUnchanged()
Require that the default sort order ID remains unchanged.
void RequireLastAssignedPartitionIdUnchanged()
Require that the last assigned partition ID remains unchanged.
TableUpdateContext(const TableMetadata *base, bool is_replace)
Construct a context for requirement generation.
Definition table_requirements.h:51
bool AddChangedRef(const std::string &ref_name)
Track a changed ref and return whether it was newly added.
bool is_replace() const
Check if this is a replace operation.
Definition table_requirements.h:68
void RequireNoBranchesChanged()
Require that no branches have been changed.
Result< std::vector< std::unique_ptr< TableRequirement > > > Build()
Build and return the list of requirements.
void RequireLastAssignedFieldIdUnchanged()
Require that the last assigned field ID remains unchanged.
Define symbol visibility macros for core Iceberg APIs.
Core Apache Iceberg C++ APIs.
Definition arrow_io_util.h:33
std::expected< T, E > Result
Result alias.
Definition result.h:88