This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch gh-pages
in repository https://gitbox.apache.org/repos/asf/iceberg-rust.git


The following commit(s) were added to refs/heads/gh-pages by this push:
     new 7875558e deploy: 52296eb5e1be88a241903488c133214cb5a9a363
7875558e is described below

commit 7875558eafaeff85578dbaf136bbd836e4891b1d
Author: liurenjie1024 <[email protected]>
AuthorDate: Mon Nov 11 12:05:51 2024 +0000

    deploy: 52296eb5e1be88a241903488c133214cb5a9a363
---
 api/iceberg/enum.TableRequirement.html            |  23 +-
 api/iceberg/expr/enum.BoundPredicate.html         |   4 +-
 api/iceberg/expr/struct.Reference.html            |   4 +-
 api/iceberg/spec/enum.DataFileBuilderError.html   |   2 +-
 api/iceberg/spec/enum.DataFileFormat.html         |   4 +-
 api/iceberg/spec/enum.NullOrder.html              |   4 +-
 api/iceberg/spec/enum.SortDirection.html          |   4 +-
 api/iceberg/spec/enum.SortOrderBuilderError.html  |   2 +-
 api/iceberg/spec/enum.Type.html                   |   4 +-
 api/iceberg/spec/enum.ViewFormatVersion.html      |   4 +-
 api/iceberg/spec/struct.Datum.html                |   2 +-
 api/iceberg/spec/struct.NestedField.html          |   4 +-
 api/iceberg/spec/struct.Schema.html               |   6 +-
 api/iceberg/spec/struct.StructType.html           |   4 +-
 api/iceberg/spec/struct.UnboundPartitionSpec.html |   2 +-
 api/iceberg/struct.Error.html                     |   2 +-
 api/iceberg/struct.ViewCreation.html              |   6 +-
 api/search-index.js                               |   2 +-
 api/search.desc/iceberg/iceberg-desc-0-.js        |   2 +-
 api/src/iceberg/catalog/mod.rs.html               | 604 +++++++++++++++++++++-
 api/src/iceberg/transaction.rs.html               |   2 +-
 21 files changed, 642 insertions(+), 49 deletions(-)

