52 : base_(base), is_replace_(is_replace) {}
71 Result<std::vector<std::unique_ptr<TableRequirement>>> Build();
75 void RequireLastAssignedFieldIdUnchanged();
77 void RequireCurrentSchemaIdUnchanged();
79 void RequireLastAssignedPartitionIdUnchanged();
81 void RequireDefaultSpecIdUnchanged();
83 void RequireDefaultSortOrderIdUnchanged();
85 void RequireNoBranchesChanged();
90 bool AddChangedRef(
const std::string& ref_name);
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_;
121 static Result<std::vector<std::unique_ptr<TableRequirement>>> ForCreateTable(
122 const std::vector<std::unique_ptr<TableUpdate>>& table_updates);
132 static Result<std::vector<std::unique_ptr<TableRequirement>>> ForReplaceTable(
134 const std::vector<std::unique_ptr<TableUpdate>>& table_updates);
144 static Result<std::vector<std::unique_ptr<TableRequirement>>> ForUpdateTable(
146 const std::vector<std::unique_ptr<TableUpdate>>& table_updates);
149 static Result<bool> IsCreate(
150 const std::vector<std::unique_ptr<TableRequirement>>& requirements);
Context for generating table requirements.
Definition table_requirements.h:45
TableUpdateContext(const TableMetadata *base, bool is_replace)
Construct a context for requirement generation.
Definition table_requirements.h:51
bool is_replace() const
Check if this is a replace operation.
Definition table_requirements.h:68