2121
2222#include " iceberg/exception.h"
2323#include " iceberg/table_metadata.h"
24- #include " iceberg/table_requirement.h"
2524#include " iceberg/table_requirements.h"
2625
2726namespace iceberg ::table {
@@ -32,9 +31,8 @@ void AssignUUID::ApplyTo(TableMetadataBuilder& builder) const {
3231 builder.AssignUUID (uuid_);
3332}
3433
35- Status AssignUUID::GenerateRequirements (TableUpdateContext& context) const {
34+ void AssignUUID::GenerateRequirements (TableUpdateContext& context) const {
3635 // AssignUUID does not generate additional requirements.
37- return {};
3836}
3937
4038// UpgradeFormatVersion
@@ -43,8 +41,8 @@ void UpgradeFormatVersion::ApplyTo(TableMetadataBuilder& builder) const {
4341 throw IcebergError (std::format (" {} not implemented" , __FUNCTION__));
4442}
4543
46- Status UpgradeFormatVersion::GenerateRequirements (TableUpdateContext& context) const {
47- return NotImplemented ( " UpgradeFormatVersion::GenerateRequirements not implemented " );
44+ void UpgradeFormatVersion::GenerateRequirements (TableUpdateContext& context) const {
45+ // UpgradeFormatVersion doesn't generate any requirements
4846}
4947
5048// AddSchema
@@ -53,8 +51,8 @@ void AddSchema::ApplyTo(TableMetadataBuilder& builder) const {
5351 throw IcebergError (std::format (" {} not implemented" , __FUNCTION__));
5452}
5553
56- Status AddSchema::GenerateRequirements (TableUpdateContext& context) const {
57- return NotImplemented ( " AddTableSchema::GenerateRequirements not implemented " );
54+ void AddSchema::GenerateRequirements (TableUpdateContext& context) const {
55+ context. RequireLastAssignedFieldIdUnchanged ( );
5856}
5957
6058// SetCurrentSchema
@@ -63,8 +61,8 @@ void SetCurrentSchema::ApplyTo(TableMetadataBuilder& builder) const {
6361 throw IcebergError (std::format (" {} not implemented" , __FUNCTION__));
6462}
6563
66- Status SetCurrentSchema::GenerateRequirements (TableUpdateContext& context) const {
67- return NotImplemented ( " SetCurrentTableSchema::GenerateRequirements not implemented " );
64+ void SetCurrentSchema::GenerateRequirements (TableUpdateContext& context) const {
65+ context. RequireCurrentSchemaIdUnchanged ( );
6866}
6967
7068// AddPartitionSpec
@@ -73,8 +71,8 @@ void AddPartitionSpec::ApplyTo(TableMetadataBuilder& builder) const {
7371 throw IcebergError (std::format (" {} not implemented" , __FUNCTION__));
7472}
7573
76- Status AddPartitionSpec::GenerateRequirements (TableUpdateContext& context) const {
77- return NotImplemented ( " AddTablePartitionSpec::GenerateRequirements not implemented " );
74+ void AddPartitionSpec::GenerateRequirements (TableUpdateContext& context) const {
75+ context. RequireLastAssignedPartitionIdUnchanged ( );
7876}
7977
8078// SetDefaultPartitionSpec
@@ -83,9 +81,8 @@ void SetDefaultPartitionSpec::ApplyTo(TableMetadataBuilder& builder) const {
8381 throw IcebergError (std::format (" {} not implemented" , __FUNCTION__));
8482}
8583
86- Status SetDefaultPartitionSpec::GenerateRequirements (TableUpdateContext& context) const {
87- return NotImplemented (
88- " SetDefaultTablePartitionSpec::GenerateRequirements not implemented" );
84+ void SetDefaultPartitionSpec::GenerateRequirements (TableUpdateContext& context) const {
85+ context.RequireDefaultSpecIdUnchanged ();
8986}
9087
9188// RemovePartitionSpecs
@@ -94,9 +91,9 @@ void RemovePartitionSpecs::ApplyTo(TableMetadataBuilder& builder) const {
9491 throw IcebergError (std::format (" {} not implemented" , __FUNCTION__));
9592}
9693
97- Status RemovePartitionSpecs::GenerateRequirements (TableUpdateContext& context) const {
98- return NotImplemented (
99- " RemoveTablePartitionSpecs::GenerateRequirements not implemented " );
94+ void RemovePartitionSpecs::GenerateRequirements (TableUpdateContext& context) const {
95+ context. RequireDefaultSpecIdUnchanged ();
96+ context. RequireNoBranchesChanged ( );
10097}
10198
10299// RemoveSchemas
@@ -105,8 +102,9 @@ void RemoveSchemas::ApplyTo(TableMetadataBuilder& builder) const {
105102 throw IcebergError (std::format (" {} not implemented" , __FUNCTION__));
106103}
107104
108- Status RemoveSchemas::GenerateRequirements (TableUpdateContext& context) const {
109- return NotImplemented (" RemoveTableSchemas::GenerateRequirements not implemented" );
105+ void RemoveSchemas::GenerateRequirements (TableUpdateContext& context) const {
106+ context.RequireCurrentSchemaIdUnchanged ();
107+ context.RequireNoBranchesChanged ();
110108}
111109
112110// AddSortOrder
@@ -115,9 +113,8 @@ void AddSortOrder::ApplyTo(TableMetadataBuilder& builder) const {
115113 builder.AddSortOrder (sort_order_);
116114}
117115
118- Status AddSortOrder::GenerateRequirements (TableUpdateContext& context) const {
116+ void AddSortOrder::GenerateRequirements (TableUpdateContext& context) const {
119117 // AddSortOrder doesn't generate any requirements
120- return {};
121118}
122119
123120// SetDefaultSortOrder
@@ -126,9 +123,8 @@ void SetDefaultSortOrder::ApplyTo(TableMetadataBuilder& builder) const {
126123 builder.SetDefaultSortOrder (sort_order_id_);
127124}
128125
129- Status SetDefaultSortOrder::GenerateRequirements (TableUpdateContext& context) const {
126+ void SetDefaultSortOrder::GenerateRequirements (TableUpdateContext& context) const {
130127 context.RequireDefaultSortOrderIdUnchanged ();
131- return {};
132128}
133129
134130// AddSnapshot
@@ -137,16 +133,16 @@ void AddSnapshot::ApplyTo(TableMetadataBuilder& builder) const {
137133 throw IcebergError (std::format (" {} not implemented" , __FUNCTION__));
138134}
139135
140- Status AddSnapshot::GenerateRequirements (TableUpdateContext& context) const {
141- return NotImplemented ( " AddTableSnapshot::GenerateRequirements not implemented " );
136+ void AddSnapshot::GenerateRequirements (TableUpdateContext& context) const {
137+ // AddSnapshot doesn't generate any requirements
142138}
143139
144140// RemoveSnapshots
145141
146142void RemoveSnapshots::ApplyTo (TableMetadataBuilder& builder) const {}
147143
148- Status RemoveSnapshots::GenerateRequirements (TableUpdateContext& context) const {
149- return NotImplemented (" RemoveTableSnapshots::GenerateRequirements not implemented" );
144+ void RemoveSnapshots::GenerateRequirements (TableUpdateContext& context) const {
145+ throw NotImplemented (" RemoveTableSnapshots::GenerateRequirements not implemented" );
150146}
151147
152148// RemoveSnapshotRef
@@ -155,8 +151,8 @@ void RemoveSnapshotRef::ApplyTo(TableMetadataBuilder& builder) const {
155151 throw IcebergError (std::format (" {} not implemented" , __FUNCTION__));
156152}
157153
158- Status RemoveSnapshotRef::GenerateRequirements (TableUpdateContext& context) const {
159- return NotImplemented ( " RemoveTableSnapshotRef::GenerateRequirements not implemented " );
154+ void RemoveSnapshotRef::GenerateRequirements (TableUpdateContext& context) const {
155+ // RemoveSnapshotRef doesn't generate any requirements
160156}
161157
162158// SetSnapshotRef
@@ -165,8 +161,8 @@ void SetSnapshotRef::ApplyTo(TableMetadataBuilder& builder) const {
165161 throw IcebergError (std::format (" {} not implemented" , __FUNCTION__));
166162}
167163
168- Status SetSnapshotRef::GenerateRequirements (TableUpdateContext& context) const {
169- return NotImplemented (" SetTableSnapshotRef::GenerateRequirements not implemented" );
164+ void SetSnapshotRef::GenerateRequirements (TableUpdateContext& context) const {
165+ throw NotImplemented (" SetTableSnapshotRef::GenerateRequirements not implemented" );
170166}
171167
172168// SetProperties
@@ -175,8 +171,8 @@ void SetProperties::ApplyTo(TableMetadataBuilder& builder) const {
175171 throw IcebergError (std::format (" {} not implemented" , __FUNCTION__));
176172}
177173
178- Status SetProperties::GenerateRequirements (TableUpdateContext& context) const {
179- return NotImplemented ( " SetTableProperties::GenerateRequirements not implemented " );
174+ void SetProperties::GenerateRequirements (TableUpdateContext& context) const {
175+ // SetProperties doesn't generate any requirements
180176}
181177
182178// RemoveProperties
@@ -185,8 +181,8 @@ void RemoveProperties::ApplyTo(TableMetadataBuilder& builder) const {
185181 throw IcebergError (std::format (" {} not implemented" , __FUNCTION__));
186182}
187183
188- Status RemoveProperties::GenerateRequirements (TableUpdateContext& context) const {
189- return NotImplemented ( " RemoveTableProperties::GenerateRequirements not implemented " );
184+ void RemoveProperties::GenerateRequirements (TableUpdateContext& context) const {
185+ // RemoveProperties doesn't generate any requirements
190186}
191187
192188// SetLocation
@@ -195,8 +191,8 @@ void SetLocation::ApplyTo(TableMetadataBuilder& builder) const {
195191 throw IcebergError (std::format (" {} not implemented" , __FUNCTION__));
196192}
197193
198- Status SetLocation::GenerateRequirements (TableUpdateContext& context) const {
199- return NotImplemented ( " SetTableLocation::GenerateRequirements not implemented " );
194+ void SetLocation::GenerateRequirements (TableUpdateContext& context) const {
195+ // SetLocation doesn't generate any requirements
200196}
201197
202198} // namespace iceberg::table
0 commit comments