diff --git a/api/iceberg/enum.TableRequirement.html 
b/api/iceberg/enum.TableRequirement.html
index 53fe5a9c..ced369b7 100644
--- a/api/iceberg/enum.TableRequirement.html
+++ b/api/iceberg/enum.TableRequirement.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" 
content="TableRequirement represents a requirement for a table in the 
catalog."><title>TableRequirement in iceberg - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf08
 [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" 
content="TableRequirement represents a requirement for a table in the 
catalog."><title>TableRequirement in iceberg - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf08
 [...]
     NotExist,
     UuidMatch {
         uuid: <a class="struct" 
href="https://docs.rs/uuid/1.11.0/uuid/struct.Uuid.html"; title="struct 
uuid::Uuid">Uuid</a>,
@@ -8,16 +8,16 @@
         snapshot_id: <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::option::Option">Option</a>&lt;<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a>&gt;,
     },
     LastAssignedFieldIdMatch {
-        last_assigned_field_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a>,
+        last_assigned_field_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i32.html";>i32</a>,
     },
     CurrentSchemaIdMatch {
-        current_schema_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a>,
+        current_schema_id: <a class="type" href="spec/type.SchemaId.html" 
title="type iceberg::spec::SchemaId">SchemaId</a>,
     },
     LastAssignedPartitionIdMatch {
-        last_assigned_partition_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a>,
+        last_assigned_partition_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i32.html";>i32</a>,
     },
     DefaultSpecIdMatch {
-        default_spec_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a>,
+        default_spec_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i32.html";>i32</a>,
     },
     DefaultSortOrderIdMatch {
         default_sort_order_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a>,
@@ -32,17 +32,20 @@ reference the requirement’s <code>snapshot-id</code>.</p>
 </div></div><div class="sub-variant-field"><span 
id="variant.RefSnapshotIdMatch.field.snapshot_id" class="section-header"><a 
href="#variant.RefSnapshotIdMatch.field.snapshot_id" class="anchor 
field">§</a><code>snapshot_id: <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::option::Option">Option</a>&lt;<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a>&gt;</code></span><div
 class="docblock"><p> [...]
 If the id is <code>None</code>, the ref must not already exist.</p>
 </div></div></div><section id="variant.LastAssignedFieldIdMatch" 
class="variant"><a href="#variant.LastAssignedFieldIdMatch" 
class="anchor">§</a><h3 
class="code-header">LastAssignedFieldIdMatch</h3></section><div 
class="docblock"><p>The table’s last assigned column id must match the 
requirement.</p>
-</div><div class="sub-variant" 
id="variant.LastAssignedFieldIdMatch.fields"><h4>Fields</h4><div 
class="sub-variant-field"><span 
id="variant.LastAssignedFieldIdMatch.field.last_assigned_field_id" 
class="section-header"><a 
href="#variant.LastAssignedFieldIdMatch.field.last_assigned_field_id" 
class="anchor field">§</a><code>last_assigned_field_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a></code></span><div
 class="docblock"><p>The last assig [...]
+</div><div class="sub-variant" 
id="variant.LastAssignedFieldIdMatch.fields"><h4>Fields</h4><div 
class="sub-variant-field"><span 
id="variant.LastAssignedFieldIdMatch.field.last_assigned_field_id" 
class="section-header"><a 
href="#variant.LastAssignedFieldIdMatch.field.last_assigned_field_id" 
class="anchor field">§</a><code>last_assigned_field_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i32.html";>i32</a></code></span><div
 class="docblock"><p>The last assig [...]
 </div></div></div><section id="variant.CurrentSchemaIdMatch" 
class="variant"><a href="#variant.CurrentSchemaIdMatch" class="anchor">§</a><h3 
class="code-header">CurrentSchemaIdMatch</h3></section><div 
class="docblock"><p>The table’s current schema id must match the 
requirement.</p>
-</div><div class="sub-variant" 
id="variant.CurrentSchemaIdMatch.fields"><h4>Fields</h4><div 
class="sub-variant-field"><span 
id="variant.CurrentSchemaIdMatch.field.current_schema_id" 
class="section-header"><a 
href="#variant.CurrentSchemaIdMatch.field.current_schema_id" class="anchor 
field">§</a><code>current_schema_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a></code></span><div
 class="docblock"><p>Current schema id of the table to assert.</p>
+</div><div class="sub-variant" 
id="variant.CurrentSchemaIdMatch.fields"><h4>Fields</h4><div 
class="sub-variant-field"><span 
id="variant.CurrentSchemaIdMatch.field.current_schema_id" 
class="section-header"><a 
href="#variant.CurrentSchemaIdMatch.field.current_schema_id" class="anchor 
field">§</a><code>current_schema_id: <a class="type" 
href="spec/type.SchemaId.html" title="type 
iceberg::spec::SchemaId">SchemaId</a></code></span><div 
class="docblock"><p>Current schema id of the table to ass [...]
 </div></div></div><section id="variant.LastAssignedPartitionIdMatch" 
class="variant"><a href="#variant.LastAssignedPartitionIdMatch" 
class="anchor">§</a><h3 
class="code-header">LastAssignedPartitionIdMatch</h3></section><div 
class="docblock"><p>The table’s last assigned partition id must match the
 requirement.</p>
-</div><div class="sub-variant" 
id="variant.LastAssignedPartitionIdMatch.fields"><h4>Fields</h4><div 
class="sub-variant-field"><span 
id="variant.LastAssignedPartitionIdMatch.field.last_assigned_partition_id" 
class="section-header"><a 
href="#variant.LastAssignedPartitionIdMatch.field.last_assigned_partition_id" 
class="anchor field">§</a><code>last_assigned_partition_id: <a 
class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a></code></span><div
 class="doc [...]
+</div><div class="sub-variant" 
id="variant.LastAssignedPartitionIdMatch.fields"><h4>Fields</h4><div 
class="sub-variant-field"><span 
id="variant.LastAssignedPartitionIdMatch.field.last_assigned_partition_id" 
class="section-header"><a 
href="#variant.LastAssignedPartitionIdMatch.field.last_assigned_partition_id" 
class="anchor field">§</a><code>last_assigned_partition_id: <a 
class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i32.html";>i32</a></code></span><div
 class="doc [...]
 </div></div></div><section id="variant.DefaultSpecIdMatch" class="variant"><a 
href="#variant.DefaultSpecIdMatch" class="anchor">§</a><h3 
class="code-header">DefaultSpecIdMatch</h3></section><div 
class="docblock"><p>The table’s default spec id must match the requirement.</p>
-</div><div class="sub-variant" 
id="variant.DefaultSpecIdMatch.fields"><h4>Fields</h4><div 
class="sub-variant-field"><span 
id="variant.DefaultSpecIdMatch.field.default_spec_id" class="section-header"><a 
href="#variant.DefaultSpecIdMatch.field.default_spec_id" class="anchor 
field">§</a><code>default_spec_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a></code></span><div
 class="docblock"><p>Default spec id of the table to assert.</p>
+</div><div class="sub-variant" 
id="variant.DefaultSpecIdMatch.fields"><h4>Fields</h4><div 
class="sub-variant-field"><span 
id="variant.DefaultSpecIdMatch.field.default_spec_id" class="section-header"><a 
href="#variant.DefaultSpecIdMatch.field.default_spec_id" class="anchor 
field">§</a><code>default_spec_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i32.html";>i32</a></code></span><div
 class="docblock"><p>Default spec id of the table to assert.</p>
 </div></div></div><section id="variant.DefaultSortOrderIdMatch" 
class="variant"><a href="#variant.DefaultSortOrderIdMatch" 
class="anchor">§</a><h3 
class="code-header">DefaultSortOrderIdMatch</h3></section><div 
class="docblock"><p>The table’s default sort order id must match the 
requirement.</p>
 </div><div class="sub-variant" 
id="variant.DefaultSortOrderIdMatch.fields"><h4>Fields</h4><div 
class="sub-variant-field"><span 
id="variant.DefaultSortOrderIdMatch.field.default_sort_order_id" 
class="section-header"><a 
href="#variant.DefaultSortOrderIdMatch.field.default_sort_order_id" 
class="anchor field">§</a><code>default_sort_order_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a></code></span><div
 class="docblock"><p>Default sort order i [...]
-</div></div></div></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Debug-for-TableRequirement" class="impl"><a class="src rightside" 
href="../src/iceberg/catalog/mod.rs.html#287">source</a><a 
href="#impl-Debug-for-TableRequirement" class="anchor">§</a><h3 
class="code-header">impl <a class [...]
+</div></div></div></div><h2 id="implementations" 
class="section-header">Implementations<a href="#implementations" 
class="anchor">§</a></h2><div id="implementations-list"><details class="toggle 
implementors-toggle" open><summary><section id="impl-TableRequirement" 
class="impl"><a class="src rightside" 
href="../src/iceberg/catalog/mod.rs.html#456-588">source</a><a 
href="#impl-TableRequirement" class="anchor">§</a><h3 class="code-header">impl 
<a class="enum" href="enum.TableRequirement.html [...]
+If the requirement is not met, an appropriate error is returned.</p>
+<p>Provide metadata as <code>None</code> if the table does not exist.</p>
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Debug-for-TableRequirement" class="impl"><a class="src rightside" 
href="../src/iceberg/catalog/mod.rs.html#287">source</a><a 
href="#impl-Debug-for-TableRequirement" class="anchor">§</a><h3 
class="code-header" [...]
     __D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Parti [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
 sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section 
id="impl-Serialize-for-TableRequirement" class="impl"><a class="src rightside" 
href="../src/iceberg/catalog/mod.rs.html#287">source</a><a 
href="#impl-Serialize-for-TableRequirement" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html"; title="trai 
[...]
diff --git a/api/iceberg/expr/enum.BoundPredicate.html 
b/api/iceberg/expr/enum.BoundPredicate.html
index a600257b..041c4705 100644
--- a/api/iceberg/expr/enum.BoundPredicate.html
+++ b/api/iceberg/expr/enum.BoundPredicate.html
@@ -16,8 +16,8 @@
 </div><section id="variant.Unary" class="variant"><a href="#variant.Unary" 
class="anchor">§</a><h3 class="code-header">Unary(<a class="struct" 
href="struct.UnaryExpression.html" title="struct 
iceberg::expr::UnaryExpression">UnaryExpression</a>&lt;<a class="struct" 
href="struct.BoundReference.html" title="struct 
iceberg::expr::BoundReference">BoundReference</a>&gt;)</h3></section><div 
class="docblock"><p>Unary expression, for example, <code>a IS NULL</code>.</p>
 </div><section id="variant.Binary" class="variant"><a href="#variant.Binary" 
class="anchor">§</a><h3 class="code-header">Binary(<a class="struct" 
href="struct.BinaryExpression.html" title="struct 
iceberg::expr::BinaryExpression">BinaryExpression</a>&lt;<a class="struct" 
href="struct.BoundReference.html" title="struct 
iceberg::expr::BoundReference">BoundReference</a>&gt;)</h3></section><div 
class="docblock"><p>Binary expression, for example, <code>a &gt; 10</code>.</p>
 </div><section id="variant.Set" class="variant"><a href="#variant.Set" 
class="anchor">§</a><h3 class="code-header">Set(<a class="struct" 
href="struct.SetExpression.html" title="struct 
iceberg::expr::SetExpression">SetExpression</a>&lt;<a class="struct" 
href="struct.BoundReference.html" title="struct 
iceberg::expr::BoundReference">BoundReference</a>&gt;)</h3></section><div 
class="docblock"><p>Set predicates, for example, <code>a IN (1, 2, 
3)</code>.</p>
-</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Clone-for-BoundPredicate" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/expr/predicate.rs.html#676">source</a><a 
href="#impl-Clone-for-BoundPredicate" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" h [...]
-    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
+</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Clone-for-BoundPredicate" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/expr/predicate.rs.html#676">source</a><a 
href="#impl-Clone-for-BoundPredicate" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" h [...]
+    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
 sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section 
id="impl-Serialize-for-BoundPredicate" class="impl"><a class="src rightside" 
href="../../src/iceberg/expr/predicate.rs.html#676">source</a><a 
href="#impl-Serialize-for-BoundPredicate" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html"; title="tr 
[...]
     __S: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serializer.html"; 
title="trait 
serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div 
class='docblock'>Serialize this value into the given Serde serializer. <a 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html#tymethod.serialize";>Read
 more</a></div></details></div></details><section 
id="impl-StructuralPartialEq-for-BoundPredicate" class="impl"><a class="src 
rightside" href=". [...]
diff --git a/api/iceberg/expr/struct.Reference.html 
b/api/iceberg/expr/struct.Reference.html
index 76d097fd..ee1fe729 100644
--- a/api/iceberg/expr/struct.Reference.html
+++ b/api/iceberg/expr/struct.Reference.html
@@ -105,8 +105,8 @@ For example, <code>a</code> in <code>a &gt; 10</code>.</p>
 
 <span class="kw">let </span>as_string = <span 
class="macro">format!</span>(<span class="string">"{expr}"</span>);
 <span class="macro">assert!</span>(<span class="kw-2">&amp;</span>as_string == 
<span class="string">"a NOT IN (5, 6)" </span>|| <span 
class="kw-2">&amp;</span>as_string == <span class="string">"a NOT IN (6, 
5)"</span>);</code></pre></div>
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Bind-for-Reference" class="impl"><a class="src rightside" 
href="../../src/iceberg/expr/term.rs.html#309-339">source</a><a 
href="#impl-Bind-for-Reference" class="anchor">§</a><h3 
class="code-header">impl <a cl [...]
-    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Bind-for-Reference" class="impl"><a class="src rightside" 
href="../../src/iceberg/expr/term.rs.html#309-339">source</a><a 
href="#impl-Bind-for-Reference" class="anchor">§</a><h3 
class="code-header">impl <a cl [...]
+    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
 sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Serialize-for-Reference" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/expr/term.rs.html#37">source</a><a 
href="#impl-Serialize-for-Reference" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html"; 
title="trait serde::ser:: [...]
     __S: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serializer.html"; 
title="trait 
serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div 
class='docblock'>Serialize this value into the given Serde serializer. <a 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html#tymethod.serialize";>Read
 more</a></div></details></div></details><section 
id="impl-StructuralPartialEq-for-Reference" class="impl"><a class="src 
rightside" href="../../ [...]
diff --git a/api/iceberg/spec/enum.DataFileBuilderError.html 
b/api/iceberg/spec/enum.DataFileBuilderError.html
index b267f9a7..232d4e25 100644
--- a/api/iceberg/spec/enum.DataFileBuilderError.html
+++ b/api/iceberg/spec/enum.DataFileBuilderError.html
@@ -4,7 +4,7 @@
 }</code></pre><details class="toggle top-doc" open><summary 
class="hideme"><span>Expand description</span></summary><div 
class="docblock"><p>Error type for DataFileBuilder</p>
 </div></details><h2 id="variants" class="variants section-header">Variants 
(Non-exhaustive)<a href="#variants" class="anchor">§</a></h2><details 
class="toggle non-exhaustive"><summary class="hideme"><span>This enum is marked 
as non-exhaustive</span></summary><div class="docblock">Non-exhaustive enums 
could have additional variants added in future. Therefore, when matching 
against variants of non-exhaustive enums, an extra wildcard arm must be added 
to account for any future variants.</di [...]
 </div><section id="variant.ValidationError" class="variant"><a 
href="#variant.ValidationError" class="anchor">§</a><h3 
class="code-header">ValidationError(<a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a>)</h3></section><div 
class="docblock"><p>Custom validation error</p>
-</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Debug-for-DataFileBuilderError" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/manifest.rs.html#952">source</a><a 
href="#impl-Debug-for-DataFileBuilderError" class="anchor">§</a><h3 
class="code-header">impl <a clas [...]
+</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Debug-for-DataFileBuilderError" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/manifest.rs.html#952">source</a><a 
href="#impl-Debug-for-DataFileBuilderError" class="anchor">§</a><h3 
class="code-header">impl <a clas [...]
     T: 'static + ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.type_id" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141";>source</a><a 
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href 
[...]
     T: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html"; 
title="trait core::error::Error">Error</a> + 
'static,</div></h3></section></summary><div class="impl-items"><details 
class="toggle method-toggle" open><summary><section id="method.as_error_source" 
class="method trait-impl"><a href="#method.as_error_source" 
class="anchor">§</a><h4 class="code-header">fn <a 
class="fn">as_error_source</a>(&amp;self) -&gt; &amp;(dyn <a class="trait" 
href="https://doc [...]
 to benefit from Rust’s automatic dereferencing of method
diff --git a/api/iceberg/spec/enum.DataFileFormat.html 
b/api/iceberg/spec/enum.DataFileFormat.html
index 5978f554..568009c3 100644
--- a/api/iceberg/spec/enum.DataFileFormat.html
+++ b/api/iceberg/spec/enum.DataFileFormat.html
@@ -6,10 +6,10 @@
 </div></details><h2 id="variants" class="variants section-header">Variants<a 
href="#variants" class="anchor">§</a></h2><div class="variants"><section 
id="variant.Avro" class="variant"><a href="#variant.Avro" 
class="anchor">§</a><h3 class="code-header">Avro</h3></section><div 
class="docblock"><p>Avro file format: <a 
href="https://avro.apache.org/";>https://avro.apache.org/</a></p>
 </div><section id="variant.Orc" class="variant"><a href="#variant.Orc" 
class="anchor">§</a><h3 class="code-header">Orc</h3></section><div 
class="docblock"><p>Orc file format: <a 
href="https://orc.apache.org/";>https://orc.apache.org/</a></p>
 </div><section id="variant.Parquet" class="variant"><a href="#variant.Parquet" 
class="anchor">§</a><h3 class="code-header">Parquet</h3></section><div 
class="docblock"><p>Parquet file format: <a 
href="https://parquet.apache.org/";>https://parquet.apache.org/</a></p>
-</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Clone-for-DataFileFormat" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/manifest.rs.html#1184">source</a><a 
href="#impl-Clone-for-DataFileFormat" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" h [...]
+</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Clone-for-DataFileFormat" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/manifest.rs.html#1184">source</a><a 
href="#impl-Clone-for-DataFileFormat" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" h [...]
     Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html"; 
title="trait core::str::traits::FromStr">FromStr</a>,
     &lt;Self as <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html"; 
title="trait core::str::traits::FromStr">FromStr</a>&gt;::<a 
class="associatedtype" 
href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err";
 title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html"; 
title="trait core::fmt::Display">Display</a>,</div></h3></sectio [...]
-    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
+    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
 sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section 
id="impl-Serialize-for-DataFileFormat" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/manifest.rs.html#1184">source</a><a 
href="#impl-Serialize-for-DataFileFormat" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html"; title="tr 
[...]
     Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html"; 
title="trait 
core::fmt::Display">Display</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.serialize" class="method trait-impl"><a class="src rightside" 
href="../../src/iceberg/spec/manifest.rs.html#1184">source</a><a 
href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://docs.rs/ [...]
diff --git a/api/iceberg/spec/enum.NullOrder.html 
b/api/iceberg/spec/enum.NullOrder.html
index f6300e67..1c510cf6 100644
--- a/api/iceberg/spec/enum.NullOrder.html
+++ b/api/iceberg/spec/enum.NullOrder.html
@@ -4,8 +4,8 @@
 }</code></pre><details class="toggle top-doc" open><summary 
class="hideme"><span>Expand description</span></summary><div 
class="docblock"><p>Describes the order of null values when sorted.</p>
 </div></details><h2 id="variants" class="variants section-header">Variants<a 
href="#variants" class="anchor">§</a></h2><div class="variants"><section 
id="variant.First" class="variant"><a href="#variant.First" 
class="anchor">§</a><h3 class="code-header">First</h3></section><div 
class="docblock"><p>Nulls are stored first</p>
 </div><section id="variant.Last" class="variant"><a href="#variant.Last" 
class="anchor">§</a><h3 class="code-header">Last</h3></section><div 
class="docblock"><p>Nulls are stored last</p>
-</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Clone-for-NullOrder" class="impl"><a class="src 
rightside" href="../../src/iceberg/spec/sort.rs.html#55">source</a><a 
href="#impl-Clone-for-NullOrder" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" href="https://doc [...]
-    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
+</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Clone-for-NullOrder" class="impl"><a class="src 
rightside" href="../../src/iceberg/spec/sort.rs.html#55">source</a><a 
href="#impl-Clone-for-NullOrder" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" href="https://doc [...]
+    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
 sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Serialize-for-NullOrder" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/sort.rs.html#55">source</a><a 
href="#impl-Serialize-for-NullOrder" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html"; 
title="trait serde::ser:: [...]
     __S: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serializer.html"; 
title="trait 
serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div 
class='docblock'>Serialize this value into the given Serde serializer. <a 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html#tymethod.serialize";>Read
 more</a></div></details></div></details><section id="impl-Copy-for-NullOrder" 
class="impl"><a class="src rightside" href="../../src/iceberg/spe [...]
diff --git a/api/iceberg/spec/enum.SortDirection.html 
b/api/iceberg/spec/enum.SortDirection.html
index a7bcdcd4..fcb18623 100644
--- a/api/iceberg/spec/enum.SortDirection.html
+++ b/api/iceberg/spec/enum.SortDirection.html
@@ -4,8 +4,8 @@
 }</code></pre><details class="toggle top-doc" open><summary 
class="hideme"><span>Expand description</span></summary><div 
class="docblock"><p>Sort direction in a partition, either ascending or 
descending</p>
 </div></details><h2 id="variants" class="variants section-header">Variants<a 
href="#variants" class="anchor">§</a></h2><div class="variants"><section 
id="variant.Ascending" class="variant"><a href="#variant.Ascending" 
class="anchor">§</a><h3 class="code-header">Ascending</h3></section><div 
class="docblock"><p>Ascending</p>
 </div><section id="variant.Descending" class="variant"><a 
href="#variant.Descending" class="anchor">§</a><h3 
class="code-header">Descending</h3></section><div 
class="docblock"><p>Descending</p>
-</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Clone-for-SortDirection" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/sort.rs.html#35">source</a><a 
href="#impl-Clone-for-SortDirection" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" href="htt [...]
-    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
+</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Clone-for-SortDirection" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/sort.rs.html#35">source</a><a 
href="#impl-Clone-for-SortDirection" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" href="htt [...]
+    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
 sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section 
id="impl-Serialize-for-SortDirection" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/sort.rs.html#35">source</a><a 
href="#impl-Serialize-for-SortDirection" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html"; 
title="trait serd [...]
     __S: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serializer.html"; 
title="trait 
serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div 
class='docblock'>Serialize this value into the given Serde serializer. <a 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html#tymethod.serialize";>Read
 more</a></div></details></div></details><section 
id="impl-Copy-for-SortDirection" class="impl"><a class="src rightside" 
href="../../src/iceberg [...]
diff --git a/api/iceberg/spec/enum.SortOrderBuilderError.html 
b/api/iceberg/spec/enum.SortOrderBuilderError.html
index b05178d2..3e5da4d0 100644
--- a/api/iceberg/spec/enum.SortOrderBuilderError.html
+++ b/api/iceberg/spec/enum.SortOrderBuilderError.html
@@ -4,7 +4,7 @@
 }</code></pre><details class="toggle top-doc" open><summary 
class="hideme"><span>Expand description</span></summary><div 
class="docblock"><p>Error type for SortOrderBuilder</p>
 </div></details><h2 id="variants" class="variants section-header">Variants 
(Non-exhaustive)<a href="#variants" class="anchor">§</a></h2><details 
class="toggle non-exhaustive"><summary class="hideme"><span>This enum is marked 
as non-exhaustive</span></summary><div class="docblock">Non-exhaustive enums 
could have additional variants added in future. Therefore, when matching 
against variants of non-exhaustive enums, an extra wildcard arm must be added 
to account for any future variants.</di [...]
 </div><section id="variant.ValidationError" class="variant"><a 
href="#variant.ValidationError" class="anchor">§</a><h3 
class="code-header">ValidationError(<a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a>)</h3></section><div 
class="docblock"><p>Custom validation error</p>
-</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Debug-for-SortOrderBuilderError" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/sort.rs.html#99">source</a><a 
href="#impl-Debug-for-SortOrderBuilderError" class="anchor">§</a><h3 
class="code-header">impl <a class=" [...]
+</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Debug-for-SortOrderBuilderError" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/sort.rs.html#99">source</a><a 
href="#impl-Debug-for-SortOrderBuilderError" class="anchor">§</a><h3 
class="code-header">impl <a class=" [...]
     T: 'static + ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.type_id" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141";>source</a><a 
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href 
[...]
     T: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html"; 
title="trait core::error::Error">Error</a> + 
'static,</div></h3></section></summary><div class="impl-items"><details 
class="toggle method-toggle" open><summary><section id="method.as_error_source" 
class="method trait-impl"><a href="#method.as_error_source" 
class="anchor">§</a><h4 class="code-header">fn <a 
class="fn">as_error_source</a>(&amp;self) -&gt; &amp;(dyn <a class="trait" 
href="https://doc [...]
 to benefit from Rust’s automatic dereferencing of method
diff --git a/api/iceberg/spec/enum.Type.html b/api/iceberg/spec/enum.Type.html
index 73a7ee63..c28c1aad 100644
--- a/api/iceberg/spec/enum.Type.html
+++ b/api/iceberg/spec/enum.Type.html
@@ -17,8 +17,8 @@
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.decimal_required_bytes" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#153-156">source</a><h4 
class="code-header">pub fn <a href="#method.decimal_required_bytes" 
class="fn">decimal_required_bytes</a>(precision: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.u32.html";>u32</a>) -&gt; 
<a class="type" href="../type.Result.html" title="typ [...]
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.decimal" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#160-163">source</a><h4 
class="code-header">pub fn <a href="#method.decimal" 
class="fn">decimal</a>(precision: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.u32.html";>u32</a>, scale: 
<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.u32.html";>u32</a>) -&g 
[...]
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.is_floating_type" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#167-172">source</a><h4 
class="code-header">pub fn <a href="#method.is_floating_type" 
class="fn">is_floating_type</a>(&amp;self) -&gt; <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.bool.html";>bool</a></h4></section></summary><div
 class="docblock"><p>Check if it’s float o [...]
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-Type" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#80">source</a><a 
href="#impl-Clone-for-Type" class="anchor">§</a><h3 class="code-header">impl <a 
class="tra [...]
-    D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Display [...]
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-Type" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#80">source</a><a 
href="#impl-Clone-for-Type" class="anchor">§</a><h3 class="code-header">impl <a 
class="tra [...]
+    D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Display [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
 sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Serialize-for-Type" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#267-273">source</a><a 
href="#impl-Serialize-for-Type" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html"; 
title="trait serde::ser:: [...]
     S: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serializer.html"; 
title="trait 
serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div 
class='docblock'>Serialize this value into the given Serde serializer. <a 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html#tymethod.serialize";>Read
 more</a></div></details></div></details><section id="impl-Eq-for-Type" 
class="impl"><a class="src rightside" href="../../src/iceberg/spec/datatyp [...]
diff --git a/api/iceberg/spec/enum.ViewFormatVersion.html 
b/api/iceberg/spec/enum.ViewFormatVersion.html
index e5447404..73526b64 100644
--- a/api/iceberg/spec/enum.ViewFormatVersion.html
+++ b/api/iceberg/spec/enum.ViewFormatVersion.html
@@ -2,8 +2,8 @@
     V1 = 1,
 }</code></pre><details class="toggle top-doc" open><summary 
class="hideme"><span>Expand description</span></summary><div 
class="docblock"><p>Iceberg format version</p>
 </div></details><h2 id="variants" class="variants section-header">Variants<a 
href="#variants" class="anchor">§</a></h2><div class="variants"><section 
id="variant.V1" class="variant"><a href="#variant.V1" class="anchor">§</a><h3 
class="code-header">V1 = 1</h3></section><div class="docblock"><p>Iceberg view 
spec version 1</p>
-</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Clone-for-ViewFormatVersion" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/view_metadata.rs.html#397">source</a><a 
href="#impl-Clone-for-ViewFormatVersion" class="anchor">§</a><h3 
class="code-header">impl <a class [...]
-    D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Display [...]
+</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Clone-for-ViewFormatVersion" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/view_metadata.rs.html#397">source</a><a 
href="#impl-Clone-for-ViewFormatVersion" class="anchor">§</a><h3 
class="code-header">impl <a class [...]
+    D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Display [...]
     Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div 
class='docblock'>Compares and returns the maximum of two values. <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max";>Read
 more</a></div></details><details class="toggle method-toggle" 
open><summary><section id="method.min" class="method trait-impl"><span 
class="rightside"><span class="si [...]
     Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div 
class='docblock'>Compares and returns the minimum of two values. <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min";>Read
 more</a></div></details><details class="toggle method-toggle" 
open><summary><section id="method.clamp" class="method trait-impl"><span 
class="rightside"><span class=" [...]
     Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a> + <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html"; 
title="trait 
core::cmp::PartialOrd">PartialOrd</a>,</div></h4></section></summary><div 
class='docblock'>Restrict a value to a certain interval. <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp";>Read
 more</a></div></details></div> [...]
diff --git a/api/iceberg/spec/struct.Datum.html 
b/api/iceberg/spec/struct.Datum.html
index b7f227e5..aa1e8425 100644
--- a/api/iceberg/spec/struct.Datum.html
+++ b/api/iceberg/spec/struct.Datum.html
@@ -265,7 +265,7 @@ Example:</p>
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.data_type" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1049-1051">source</a><h4 
class="code-header">pub fn <a href="#method.data_type" 
class="fn">data_type</a>(&amp;self) -&gt; &amp;<a class="enum" 
href="enum.PrimitiveType.html" title="enum 
iceberg::spec::PrimitiveType">PrimitiveType</a></h4></section></summary><div 
class="docblock"><p>Get the primitive type fro [...]
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.is_nan" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1055-1061">source</a><h4 
class="code-header">pub fn <a href="#method.is_nan" 
class="fn">is_nan</a>(&amp;self) -&gt; <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.bool.html";>bool</a></h4></section></summary><div
 class="docblock"><p>Returns true if the Literal represents a primitive type
 that can be a NaN, and that it’s value is NaN</p>
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-Datum" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#96">source</a><a 
href="#impl-Clone-for-Datum" class="anchor">§</a><h3 class="code-header">impl 
<a class="trai [...]
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-Datum" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#96">source</a><a 
href="#impl-Clone-for-Datum" class="anchor">§</a><h3 class="code-header">impl 
<a class="trai [...]
     H: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"; 
title="trait core::hash::Hasher">Hasher</a>,
     Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div 
class='docblock'>Feeds a slice of this type into the given <a 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"; 
title="trait core::hash::Hasher"><code>Hasher</code></a>. <a 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice";>Read
 more</a></div></details></div></d [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
diff --git a/api/iceberg/spec/struct.NestedField.html 
b/api/iceberg/spec/struct.NestedField.html
index d78c00af..164a27bc 100644
--- a/api/iceberg/spec/struct.NestedField.html
+++ b/api/iceberg/spec/struct.NestedField.html
@@ -30,8 +30,8 @@ Fields may have an optional comment or doc string. Fields can 
have default value
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.with_doc" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#655-658">source</a><h4 
class="code-header">pub fn <a href="#method.with_doc" 
class="fn">with_doc</a>(self, doc: impl <a class="trait" 
href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html"; 
title="trait alloc::string::ToString">ToString</a>) -&gt; 
Self</h4></section></summary><div class=" [...]
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.with_initial_default" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#661-664">source</a><h4 
class="code-header">pub fn <a href="#method.with_initial_default" 
class="fn">with_initial_default</a>(self, value: <a class="enum" 
href="enum.Literal.html" title="enum iceberg::spec::Literal">Literal</a>) -&gt; 
Self</h4></section></summary><div class="docblock"><p>Set the [...]
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.with_write_default" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#667-670">source</a><h4 
class="code-header">pub fn <a href="#method.with_write_default" 
class="fn">with_write_default</a>(self, value: <a class="enum" 
href="enum.Literal.html" title="enum iceberg::spec::Literal">Literal</a>) -&gt; 
Self</h4></section></summary><div class="docblock"><p>Set the field [...]
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-NestedField" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#512">source</a><a 
href="#impl-Clone-for-NestedField" class="anchor">§</a><h3 
class="code-header">imp [...]
-    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-NestedField" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#512">source</a><a 
href="#impl-Clone-for-NestedField" class="anchor">§</a><h3 
class="code-header">imp [...]
+    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
 sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Serialize-for-NestedField" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#512">source</a><a 
href="#impl-Serialize-for-NestedField" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html"; 
title="trait se [...]
     __S: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serializer.html"; 
title="trait 
serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div 
class='docblock'>Serialize this value into the given Serde serializer. <a 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html#tymethod.serialize";>Read
 more</a></div></details></div></details><section id="impl-Eq-for-NestedField" 
class="impl"><a class="src rightside" href="../../src/iceberg/spe [...]
diff --git a/api/iceberg/spec/struct.Schema.html 
b/api/iceberg/spec/struct.Schema.html
index 3250e0b0..c156e5c2 100644
--- a/api/iceberg/spec/struct.Schema.html
+++ b/api/iceberg/spec/struct.Schema.html
@@ -17,11 +17,11 @@
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.field_id_by_name" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/schema.rs.html#366-368">source</a><h4 
class="code-header">pub fn <a href="#method.field_id_by_name" 
class="fn">field_id_by_name</a>(&amp;self, name: &amp;<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.str.html";>str</a>) -&gt; 
<a class="enum" href="https://doc.rust-lang.org/nightly/core/op [...]
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.name_by_field_id" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/schema.rs.html#371-373">source</a><h4 
class="code-header">pub fn <a href="#method.name_by_field_id" 
class="fn">name_by_field_id</a>(&amp;self, field_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i32.html";>i32</a>) -&gt; 
<a class="enum" href="https://doc.rust-lang.org/nightly/core/opt [...]
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.accessor_by_field_id" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/schema.rs.html#376-378">source</a><h4 
class="code-header">pub fn <a href="#method.accessor_by_field_id" 
class="fn">accessor_by_field_id</a>(&amp;self, field_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i32.html";>i32</a>) -&gt; 
<a class="enum" href="https://doc.rust-lang.org/nigh [...]
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-Schema" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/schema.rs.html#45">source</a><a 
href="#impl-Clone-for-Schema" class="anchor">§</a><h3 class="code-header">impl 
<a class="tr [...]
-    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-Schema" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/schema.rs.html#45">source</a><a 
href="#impl-Clone-for-Schema" class="anchor">§</a><h3 class="code-header">impl 
<a class="tr [...]
+    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
 sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Serialize-for-Schema" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/schema.rs.html#45">source</a><a 
href="#impl-Serialize-for-Schema" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html"; 
title="trait serde::ser::Seri [...]
-    __S: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serializer.html"; 
title="trait 
serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div 
class='docblock'>Serialize this value into the given Serde serializer. <a 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html#tymethod.serialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section 
id="impl-TryFrom%3C%26Schema%3E-for- [...]
+    __S: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serializer.html"; 
title="trait 
serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div 
class='docblock'>Serialize this value into the given Serde serializer. <a 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html#tymethod.serialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section 
id="impl-TryFrom%3C%26Schema%3E-for- [...]
     T: 'static + ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.type_id" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141";>source</a><a 
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href 
[...]
     T: ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.borrow" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210";>source</a><a
 href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a 
href="https:/ [...]
     T: ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.borrow_mut" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217";>source</a><a
 href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a 
href= [...]
diff --git a/api/iceberg/spec/struct.StructType.html 
b/api/iceberg/spec/struct.StructType.html
index 16fb1834..13809887 100644
--- a/api/iceberg/spec/struct.StructType.html
+++ b/api/iceberg/spec/struct.StructType.html
@@ -3,8 +3,8 @@
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.field_by_id" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#448-450">source</a><h4 
class="code-header">pub fn <a href="#method.field_by_id" 
class="fn">field_by_id</a>(&amp;self, id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i32.html";>i32</a>) -&gt; 
<a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.ht [...]
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.field_by_name" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#462-464">source</a><h4 
class="code-header">pub fn <a href="#method.field_by_name" 
class="fn">field_by_name</a>(&amp;self, name: &amp;<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.str.html";>str</a>) -&gt; 
<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/e [...]
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.fields" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#481-483">source</a><h4 
class="code-header">pub fn <a href="#method.fields" 
class="fn">fields</a>(&amp;self) -&gt; &amp;[<a class="type" 
href="type.NestedFieldRef.html" title="type 
iceberg::spec::NestedFieldRef">NestedFieldRef</a>]</h4></section></summary><div 
class="docblock"><p>Get fields.</p>
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-StructType" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#380">source</a><a 
href="#impl-Clone-for-StructType" class="anchor">§</a><h3 
class="code-header">impl  [...]
-    D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Display [...]
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-StructType" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#380">source</a><a 
href="#impl-Clone-for-StructType" class="anchor">§</a><h3 
class="code-header">impl  [...]
+    D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Display [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
 sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Serialize-for-StructType" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#380">source</a><a 
href="#impl-Serialize-for-StructType" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html"; 
title="trait serd [...]
     __S: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serializer.html"; 
title="trait 
serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div 
class='docblock'>Serialize this value into the given Serde serializer. <a 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html#tymethod.serialize";>Read
 more</a></div></details></div></details><section id="impl-Eq-for-StructType" 
class="impl"><a class="src rightside" href="../../src/iceberg/spec [...]
diff --git a/api/iceberg/spec/struct.UnboundPartitionSpec.html 
b/api/iceberg/spec/struct.UnboundPartitionSpec.html
index 7f55d7c2..ceb84d77 100644
--- a/api/iceberg/spec/struct.UnboundPartitionSpec.html
+++ b/api/iceberg/spec/struct.UnboundPartitionSpec.html
@@ -5,7 +5,7 @@
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.fields" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/partition.rs.html#267-269">source</a><h4 
class="code-header">pub fn <a href="#method.fields" 
class="fn">fields</a>(&amp;self) -&gt; &amp;[<a class="struct" 
href="struct.UnboundPartitionField.html" title="struct 
iceberg::spec::UnboundPartitionField">UnboundPartitionField</a>]</h4></section></summary><div
 class="docblock"><p>Fi [...]
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.with_spec_id" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/partition.rs.html#272-277">source</a><h4 
class="code-header">pub fn <a href="#method.with_spec_id" 
class="fn">with_spec_id</a>(self, spec_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i32.html";>i32</a>) -&gt; 
Self</h4></section></summary><div class="docblock"><p>Change the spec id of the 
[...]
 </div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-UnboundPartitionSpec" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/partition.rs.html#241">source</a><a 
href="#impl-Clone-for-UnboundPartitionSpec" class="anchor">§</a><h3 class [...]
-    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-From% [...]
+    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.214/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-From% [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
 sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section 
id="impl-Serialize-for-UnboundPartitionSpec" class="impl"><a class="src 
rightside" href="../../src/iceberg/spec/partition.rs.html#241">source</a><a 
href="#impl-Serialize-for-UnboundPartitionSpec" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.htm [...]
     __S: <a class="trait" 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serializer.html"; 
title="trait 
serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div 
class='docblock'>Serialize this value into the given Serde serializer. <a 
href="https://docs.rs/serde/1.0.214/serde/ser/trait.Serialize.html#tymethod.serialize";>Read
 more</a></div></details></div></details><section 
id="impl-Eq-for-UnboundPartitionSpec" class="impl"><a class="src rightside" 
href="../../src/ic [...]
diff --git a/api/iceberg/struct.Error.html b/api/iceberg/struct.Error.html
index c924db3a..4ccbe401 100644
--- a/api/iceberg/struct.Error.html
+++ b/api/iceberg/struct.Error.html
@@ -35,7 +35,7 @@ Backtrace:
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.kind" class="method"><a class="src rightside" 
href="../src/iceberg/error.rs.html#241-243">source</a><h4 
class="code-header">pub fn <a href="#method.kind" 
class="fn">kind</a>(&amp;self) -&gt; <a class="enum" href="enum.ErrorKind.html" 
title="enum iceberg::ErrorKind">ErrorKind</a></h4></section></summary><div 
class="docblock"><p>Return error’s kind.</p>
 <p>Users can use this method to check error’s kind and take actions.</p>
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.message" class="method"><a class="src rightside" 
href="../src/iceberg/error.rs.html#247-249">source</a><h4 
class="code-header">pub fn <a href="#method.message" 
class="fn">message</a>(&amp;self) -&gt; &amp;<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.str.html";>str</a></h4></section></summary><div
 class="docblock"><p>Return error’s message.</p>
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Debug-for-Error" class="impl"><a class="src rightside" 
href="../src/iceberg/error.rs.html#148-187">source</a><a 
href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl 
<a class="trait" h [...]
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Debug-for-Error" class="impl"><a class="src rightside" 
href="../src/iceberg/error.rs.html#148-187">source</a><a 
href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl 
<a class="trait" h [...]
     T: 'static + ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.type_id" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141";>source</a><a 
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href 
[...]
     T: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html"; 
title="trait core::error::Error">Error</a> + 
'static,</div></h3></section></summary><div class="impl-items"><details 
class="toggle method-toggle" open><summary><section id="method.as_error_source" 
class="method trait-impl"><a href="#method.as_error_source" 
class="anchor">§</a><h4 class="code-header">fn <a 
class="fn">as_error_source</a>(&amp;self) -&gt; &amp;(dyn <a class="trait" 
href="https://doc [...]
 to benefit from Rust’s automatic dereferencing of method
diff --git a/api/iceberg/struct.ViewCreation.html 
b/api/iceberg/struct.ViewCreation.html
index 24c87b62..1a56b370 100644
--- a/api/iceberg/struct.ViewCreation.html
+++ b/api/iceberg/struct.ViewCreation.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" 
content="ViewCreation represents the creation of a view in the 
catalog."><title>ViewCreation in iceberg - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2
 [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" 
content="ViewCreation represents the creation of a view in the 
catalog."><title>ViewCreation in iceberg - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2
 [...]
     pub name: <a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a>,
     pub location: <a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a>,
     pub representations: <a class="struct" 
href="spec/struct.ViewRepresentations.html" title="struct 
iceberg::spec::ViewRepresentations">ViewRepresentations</a>,
@@ -17,10 +17,10 @@
 </div><span id="structfield.default_catalog" class="structfield 
section-header"><a href="#structfield.default_catalog" class="anchor 
field">§</a><code>default_catalog: <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::option::Option">Option</a>&lt;<a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a>&gt;</code></span><div 
class="docblock"><p>Default c [...]
 </div><span id="structfield.summary" class="structfield section-header"><a 
href="#structfield.summary" class="anchor field">§</a><code>summary: <a 
class="struct" 
href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html";
 title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a 
class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a>, <a class="struct" 
href="https://doc.r [...]
 Typical keys are “engine-name” and “engine-version”</p>
-</div><h2 id="implementations" class="section-header">Implementations<a 
href="#implementations" class="anchor">§</a></h2><div 
id="implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-ViewCreation" class="impl"><a class="src 
rightside" href="../src/iceberg/catalog/mod.rs.html#516">source</a><a 
href="#impl-ViewCreation" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.ViewCreation.html" title="struct iceberg::ViewC 
[...]
+</div><h2 id="implementations" class="section-header">Implementations<a 
href="#implementations" class="anchor">§</a></h2><div 
id="implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-ViewCreation" class="impl"><a class="src 
rightside" href="../src/iceberg/catalog/mod.rs.html#650">source</a><a 
href="#impl-ViewCreation" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.ViewCreation.html" title="struct iceberg::ViewC 
[...]
 On the builder, call <code>.name(...)</code>, <code>.location(...)</code>, 
<code>.representations(...)</code>, <code>.schema(...)</code>, 
<code>.properties(...)</code>(optional), <code>.default_namespace(...)</code>, 
<code>.default_catalog(...)</code>(optional), 
<code>.summary(...)</code>(optional) to set the values of the fields.
 Finally, call <code>.build()</code> to create the instance of 
<code>ViewCreation</code>.</p>
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Debug-for-ViewCreation" class="impl"><a class="src rightside" 
href="../src/iceberg/catalog/mod.rs.html#516">source</a><a 
href="#impl-Debug-for-ViewCreation" class="anchor">§</a><h3 
class="code-header">impl <a [...]
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Debug-for-ViewCreation" class="impl"><a class="src rightside" 
href="../src/iceberg/catalog/mod.rs.html#650">source</a><a 
href="#impl-Debug-for-ViewCreation" class="anchor">§</a><h3 
class="code-header">impl <a [...]
     T: 'static + ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.type_id" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141";>source</a><a 
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href 
[...]
     T: ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.borrow" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210";>source</a><a
 href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a 
href="https:/ [...]
     T: ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.borrow_mut" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217";>source</a><a
 href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a 
href= [...]
diff --git a/api/search-index.js b/api/search-index.js
index 3005f9e6..36fe4b76 100644
--- a/api/search-index.js
+++ b/api/search-index.js
@@ -1,5 +1,5 @@
 var searchIndex = new Map(JSON.parse('[\
-["iceberg",{"t":"PPPPPKPPPPPFGPPPFFPPPPPPIPPPPPPFFFGGPPPFNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMQNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNCNMMMOONNNOOONOMNNNNNNONOOMOCOONNNNONCOCMNNNNNNNNNNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNCOOOOOOOOOOOOOOOOOOOOOOOOOFFKRRNNNNNNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNMMMNMHMNNNNNNNHNNNNNNPPPPPPPPFKRGFIPPPPPPPPFPPPPPPPPPGGFPPFPIPPFNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
 [...]
+["iceberg",{"t":"PPPPPKPPPPPFGPPPFFPPPPPPIPPPPPPFFFGGPPPFNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMQNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNCNMMMOONNNOOONOMNNNNNNONOOMOCOONNNNONCOCMNNNNNNNNNNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNCOOOOOOOOOOOOOOOOOOOOOOOOOFFKRRNNNNNNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNMMMNMHMNNNNNNNHNNNNNNPPPPPPPPFKRGFIPPPPPPPPFPPPPPPPPPGGFPPFPIPPFNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
 [...]
 
["iceberg_catalog_glue",{"t":"SSSSSFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQ","n":["AWS_ACCESS_KEY_ID","AWS_PROFILE_NAME","AWS_REGION_NAME","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","GlueCatalog","GlueCatalogConfig","borrow","borrow","borrow_mut","borrow_mut","builder","create_namespace","create_table","deref","deref","deref_mut","deref_mut","drop","drop","drop_namespace","drop_table","file_io","fmt","fmt","from","from","get_namespace","init","init","into","into","into_shared","i
 [...]
 
["iceberg_catalog_hms",{"t":"PPFFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Buffered","Framed","HmsCatalog","HmsCatalogConfig","HmsThriftTransport","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","builder","create_namespace","create_table","default","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop_namespace","drop_table","file_io","fmt","fmt","fmt","from","from","from","get_namespace","init","init","init","into
 [...]
 
["iceberg_catalog_memory",{"t":"FNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["MemoryCatalog","borrow","borrow_mut","create_namespace","create_table","deref","deref_mut","drop","drop_namespace","drop_table","fmt","from","get_namespace","init","into","list_namespaces","list_tables","load_table","namespace_exists","new","rename_table","table_exists","try_from","try_into","type_id","update_namespace","update_table","vzip"],"q":[[0,"iceberg_catalog_memory"],[28,"iceberg_catalog_memory::catalog"],[29,"i
 [...]
diff --git a/api/search.desc/iceberg/iceberg-desc-0-.js 
b/api/search.desc/iceberg/iceberg-desc-0-.js
index 56860152..d5fd0428 100644
--- a/api/search.desc/iceberg/iceberg-desc-0-.js
+++ b/api/search.desc/iceberg/iceberg-desc-0-.js
@@ -1 +1 @@
-searchState.loadedDescShard("iceberg", 0, "Apache Iceberg Official Native Rust 
Implementation\nAdd a new schema to the table\nAdd snapshot to table.\nAdd sort 
order to table.\nAdd a new partition spec to the table\nAssign a new UUID to 
the table\nThe catalog API for Iceberg Rust.\nThe table’s current schema id 
must match the requirement.\nIceberg data is invalid.\nThe table’s default sort 
order id must match the …\nThe table’s default spec id must match the 
requirement.\nContains the err [...]
\ No newline at end of file
+searchState.loadedDescShard("iceberg", 0, "Apache Iceberg Official Native Rust 
Implementation\nAdd a new schema to the table\nAdd snapshot to table.\nAdd sort 
order to table.\nAdd a new partition spec to the table\nAssign a new UUID to 
the table\nThe catalog API for Iceberg Rust.\nThe table’s current schema id 
must match the requirement.\nIceberg data is invalid.\nThe table’s default sort 
order id must match the …\nThe table’s default spec id must match the 
requirement.\nContains the err [...]
\ No newline at end of file
diff --git a/api/src/iceberg/catalog/mod.rs.html 
b/api/src/iceberg/catalog/mod.rs.html
index 3793ec48..24dca87b 100644
--- a/api/src/iceberg/catalog/mod.rs.html
+++ b/api/src/iceberg/catalog/mod.rs.html
@@ -1234,6 +1234,301 @@
 <a href="#1234" id="1234">1234</a>
 <a href="#1235" id="1235">1235</a>
 <a href="#1236" id="1236">1236</a>
+<a href="#1237" id="1237">1237</a>
+<a href="#1238" id="1238">1238</a>
+<a href="#1239" id="1239">1239</a>
+<a href="#1240" id="1240">1240</a>
+<a href="#1241" id="1241">1241</a>
+<a href="#1242" id="1242">1242</a>
+<a href="#1243" id="1243">1243</a>
+<a href="#1244" id="1244">1244</a>
+<a href="#1245" id="1245">1245</a>
+<a href="#1246" id="1246">1246</a>
+<a href="#1247" id="1247">1247</a>
+<a href="#1248" id="1248">1248</a>
+<a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</a>
+<a href="#1259" id="1259">1259</a>
+<a href="#1260" id="1260">1260</a>
+<a href="#1261" id="1261">1261</a>
+<a href="#1262" id="1262">1262</a>
+<a href="#1263" id="1263">1263</a>
+<a href="#1264" id="1264">1264</a>
+<a href="#1265" id="1265">1265</a>
+<a href="#1266" id="1266">1266</a>
+<a href="#1267" id="1267">1267</a>
+<a href="#1268" id="1268">1268</a>
+<a href="#1269" id="1269">1269</a>
+<a href="#1270" id="1270">1270</a>
+<a href="#1271" id="1271">1271</a>
+<a href="#1272" id="1272">1272</a>
+<a href="#1273" id="1273">1273</a>
+<a href="#1274" id="1274">1274</a>
+<a href="#1275" id="1275">1275</a>
+<a href="#1276" id="1276">1276</a>
+<a href="#1277" id="1277">1277</a>
+<a href="#1278" id="1278">1278</a>
+<a href="#1279" id="1279">1279</a>
+<a href="#1280" id="1280">1280</a>
+<a href="#1281" id="1281">1281</a>
+<a href="#1282" id="1282">1282</a>
+<a href="#1283" id="1283">1283</a>
+<a href="#1284" id="1284">1284</a>
+<a href="#1285" id="1285">1285</a>
+<a href="#1286" id="1286">1286</a>
+<a href="#1287" id="1287">1287</a>
+<a href="#1288" id="1288">1288</a>
+<a href="#1289" id="1289">1289</a>
+<a href="#1290" id="1290">1290</a>
+<a href="#1291" id="1291">1291</a>
+<a href="#1292" id="1292">1292</a>
+<a href="#1293" id="1293">1293</a>
+<a href="#1294" id="1294">1294</a>
+<a href="#1295" id="1295">1295</a>
+<a href="#1296" id="1296">1296</a>
+<a href="#1297" id="1297">1297</a>
+<a href="#1298" id="1298">1298</a>
+<a href="#1299" id="1299">1299</a>
+<a href="#1300" id="1300">1300</a>
+<a href="#1301" id="1301">1301</a>
+<a href="#1302" id="1302">1302</a>
+<a href="#1303" id="1303">1303</a>
+<a href="#1304" id="1304">1304</a>
+<a href="#1305" id="1305">1305</a>
+<a href="#1306" id="1306">1306</a>
+<a href="#1307" id="1307">1307</a>
+<a href="#1308" id="1308">1308</a>
+<a href="#1309" id="1309">1309</a>
+<a href="#1310" id="1310">1310</a>
+<a href="#1311" id="1311">1311</a>
+<a href="#1312" id="1312">1312</a>
+<a href="#1313" id="1313">1313</a>
+<a href="#1314" id="1314">1314</a>
+<a href="#1315" id="1315">1315</a>
+<a href="#1316" id="1316">1316</a>
+<a href="#1317" id="1317">1317</a>
+<a href="#1318" id="1318">1318</a>
+<a href="#1319" id="1319">1319</a>
+<a href="#1320" id="1320">1320</a>
+<a href="#1321" id="1321">1321</a>
+<a href="#1322" id="1322">1322</a>
+<a href="#1323" id="1323">1323</a>
+<a href="#1324" id="1324">1324</a>
+<a href="#1325" id="1325">1325</a>
+<a href="#1326" id="1326">1326</a>
+<a href="#1327" id="1327">1327</a>
+<a href="#1328" id="1328">1328</a>
+<a href="#1329" id="1329">1329</a>
+<a href="#1330" id="1330">1330</a>
+<a href="#1331" id="1331">1331</a>
+<a href="#1332" id="1332">1332</a>
+<a href="#1333" id="1333">1333</a>
+<a href="#1334" id="1334">1334</a>
+<a href="#1335" id="1335">1335</a>
+<a href="#1336" id="1336">1336</a>
+<a href="#1337" id="1337">1337</a>
+<a href="#1338" id="1338">1338</a>
+<a href="#1339" id="1339">1339</a>
+<a href="#1340" id="1340">1340</a>
+<a href="#1341" id="1341">1341</a>
+<a href="#1342" id="1342">1342</a>
+<a href="#1343" id="1343">1343</a>
+<a href="#1344" id="1344">1344</a>
+<a href="#1345" id="1345">1345</a>
+<a href="#1346" id="1346">1346</a>
+<a href="#1347" id="1347">1347</a>
+<a href="#1348" id="1348">1348</a>
+<a href="#1349" id="1349">1349</a>
+<a href="#1350" id="1350">1350</a>
+<a href="#1351" id="1351">1351</a>
+<a href="#1352" id="1352">1352</a>
+<a href="#1353" id="1353">1353</a>
+<a href="#1354" id="1354">1354</a>
+<a href="#1355" id="1355">1355</a>
+<a href="#1356" id="1356">1356</a>
+<a href="#1357" id="1357">1357</a>
+<a href="#1358" id="1358">1358</a>
+<a href="#1359" id="1359">1359</a>
+<a href="#1360" id="1360">1360</a>
+<a href="#1361" id="1361">1361</a>
+<a href="#1362" id="1362">1362</a>
+<a href="#1363" id="1363">1363</a>
+<a href="#1364" id="1364">1364</a>
+<a href="#1365" id="1365">1365</a>
+<a href="#1366" id="1366">1366</a>
+<a href="#1367" id="1367">1367</a>
+<a href="#1368" id="1368">1368</a>
+<a href="#1369" id="1369">1369</a>
+<a href="#1370" id="1370">1370</a>
+<a href="#1371" id="1371">1371</a>
+<a href="#1372" id="1372">1372</a>
+<a href="#1373" id="1373">1373</a>
+<a href="#1374" id="1374">1374</a>
+<a href="#1375" id="1375">1375</a>
+<a href="#1376" id="1376">1376</a>
+<a href="#1377" id="1377">1377</a>
+<a href="#1378" id="1378">1378</a>
+<a href="#1379" id="1379">1379</a>
+<a href="#1380" id="1380">1380</a>
+<a href="#1381" id="1381">1381</a>
+<a href="#1382" id="1382">1382</a>
+<a href="#1383" id="1383">1383</a>
+<a href="#1384" id="1384">1384</a>
+<a href="#1385" id="1385">1385</a>
+<a href="#1386" id="1386">1386</a>
+<a href="#1387" id="1387">1387</a>
+<a href="#1388" id="1388">1388</a>
+<a href="#1389" id="1389">1389</a>
+<a href="#1390" id="1390">1390</a>
+<a href="#1391" id="1391">1391</a>
+<a href="#1392" id="1392">1392</a>
+<a href="#1393" id="1393">1393</a>
+<a href="#1394" id="1394">1394</a>
+<a href="#1395" id="1395">1395</a>
+<a href="#1396" id="1396">1396</a>
+<a href="#1397" id="1397">1397</a>
+<a href="#1398" id="1398">1398</a>
+<a href="#1399" id="1399">1399</a>
+<a href="#1400" id="1400">1400</a>
+<a href="#1401" id="1401">1401</a>
+<a href="#1402" id="1402">1402</a>
+<a href="#1403" id="1403">1403</a>
+<a href="#1404" id="1404">1404</a>
+<a href="#1405" id="1405">1405</a>
+<a href="#1406" id="1406">1406</a>
+<a href="#1407" id="1407">1407</a>
+<a href="#1408" id="1408">1408</a>
+<a href="#1409" id="1409">1409</a>
+<a href="#1410" id="1410">1410</a>
+<a href="#1411" id="1411">1411</a>
+<a href="#1412" id="1412">1412</a>
+<a href="#1413" id="1413">1413</a>
+<a href="#1414" id="1414">1414</a>
+<a href="#1415" id="1415">1415</a>
+<a href="#1416" id="1416">1416</a>
+<a href="#1417" id="1417">1417</a>
+<a href="#1418" id="1418">1418</a>
+<a href="#1419" id="1419">1419</a>
+<a href="#1420" id="1420">1420</a>
+<a href="#1421" id="1421">1421</a>
+<a href="#1422" id="1422">1422</a>
+<a href="#1423" id="1423">1423</a>
+<a href="#1424" id="1424">1424</a>
+<a href="#1425" id="1425">1425</a>
+<a href="#1426" id="1426">1426</a>
+<a href="#1427" id="1427">1427</a>
+<a href="#1428" id="1428">1428</a>
+<a href="#1429" id="1429">1429</a>
+<a href="#1430" id="1430">1430</a>
+<a href="#1431" id="1431">1431</a>
+<a href="#1432" id="1432">1432</a>
+<a href="#1433" id="1433">1433</a>
+<a href="#1434" id="1434">1434</a>
+<a href="#1435" id="1435">1435</a>
+<a href="#1436" id="1436">1436</a>
+<a href="#1437" id="1437">1437</a>
+<a href="#1438" id="1438">1438</a>
+<a href="#1439" id="1439">1439</a>
+<a href="#1440" id="1440">1440</a>
+<a href="#1441" id="1441">1441</a>
+<a href="#1442" id="1442">1442</a>
+<a href="#1443" id="1443">1443</a>
+<a href="#1444" id="1444">1444</a>
+<a href="#1445" id="1445">1445</a>
+<a href="#1446" id="1446">1446</a>
+<a href="#1447" id="1447">1447</a>
+<a href="#1448" id="1448">1448</a>
+<a href="#1449" id="1449">1449</a>
+<a href="#1450" id="1450">1450</a>
+<a href="#1451" id="1451">1451</a>
+<a href="#1452" id="1452">1452</a>
+<a href="#1453" id="1453">1453</a>
+<a href="#1454" id="1454">1454</a>
+<a href="#1455" id="1455">1455</a>
+<a href="#1456" id="1456">1456</a>
+<a href="#1457" id="1457">1457</a>
+<a href="#1458" id="1458">1458</a>
+<a href="#1459" id="1459">1459</a>
+<a href="#1460" id="1460">1460</a>
+<a href="#1461" id="1461">1461</a>
+<a href="#1462" id="1462">1462</a>
+<a href="#1463" id="1463">1463</a>
+<a href="#1464" id="1464">1464</a>
+<a href="#1465" id="1465">1465</a>
+<a href="#1466" id="1466">1466</a>
+<a href="#1467" id="1467">1467</a>
+<a href="#1468" id="1468">1468</a>
+<a href="#1469" id="1469">1469</a>
+<a href="#1470" id="1470">1470</a>
+<a href="#1471" id="1471">1471</a>
+<a href="#1472" id="1472">1472</a>
+<a href="#1473" id="1473">1473</a>
+<a href="#1474" id="1474">1474</a>
+<a href="#1475" id="1475">1475</a>
+<a href="#1476" id="1476">1476</a>
+<a href="#1477" id="1477">1477</a>
+<a href="#1478" id="1478">1478</a>
+<a href="#1479" id="1479">1479</a>
+<a href="#1480" id="1480">1480</a>
+<a href="#1481" id="1481">1481</a>
+<a href="#1482" id="1482">1482</a>
+<a href="#1483" id="1483">1483</a>
+<a href="#1484" id="1484">1484</a>
+<a href="#1485" id="1485">1485</a>
+<a href="#1486" id="1486">1486</a>
+<a href="#1487" id="1487">1487</a>
+<a href="#1488" id="1488">1488</a>
+<a href="#1489" id="1489">1489</a>
+<a href="#1490" id="1490">1490</a>
+<a href="#1491" id="1491">1491</a>
+<a href="#1492" id="1492">1492</a>
+<a href="#1493" id="1493">1493</a>
+<a href="#1494" id="1494">1494</a>
+<a href="#1495" id="1495">1495</a>
+<a href="#1496" id="1496">1496</a>
+<a href="#1497" id="1497">1497</a>
+<a href="#1498" id="1498">1498</a>
+<a href="#1499" id="1499">1499</a>
+<a href="#1500" id="1500">1500</a>
+<a href="#1501" id="1501">1501</a>
+<a href="#1502" id="1502">1502</a>
+<a href="#1503" id="1503">1503</a>
+<a href="#1504" id="1504">1504</a>
+<a href="#1505" id="1505">1505</a>
+<a href="#1506" id="1506">1506</a>
+<a href="#1507" id="1507">1507</a>
+<a href="#1508" id="1508">1508</a>
+<a href="#1509" id="1509">1509</a>
+<a href="#1510" id="1510">1510</a>
+<a href="#1511" id="1511">1511</a>
+<a href="#1512" id="1512">1512</a>
+<a href="#1513" id="1513">1513</a>
+<a href="#1514" id="1514">1514</a>
+<a href="#1515" id="1515">1515</a>
+<a href="#1516" id="1516">1516</a>
+<a href="#1517" id="1517">1517</a>
+<a href="#1518" id="1518">1518</a>
+<a href="#1519" id="1519">1519</a>
+<a href="#1520" id="1520">1520</a>
+<a href="#1521" id="1521">1521</a>
+<a href="#1522" id="1522">1522</a>
+<a href="#1523" id="1523">1523</a>
+<a href="#1524" id="1524">1524</a>
+<a href="#1525" id="1525">1525</a>
+<a href="#1526" id="1526">1526</a>
+<a href="#1527" id="1527">1527</a>
+<a href="#1528" id="1528">1528</a>
+<a href="#1529" id="1529">1529</a>
+<a href="#1530" id="1530">1530</a>
+<a href="#1531" id="1531">1531</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the 
Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -1265,8 +1560,8 @@
 <span class="kw">use </span>uuid::Uuid;
 
 <span class="kw">use </span><span class="kw">crate</span>::spec::{
-    FormatVersion, Schema, Snapshot, SnapshotReference, SortOrder, 
TableMetadataBuilder,
-    UnboundPartitionSpec, ViewRepresentations,
+    FormatVersion, Schema, SchemaId, Snapshot, SnapshotReference, SortOrder, 
TableMetadata,
+    TableMetadataBuilder, UnboundPartitionSpec, ViewRepresentations,
 };
 <span class="kw">use </span><span class="kw">crate</span>::table::Table;
 <span class="kw">use crate</span>::{Error, ErrorKind, <span 
class="prelude-ty">Result</span>};
@@ -1548,14 +1843,14 @@
     </span>LastAssignedFieldIdMatch {
         <span class="doccomment">/// The last assigned field id of the table 
to assert.
         </span><span class="attr">#[serde(rename = <span 
class="string">"last-assigned-field-id"</span>)]
-        </span>last_assigned_field_id: i64,
+        </span>last_assigned_field_id: i32,
     },
     <span class="doccomment">/// The table's current schema id must match the 
requirement.
     </span><span class="attr">#[serde(rename = <span 
class="string">"assert-current-schema-id"</span>)]
     </span>CurrentSchemaIdMatch {
         <span class="doccomment">/// Current schema id of the table to assert.
         </span><span class="attr">#[serde(rename = <span 
class="string">"current-schema-id"</span>)]
-        </span>current_schema_id: i64,
+        </span>current_schema_id: SchemaId,
     },
     <span class="doccomment">/// The table's last assigned partition id must 
match the
     /// requirement.
@@ -1563,14 +1858,14 @@
     </span>LastAssignedPartitionIdMatch {
         <span class="doccomment">/// Last assigned partition id of the table 
to assert.
         </span><span class="attr">#[serde(rename = <span 
class="string">"last-assigned-partition-id"</span>)]
-        </span>last_assigned_partition_id: i64,
+        </span>last_assigned_partition_id: i32,
     },
     <span class="doccomment">/// The table's default spec id must match the 
requirement.
     </span><span class="attr">#[serde(rename = <span 
class="string">"assert-default-spec-id"</span>)]
     </span>DefaultSpecIdMatch {
         <span class="doccomment">/// Default spec id of the table to assert.
         </span><span class="attr">#[serde(rename = <span 
class="string">"default-spec-id"</span>)]
-        </span>default_spec_id: i64,
+        </span>default_spec_id: i32,
     },
     <span class="doccomment">/// The table's default sort order id must match 
the requirement.
     </span><span class="attr">#[serde(rename = <span 
class="string">"assert-default-sort-order-id"</span>)]
@@ -1689,6 +1984,140 @@
     }
 }
 
+<span class="kw">impl </span>TableRequirement {
+    <span class="doccomment">/// Check that the requirement is met by the 
table metadata.
+    /// If the requirement is not met, an appropriate error is returned.
+    ///
+    /// Provide metadata as `None` if the table does not exist.
+    </span><span class="kw">pub fn </span>check(<span 
class="kw-2">&amp;</span><span class="self">self</span>, metadata: <span 
class="prelude-ty">Option</span>&lt;<span 
class="kw-2">&amp;</span>TableMetadata&gt;) -&gt; <span 
class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if let </span><span 
class="prelude-val">Some</span>(metadata) = metadata {
+            <span class="kw">match </span><span class="self">self </span>{
+                TableRequirement::NotExist =&gt; {
+                    <span class="kw">return </span><span 
class="prelude-val">Err</span>(Error::new(
+                        ErrorKind::DataInvalid,
+                        <span class="macro">format!</span>(
+                            <span class="string">"Requirement failed: Table 
with id {} already exists"</span>,
+                            metadata.uuid()
+                        ),
+                    ));
+                }
+                TableRequirement::UuidMatch { uuid } =&gt; {
+                    <span class="kw">if </span><span 
class="kw-2">&amp;</span>metadata.uuid() != uuid {
+                        <span class="kw">return </span><span 
class="prelude-val">Err</span>(Error::new(
+                            ErrorKind::DataInvalid,
+                            <span class="string">"Requirement failed: Table 
UUID does not match"</span>,
+                        )
+                        .with_context(<span class="string">"expected"</span>, 
<span class="kw-2">*</span>uuid)
+                        .with_context(<span class="string">"found"</span>, 
metadata.uuid()));
+                    }
+                }
+                TableRequirement::CurrentSchemaIdMatch { current_schema_id } 
=&gt; {
+                    <span class="comment">// ToDo: Harmonize the types of 
current_schema_id
+                    </span><span class="kw">if 
</span>metadata.current_schema_id != <span 
class="kw-2">*</span>current_schema_id {
+                        <span class="kw">return </span><span 
class="prelude-val">Err</span>(Error::new(
+                            ErrorKind::DataInvalid,
+                            <span class="string">"Requirement failed: Current 
schema id does not match"</span>,
+                        )
+                        .with_context(<span class="string">"expected"</span>, 
current_schema_id.to_string())
+                        .with_context(<span class="string">"found"</span>, 
metadata.current_schema_id.to_string()));
+                    }
+                }
+                TableRequirement::DefaultSortOrderIdMatch {
+                    default_sort_order_id,
+                } =&gt; {
+                    <span class="kw">if 
</span>metadata.default_sort_order().order_id != <span 
class="kw-2">*</span>default_sort_order_id {
+                        <span class="kw">return </span><span 
class="prelude-val">Err</span>(Error::new(
+                            ErrorKind::DataInvalid,
+                            <span class="string">"Requirement failed: Default 
sort order id does not match"</span>,
+                        )
+                        .with_context(<span class="string">"expected"</span>, 
default_sort_order_id.to_string())
+                        .with_context(
+                            <span class="string">"found"</span>,
+                            metadata.default_sort_order().order_id.to_string(),
+                        ));
+                    }
+                }
+                TableRequirement::RefSnapshotIdMatch { r#ref, snapshot_id } 
=&gt; {
+                    <span class="kw">let </span>snapshot_ref = 
metadata.snapshot_for_ref(r#ref);
+                    <span class="kw">if let </span><span 
class="prelude-val">Some</span>(snapshot_id) = snapshot_id {
+                        <span class="kw">let </span>snapshot_ref = 
snapshot_ref.ok_or(Error::new(
+                            ErrorKind::DataInvalid,
+                            <span class="macro">format!</span>(<span 
class="string">"Requirement failed: Branch or tag `{}` not found"</span>, 
r#ref),
+                        ))<span class="question-mark">?</span>;
+                        <span class="kw">if </span>snapshot_ref.snapshot_id() 
!= <span class="kw-2">*</span>snapshot_id {
+                            <span class="kw">return </span><span 
class="prelude-val">Err</span>(Error::new(
+                                ErrorKind::DataInvalid,
+                                <span class="macro">format!</span>(
+                                    <span class="string">"Requirement failed: 
Branch or tag `{}`'s snapshot has changed"</span>,
+                                    r#ref
+                                ),
+                            )
+                            .with_context(<span 
class="string">"expected"</span>, snapshot_id.to_string())
+                            .with_context(<span class="string">"found"</span>, 
snapshot_ref.snapshot_id().to_string()));
+                        }
+                    } <span class="kw">else if </span>snapshot_ref.is_some() {
+                        <span class="comment">// a null snapshot ID means the 
ref should not exist already
+                        </span><span class="kw">return </span><span 
class="prelude-val">Err</span>(Error::new(
+                            ErrorKind::DataInvalid,
+                            <span class="macro">format!</span>(
+                                <span class="string">"Requirement failed: 
Branch or tag `{}` already exists"</span>,
+                                r#ref
+                            ),
+                        ));
+                    }
+                }
+                TableRequirement::DefaultSpecIdMatch { default_spec_id } =&gt; 
{
+                    <span class="comment">// ToDo: Harmonize the types of 
default_spec_id
+                    </span><span class="kw">if 
</span>metadata.default_partition_spec_id() != <span 
class="kw-2">*</span>default_spec_id {
+                        <span class="kw">return </span><span 
class="prelude-val">Err</span>(Error::new(
+                            ErrorKind::DataInvalid,
+                            <span class="string">"Requirement failed: Default 
partition spec id does not match"</span>,
+                        )
+                        .with_context(<span class="string">"expected"</span>, 
default_spec_id.to_string())
+                        .with_context(<span class="string">"found"</span>, 
metadata.default_partition_spec_id().to_string()));
+                    }
+                }
+                TableRequirement::LastAssignedPartitionIdMatch {
+                    last_assigned_partition_id,
+                } =&gt; {
+                    <span class="kw">if </span>metadata.last_partition_id != 
<span class="kw-2">*</span>last_assigned_partition_id {
+                        <span class="kw">return </span><span 
class="prelude-val">Err</span>(Error::new(
+                            ErrorKind::DataInvalid,
+                            <span class="string">"Requirement failed: Last 
assigned partition id does not match"</span>,
+                        )
+                        .with_context(<span class="string">"expected"</span>, 
last_assigned_partition_id.to_string())
+                        .with_context(<span class="string">"found"</span>, 
metadata.last_partition_id.to_string()));
+                    }
+                }
+                TableRequirement::LastAssignedFieldIdMatch {
+                    last_assigned_field_id,
+                } =&gt; {
+                    <span class="kw">if </span><span 
class="kw-2">&amp;</span>metadata.last_column_id != last_assigned_field_id {
+                        <span class="kw">return </span><span 
class="prelude-val">Err</span>(Error::new(
+                            ErrorKind::DataInvalid,
+                            <span class="string">"Requirement failed: Last 
assigned field id does not match"</span>,
+                        )
+                        .with_context(<span class="string">"expected"</span>, 
last_assigned_field_id.to_string())
+                        .with_context(<span class="string">"found"</span>, 
metadata.last_column_id.to_string()));
+                    }
+                }
+            };
+        } <span class="kw">else </span>{
+            <span class="kw">match </span><span class="self">self </span>{
+                TableRequirement::NotExist =&gt; {}
+                <span class="kw">_ </span>=&gt; {
+                    <span class="kw">return </span><span 
class="prelude-val">Err</span>(Error::new(
+                        ErrorKind::DataInvalid,
+                        <span class="string">"Requirement failed: Table does 
not exist"</span>,
+                    ));
+                }
+            }
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+}
+
 <span class="kw">pub</span>(<span class="kw">super</span>) <span 
class="kw">mod </span>_serde {
     <span class="kw">use </span>serde::{Deserialize <span class="kw">as 
_</span>, Deserializer};
 
@@ -1785,7 +2214,7 @@
     <span class="kw">use </span><span class="kw">crate</span>::spec::{
         FormatVersion, NestedField, NullOrder, Operation, PrimitiveType, 
Schema, Snapshot,
         SnapshotReference, SnapshotRetention, SortDirection, SortField, 
SortOrder, Summary,
-        TableMetadataBuilder, Transform, Type, UnboundPartitionSpec,
+        TableMetadata, TableMetadataBuilder, Transform, Type, 
UnboundPartitionSpec,
     };
     <span class="kw">use crate</span>::{NamespaceIdent, TableCreation, 
TableIdent, TableRequirement, TableUpdate};
 
@@ -1829,6 +2258,167 @@
         </span>);
     }
 
+    <span class="kw">fn </span>metadata() -&gt; TableMetadata {
+        <span class="kw">let </span>tbl_creation = TableCreation::builder()
+            .name(<span class="string">"table"</span>.to_string())
+            .location(<span class="string">"/path/to/table"</span>.to_string())
+            .schema(Schema::builder().build().unwrap())
+            .build();
+
+        TableMetadataBuilder::from_table_creation(tbl_creation)
+            .unwrap()
+            .assign_uuid(uuid::Uuid::nil())
+            .unwrap()
+            .build()
+            .unwrap()
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_check_requirement_not_exist() {
+        <span class="kw">let </span>metadata = metadata();
+        <span class="kw">let </span>requirement = TableRequirement::NotExist;
+
+        <span class="macro">assert!</span>(requirement.check(<span 
class="prelude-val">Some</span>(<span 
class="kw-2">&amp;</span>metadata)).is_err());
+        <span class="macro">assert!</span>(requirement.check(<span 
class="prelude-val">None</span>).is_ok());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_check_table_uuid() {
+        <span class="kw">let </span>metadata = metadata();
+
+        <span class="kw">let </span>requirement = TableRequirement::UuidMatch {
+            uuid: uuid::Uuid::now_v7(),
+        };
+        <span class="macro">assert!</span>(requirement.check(<span 
class="prelude-val">Some</span>(<span 
class="kw-2">&amp;</span>metadata)).is_err());
+
+        <span class="kw">let </span>requirement = TableRequirement::UuidMatch {
+            uuid: uuid::Uuid::nil(),
+        };
+        <span class="macro">assert!</span>(requirement.check(<span 
class="prelude-val">Some</span>(<span 
class="kw-2">&amp;</span>metadata)).is_ok());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_check_ref_snapshot_id() {
+        <span class="kw">let </span>metadata = metadata();
+
+        <span class="comment">// Ref does not exist but should
+        </span><span class="kw">let </span>requirement = 
TableRequirement::RefSnapshotIdMatch {
+            r#ref: <span class="string">"my_branch"</span>.to_string(),
+            snapshot_id: <span class="prelude-val">Some</span>(<span 
class="number">1</span>),
+        };
+        <span class="macro">assert!</span>(requirement.check(<span 
class="prelude-val">Some</span>(<span 
class="kw-2">&amp;</span>metadata)).is_err());
+
+        <span class="comment">// Ref does not exist and should not
+        </span><span class="kw">let </span>requirement = 
TableRequirement::RefSnapshotIdMatch {
+            r#ref: <span class="string">"my_branch"</span>.to_string(),
+            snapshot_id: <span class="prelude-val">None</span>,
+        };
+        <span class="macro">assert!</span>(requirement.check(<span 
class="prelude-val">Some</span>(<span 
class="kw-2">&amp;</span>metadata)).is_ok());
+
+        <span class="comment">// Add snapshot
+        </span><span class="kw">let </span>record = <span class="string">r#"
+        {
+            "snapshot-id": 3051729675574597004,
+            "sequence-number": 10,
+            "timestamp-ms": 1515100955770,
+            "summary": {
+                "operation": "append"
+            },
+            "manifest-list": "s3://b/wh/.../s1.avro",
+            "schema-id": 0
+        }
+        "#</span>;
+
+        <span class="kw">let </span>snapshot = 
serde_json::from_str::&lt;Snapshot&gt;(record).unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>metadata = 
metadata;
+        metadata.append_snapshot(snapshot);
+
+        <span class="comment">// Ref exists and should matches
+        </span><span class="kw">let </span>requirement = 
TableRequirement::RefSnapshotIdMatch {
+            r#ref: <span class="string">"main"</span>.to_string(),
+            snapshot_id: <span class="prelude-val">Some</span>(<span 
class="number">3051729675574597004</span>),
+        };
+        <span class="macro">assert!</span>(requirement.check(<span 
class="prelude-val">Some</span>(<span 
class="kw-2">&amp;</span>metadata)).is_ok());
+
+        <span class="comment">// Ref exists but does not match
+        </span><span class="kw">let </span>requirement = 
TableRequirement::RefSnapshotIdMatch {
+            r#ref: <span class="string">"main"</span>.to_string(),
+            snapshot_id: <span class="prelude-val">Some</span>(<span 
class="number">1</span>),
+        };
+        <span class="macro">assert!</span>(requirement.check(<span 
class="prelude-val">Some</span>(<span 
class="kw-2">&amp;</span>metadata)).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_check_last_assigned_field_id() {
+        <span class="kw">let </span>metadata = metadata();
+
+        <span class="kw">let </span>requirement = 
TableRequirement::LastAssignedFieldIdMatch {
+            last_assigned_field_id: <span class="number">1</span>,
+        };
+        <span class="macro">assert!</span>(requirement.check(<span 
class="prelude-val">Some</span>(<span 
class="kw-2">&amp;</span>metadata)).is_err());
+
+        <span class="kw">let </span>requirement = 
TableRequirement::LastAssignedFieldIdMatch {
+            last_assigned_field_id: <span class="number">0</span>,
+        };
+        <span class="macro">assert!</span>(requirement.check(<span 
class="prelude-val">Some</span>(<span 
class="kw-2">&amp;</span>metadata)).is_ok());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_check_current_schema_id() {
+        <span class="kw">let </span>metadata = metadata();
+
+        <span class="kw">let </span>requirement = 
TableRequirement::CurrentSchemaIdMatch {
+            current_schema_id: <span class="number">1</span>,
+        };
+        <span class="macro">assert!</span>(requirement.check(<span 
class="prelude-val">Some</span>(<span 
class="kw-2">&amp;</span>metadata)).is_err());
+
+        <span class="kw">let </span>requirement = 
TableRequirement::CurrentSchemaIdMatch {
+            current_schema_id: <span class="number">0</span>,
+        };
+        <span class="macro">assert!</span>(requirement.check(<span 
class="prelude-val">Some</span>(<span 
class="kw-2">&amp;</span>metadata)).is_ok());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_check_last_assigned_partition_id() {
+        <span class="kw">let </span>metadata = metadata();
+
+        <span class="kw">let </span>requirement = 
TableRequirement::LastAssignedPartitionIdMatch {
+            last_assigned_partition_id: <span class="number">1</span>,
+        };
+        <span class="macro">assert!</span>(requirement.check(<span 
class="prelude-val">Some</span>(<span 
class="kw-2">&amp;</span>metadata)).is_err());
+
+        <span class="kw">let </span>requirement = 
TableRequirement::LastAssignedPartitionIdMatch {
+            last_assigned_partition_id: <span class="number">0</span>,
+        };
+        <span class="macro">assert!</span>(requirement.check(<span 
class="prelude-val">Some</span>(<span 
class="kw-2">&amp;</span>metadata)).is_ok());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_check_default_spec_id() {
+        <span class="kw">let </span>metadata = metadata();
+
+        <span class="kw">let </span>requirement = 
TableRequirement::DefaultSpecIdMatch { default_spec_id: <span class="number">1 
</span>};
+        <span class="macro">assert!</span>(requirement.check(<span 
class="prelude-val">Some</span>(<span 
class="kw-2">&amp;</span>metadata)).is_err());
+
+        <span class="kw">let </span>requirement = 
TableRequirement::DefaultSpecIdMatch { default_spec_id: <span class="number">0 
</span>};
+        <span class="macro">assert!</span>(requirement.check(<span 
class="prelude-val">Some</span>(<span 
class="kw-2">&amp;</span>metadata)).is_ok());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_check_default_sort_order_id() {
+        <span class="kw">let </span>metadata = metadata();
+
+        <span class="kw">let </span>requirement = 
TableRequirement::DefaultSortOrderIdMatch {
+            default_sort_order_id: <span class="number">1</span>,
+        };
+        <span class="macro">assert!</span>(requirement.check(<span 
class="prelude-val">Some</span>(<span 
class="kw-2">&amp;</span>metadata)).is_err());
+
+        <span class="kw">let </span>requirement = 
TableRequirement::DefaultSortOrderIdMatch {
+            default_sort_order_id: <span class="number">0</span>,
+        };
+        <span class="macro">assert!</span>(requirement.check(<span 
class="prelude-val">Some</span>(<span 
class="kw-2">&amp;</span>metadata)).is_ok());
+    }
+
     <span class="attr">#[test]
     </span><span class="kw">fn </span>test_table_uuid() {
         test_serde_json(
diff --git a/api/src/iceberg/transaction.rs.html 
b/api/src/iceberg/transaction.rs.html
index 31c5eeac..e218e901 100644
--- a/api/src/iceberg/transaction.rs.html
+++ b/api/src/iceberg/transaction.rs.html
@@ -519,7 +519,7 @@
 
         <span class="kw">let </span>requirements = <span 
class="macro">vec!</span>[
             TableRequirement::CurrentSchemaIdMatch {
-                current_schema_id: <span 
class="self">self</span>.tx.table.metadata().current_schema().schema_id() <span 
class="kw">as </span>i64,
+                current_schema_id: <span 
class="self">self</span>.tx.table.metadata().current_schema().schema_id(),
             },
             TableRequirement::DefaultSortOrderIdMatch {
                 default_sort_order_id: <span 
class="self">self</span>.tx.table.metadata().default_sort_order().order_id,

Reply via email to