You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iceberg.apache.org by gi...@apache.org on 2025/01/02 07:10:46 UTC

(iceberg-rust) branch gh-pages updated: deploy: 09fa1fa19488ab63c042aa692ac730fe1a7dc987

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 e3cedd27 deploy: 09fa1fa19488ab63c042aa692ac730fe1a7dc987
e3cedd27 is described below

commit e3cedd278fe8af5de44c80f74c0b9cbf6dda9719
Author: Xuanwo <Xu...@users.noreply.github.com>
AuthorDate: Thu Jan 2 07:10:41 2025 +0000

    deploy: 09fa1fa19488ab63c042aa692ac730fe1a7dc987
---
 api/iceberg/all.html                               |   2 +-
 api/iceberg/spec/enum.DataContentType.html         |  10 +-
 api/iceberg/spec/enum.DataFileBuilderError.html    |   4 +-
 api/iceberg/spec/enum.DataFileFormat.html          |  14 +-
 api/iceberg/spec/enum.ManifestStatus.html          |   6 +-
 api/iceberg/spec/fn.read_data_files_from_avro.html |   7 +
 api/iceberg/spec/fn.write_data_files_to_avro.html  |   8 +
 api/iceberg/spec/index.html                        |   3 +-
 .../manifest/fn.read_data_files_from_avro.html     |  11 +
 .../spec/manifest/fn.write_data_files_to_avro.html |  11 +
 api/iceberg/spec/sidebar-items.js                  |   2 +-
 api/iceberg/spec/struct.DataFile.html              |  38 +--
 api/iceberg/spec/struct.DataFileBuilder.html       |  38 +--
 api/iceberg/spec/struct.Manifest.html              |  14 +-
 api/iceberg/spec/struct.ManifestEntry.html         |  28 +-
 api/iceberg/spec/struct.ManifestMetadata.html      |  10 +-
 api/iceberg/spec/struct.ManifestWriter.html        |   6 +-
 api/iceberg/spec/type.ManifestEntryRef.html        |   2 +-
 api/search-index.js                                |   2 +-
 api/search.desc/iceberg/iceberg-desc-0-.js         |   2 +-
 api/src/iceberg/spec/manifest.rs.html              | 358 ++++++++++++++++++---
 21 files changed, 437 insertions(+), 139 deletions(-)

diff --git a/api/iceberg/all.html b/api/iceberg/all.html
index b8ade7d0..45c26ae3 100644
--- a/api/iceberg/all.html
+++ b/api/iceberg/all.html
@@ -1 +1 @@
-<!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="List of all items in this crate"><title>List of all items in this crate</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d [...]
\ No newline at end of file
+<!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="List of all items in this crate"><title>List of all items in this crate</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d [...]
\ No newline at end of file
diff --git a/api/iceberg/spec/enum.DataContentType.html b/api/iceberg/spec/enum.DataContentType.html
index b30ad643..53d784ba 100644
--- a/api/iceberg/spec/enum.DataContentType.html
+++ b/api/iceberg/spec/enum.DataContentType.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="Type of content stored by the data file: data, equality deletes, or position deletes (all v1 files are data files)"><title>DataContentType in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98 [...]
+<!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="Type of content stored by the data file: data, equality deletes, or position deletes (all v1 files are data files)"><title>DataContentType in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98 [...]
     Data = 0,
     PositionDeletes = 1,
     EqualityDeletes = 2,
@@ -7,11 +7,11 @@ position deletes (all v1 files are data files)</p>
 </div></details><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Data" class="variant"><a href="#variant.Data" class="anchor">§</a><h3 class="code-header">Data = 0</h3></section><div class="docblock"><p>value: 0</p>
 </div><section id="variant.PositionDeletes" class="variant"><a href="#variant.PositionDeletes" class="anchor">§</a><h3 class="code-header">PositionDeletes = 1</h3></section><div class="docblock"><p>value: 1</p>
 </div><section id="variant.EqualityDeletes" class="variant"><a href="#variant.EqualityDeletes" class="anchor">§</a><h3 class="code-header">EqualityDeletes = 2</h3></section><div class="docblock"><p>value: 2</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-DataContentType" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1194">source</a><a href="#impl-Clone-for-DataContentType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" [...]
-    __D: <a class="trait" href="https://docs.rs/serde/1.0.217/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.217/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 [...]
+</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-DataContentType" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1260">source</a><a href="#impl-Clone-for-DataContentType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" [...]
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.217/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.217/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-DataContentType" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1194">source</a><a href="#impl-Serialize-for-DataContentType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serialize.html" title=" [...]
-    __S: <a class="trait" href="https://docs.rs/serde/1.0.217/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.217/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%3Ci32%3E-for-DataCo [...]
+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-DataContentType" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1260">source</a><a href="#impl-Serialize-for-DataContentType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serialize.html" title=" [...]
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.217/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.217/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%3Ci32%3E-for-DataCo [...]
     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/enum.DataFileBuilderError.html b/api/iceberg/spec/enum.DataFileBuilderError.html
index f244110c..d8e12652 100644
--- a/api/iceberg/spec/enum.DataFileBuilderError.html
+++ b/api/iceberg/spec/enum.DataFileBuilderError.html
@@ -1,10 +1,10 @@
-<!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="Error type for DataFileBuilder"><title>DataFileBuilderError in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8 [...]
+<!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="Error type for DataFileBuilder"><title>DataFileBuilderError in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8 [...]
     UninitializedField(&amp;'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>),
     ValidationError(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>),
 }</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#989">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#1012">source</a><a href="#impl-Debug-for-DataFileBuilderError" class="anchor">§</a><h3 class="code-header">impl <a cla [...]
     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 5f2ce3a8..b3a998f3 100644
--- a/api/iceberg/spec/enum.DataFileFormat.html
+++ b/api/iceberg/spec/enum.DataFileFormat.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="Format of this data."><title>DataFileFormat in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388. [...]
+<!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="Format of this data."><title>DataFileFormat in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388. [...]
     Avro,
     Orc,
     Parquet,
@@ -6,14 +6,14 @@
 </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#1221">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#1287">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.217/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.217/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 [...]
+    &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.217/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.217/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#1221">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.217/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#1221">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/ [...]
-    __S: <a class="trait" href="https://docs.rs/serde/1.0.217/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.217/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-DataFileFormat" class="impl"><a class="src rightside" href="../../src/iceber [...]
+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#1287">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.217/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#1287">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/ [...]
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.217/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.217/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-DataFileFormat" class="impl"><a class="src rightside" href="../../src/iceber [...]
     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/enum.ManifestStatus.html b/api/iceberg/spec/enum.ManifestStatus.html
index affb1e9b..4e8634a9 100644
--- a/api/iceberg/spec/enum.ManifestStatus.html
+++ b/api/iceberg/spec/enum.ManifestStatus.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="Used to track additions and deletions in ManifestEntry."><title>ManifestStatus in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff [...]
+<!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="Used to track additions and deletions in ManifestEntry."><title>ManifestStatus in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff [...]
     Existing = 0,
     Added = 1,
     Deleted = 2,
@@ -7,9 +7,9 @@
 </div><section id="variant.Added" class="variant"><a href="#variant.Added" class="anchor">§</a><h3 class="code-header">Added = 1</h3></section><div class="docblock"><p>Value: 1</p>
 </div><section id="variant.Deleted" class="variant"><a href="#variant.Deleted" class="anchor">§</a><h3 class="code-header">Deleted = 2</h3></section><div class="docblock"><p>Value: 2</p>
 <p>Deletes are informational only and not used in scans.</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-ManifestStatus" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#960">source</a><a href="#impl-Clone-for-ManifestStatus" class="anchor">§</a><h3 class="code-header">impl <a class="trait" hr [...]
+</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-ManifestStatus" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#983">source</a><a href="#impl-Clone-for-ManifestStatus" class="anchor">§</a><h3 class="code-header">impl <a class="trait" hr [...]
 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-TryFrom%3Ci32%3E-for-ManifestStatus" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#972-986">source</a><a href="#impl-TryFrom%3Ci32%3E-for-ManifestStatus" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.T [...]
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-TryFrom%3Ci32%3E-for-ManifestStatus" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#995-1009">source</a><a href="#impl-TryFrom%3Ci32%3E-for-ManifestStatus" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait. [...]
     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/fn.read_data_files_from_avro.html b/api/iceberg/spec/fn.read_data_files_from_avro.html
new file mode 100644
index 00000000..cc34beda
--- /dev/null
+++ b/api/iceberg/spec/fn.read_data_files_from_avro.html
@@ -0,0 +1,7 @@
+<!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="Parse data files from avro bytes."><title>read_data_files_from_avro in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans- [...]
+    reader: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut R</a>,
+    schema: &amp;<a class="struct" href="struct.Schema.html" title="struct iceberg::spec::Schema">Schema</a>,
+    partition_type: &amp;<a class="struct" href="struct.StructType.html" title="struct iceberg::spec::StructType">StructType</a>,
+    version: <a class="enum" href="enum.FormatVersion.html" title="enum iceberg::spec::FormatVersion">FormatVersion</a>,
+) -&gt; <a class="type" href="../type.Result.html" title="type iceberg::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.DataFile.html" title="struct iceberg::spec::DataFile">DataFile</a>&gt;&gt;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Parse data files from avro [...]
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/api/iceberg/spec/fn.write_data_files_to_avro.html b/api/iceberg/spec/fn.write_data_files_to_avro.html
new file mode 100644
index 00000000..ceb054a8
--- /dev/null
+++ b/api/iceberg/spec/fn.write_data_files_to_avro.html
@@ -0,0 +1,8 @@
+<!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="Convert data files to avro bytes and write to writer. Return the bytes written."><title>write_data_files_to_avro in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,Fira [...]
+    writer: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut W</a>,
+    data_files: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = <a class="struct" href="struct.DataFile.html" title="struct iceberg::spec::DataFile">DataFile</a>&gt;,
+    partition_type: &amp;<a class="struct" href="struct.StructType.html" title="struct iceberg::spec::StructType">StructType</a>,
+    version: <a class="enum" href="enum.FormatVersion.html" title="enum iceberg::spec::FormatVersion">FormatVersion</a>,
+) -&gt; <a class="type" href="../type.Result.html" title="type iceberg::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Convert data files to avro bytes and write to writer.
+Return the bytes written.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/api/iceberg/spec/index.html b/api/iceberg/spec/index.html
index c4ca124d..aafc042b 100644
--- a/api/iceberg/spec/index.html
+++ b/api/iceberg/spec/index.html
@@ -21,4 +21,5 @@ They are used to transport schema information as part of the REST specification.
 The main difference to <a href="struct.PartitionSpec.html" title="struct iceberg::spec::PartitionSpec"><code>PartitionSpec</code></a> is that the field ids are optional.</div></li><li><div class="item-name"><a class="struct" href="struct.UnboundPartitionSpecBuilder.html" title="struct iceberg::spec::UnboundPartitionSpecBuilder">UnboundPartitionSpecBuilder</a></div><div class="desc docblock-short">Create a new UnboundPartitionSpec</div></li><li><div class="item-name"><a class="struct" hre [...]
 position deletes (all v1 files are data files)</div></li><li><div class="item-name"><a class="enum" href="enum.DataFileBuilderError.html" title="enum iceberg::spec::DataFileBuilderError">DataFileBuilderError</a></div><div class="desc docblock-short">Error type for DataFileBuilder</div></li><li><div class="item-name"><a class="enum" href="enum.DataFileFormat.html" title="enum iceberg::spec::DataFileFormat">DataFileFormat</a></div><div class="desc docblock-short">Format of this data.</div> [...]
 in addition to transforming data values.</div></li><li><div class="item-name"><a class="enum" href="enum.Type.html" title="enum iceberg::spec::Type">Type</a></div><div class="desc docblock-short">All data types are either primitives or nested types, which are maps, lists, or structs.</div></li><li><div class="item-name"><a class="enum" href="enum.ViewFormatVersion.html" title="enum iceberg::spec::ViewFormatVersion">ViewFormatVersion</a></div><div class="desc docblock-short">Iceberg forma [...]
-Representations are documented ways to express a view definition.</div></li></ul><h2 id="constants" class="section-header">Constants<a href="#constants" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="constant" href="constant.MAIN_BRANCH.html" title="constant iceberg::spec::MAIN_BRANCH">MAIN_BRANCH</a></div><div class="desc docblock-short">The ref name of the main branch of the table.</div></li><li><div class="item-name"><a class="constant" href="cons [...]
\ No newline at end of file
+Representations are documented ways to express a view definition.</div></li></ul><h2 id="constants" class="section-header">Constants<a href="#constants" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="constant" href="constant.MAIN_BRANCH.html" title="constant iceberg::spec::MAIN_BRANCH">MAIN_BRANCH</a></div><div class="desc docblock-short">The ref name of the main branch of the table.</div></li><li><div class="item-name"><a class="constant" href="cons [...]
+Return the bytes written.</div></li></ul><h2 id="types" class="section-header">Type Aliases<a href="#types" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="type" href="type.ManifestEntryRef.html" title="type iceberg::spec::ManifestEntryRef">ManifestEntryRef</a></div><div class="desc docblock-short">Reference to <a href="struct.ManifestEntry.html" title="struct iceberg::spec::ManifestEntry"><code>ManifestEntry</code></a>.</div></li><li><div class="item [...]
\ No newline at end of file
diff --git a/api/iceberg/spec/manifest/fn.read_data_files_from_avro.html b/api/iceberg/spec/manifest/fn.read_data_files_from_avro.html
new file mode 100644
index 00000000..edad2295
--- /dev/null
+++ b/api/iceberg/spec/manifest/fn.read_data_files_from_avro.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../../iceberg/spec/fn.read_data_files_from_avro.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../../iceberg/spec/fn.read_data_files_from_avro.html">../../../iceberg/spec/fn.read_data_files_from_avro.html</a>...</p>
+    <script>location.replace("../../../iceberg/spec/fn.read_data_files_from_avro.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/api/iceberg/spec/manifest/fn.write_data_files_to_avro.html b/api/iceberg/spec/manifest/fn.write_data_files_to_avro.html
new file mode 100644
index 00000000..9c2eaf35
--- /dev/null
+++ b/api/iceberg/spec/manifest/fn.write_data_files_to_avro.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../../iceberg/spec/fn.write_data_files_to_avro.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../../iceberg/spec/fn.write_data_files_to_avro.html">../../../iceberg/spec/fn.write_data_files_to_avro.html</a>...</p>
+    <script>location.replace("../../../iceberg/spec/fn.write_data_files_to_avro.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/api/iceberg/spec/sidebar-items.js b/api/iceberg/spec/sidebar-items.js
index cd968127..3bac044d 100644
--- a/api/iceberg/spec/sidebar-items.js
+++ b/api/iceberg/spec/sidebar-items.js
@@ -1 +1 @@
-window.SIDEBAR_ITEMS = {"constant":["MAIN_BRANCH","PROPERTY_CURRENT_SCHEMA","PROPERTY_CURRENT_SNAPSHOT_ID","PROPERTY_CURRENT_SNAPSHOT_SUMMARY","PROPERTY_CURRENT_SNAPSHOT_TIMESTAMP","PROPERTY_DEFAULT_PARTITION_SPEC","PROPERTY_DEFAULT_SORT_ORDER","PROPERTY_FORMAT_VERSION","PROPERTY_METADATA_PREVIOUS_VERSIONS_MAX","PROPERTY_METADATA_PREVIOUS_VERSIONS_MAX_DEFAULT","PROPERTY_SNAPSHOT_COUNT","PROPERTY_UUID","RESERVED_PROPERTIES","UNASSIGNED_SEQUENCE_NUMBER"],"enum":["DataContentType","DataFile [...]
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"constant":["MAIN_BRANCH","PROPERTY_CURRENT_SCHEMA","PROPERTY_CURRENT_SNAPSHOT_ID","PROPERTY_CURRENT_SNAPSHOT_SUMMARY","PROPERTY_CURRENT_SNAPSHOT_TIMESTAMP","PROPERTY_DEFAULT_PARTITION_SPEC","PROPERTY_DEFAULT_SORT_ORDER","PROPERTY_FORMAT_VERSION","PROPERTY_METADATA_PREVIOUS_VERSIONS_MAX","PROPERTY_METADATA_PREVIOUS_VERSIONS_MAX_DEFAULT","PROPERTY_SNAPSHOT_COUNT","PROPERTY_UUID","RESERVED_PROPERTIES","UNASSIGNED_SEQUENCE_NUMBER"],"enum":["DataContentType","DataFile [...]
\ No newline at end of file
diff --git a/api/iceberg/spec/struct.DataFile.html b/api/iceberg/spec/struct.DataFile.html
index 6486a9c3..f96374c6 100644
--- a/api/iceberg/spec/struct.DataFile.html
+++ b/api/iceberg/spec/struct.DataFile.html
@@ -1,40 +1,40 @@
-<!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="Data file carries data file path, partition tuple, metrics, …"><title>DataFile in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff [...]
-</div></details><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-DataFile" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1109-1191">source</a><a href="#impl-DataFile" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.DataFile.html" title="struct icebe [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.file_path" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1115-1117">source</a><h4 class="code-header">pub fn <a href="#method.file_path" class="fn">file_path</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>Get the file path as full URI with FS  [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.file_format" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1119-1121">source</a><h4 class="code-header">pub fn <a href="#method.file_format" class="fn">file_format</a>(&amp;self) -&gt; <a class="enum" href="enum.DataFileFormat.html" title="enum iceberg::spec::DataFileFormat">DataFileFormat</a></h4></section></summary><div class="docblock"><p>Get the file format  [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.partition" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1123-1125">source</a><h4 class="code-header">pub fn <a href="#method.partition" class="fn">partition</a>(&amp;self) -&gt; &amp;<a class="struct" href="struct.Struct.html" title="struct iceberg::spec::Struct">Struct</a></h4></section></summary><div class="docblock"><p>Get the partition values of the file.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.record_count" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1127-1129">source</a><h4 class="code-header">pub fn <a href="#method.record_count" class="fn">record_count</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Get the record count in the data f [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.file_size_in_bytes" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1131-1133">source</a><h4 class="code-header">pub fn <a href="#method.file_size_in_bytes" class="fn">file_size_in_bytes</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Get the file siz [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.column_sizes" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1138-1140">source</a><h4 class="code-header">pub fn <a href="#method.column_sizes" class="fn">column_sizes</a>(&amp;self) -&gt; &amp;<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; [...]
+<!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="Data file carries data file path, partition tuple, metrics, …"><title>DataFile in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff [...]
+</div></details><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-DataFile" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1132-1214">source</a><a href="#impl-DataFile" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.DataFile.html" title="struct icebe [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.file_path" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1138-1140">source</a><h4 class="code-header">pub fn <a href="#method.file_path" class="fn">file_path</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>Get the file path as full URI with FS  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.file_format" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1142-1144">source</a><h4 class="code-header">pub fn <a href="#method.file_format" class="fn">file_format</a>(&amp;self) -&gt; <a class="enum" href="enum.DataFileFormat.html" title="enum iceberg::spec::DataFileFormat">DataFileFormat</a></h4></section></summary><div class="docblock"><p>Get the file format  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.partition" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1146-1148">source</a><h4 class="code-header">pub fn <a href="#method.partition" class="fn">partition</a>(&amp;self) -&gt; &amp;<a class="struct" href="struct.Struct.html" title="struct iceberg::spec::Struct">Struct</a></h4></section></summary><div class="docblock"><p>Get the partition values of the file.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.record_count" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1150-1152">source</a><h4 class="code-header">pub fn <a href="#method.record_count" class="fn">record_count</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Get the record count in the data f [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.file_size_in_bytes" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1154-1156">source</a><h4 class="code-header">pub fn <a href="#method.file_size_in_bytes" class="fn">file_size_in_bytes</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Get the file siz [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.column_sizes" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1161-1163">source</a><h4 class="code-header">pub fn <a href="#method.column_sizes" class="fn">column_sizes</a>(&amp;self) -&gt; &amp;<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; [...]
 Map from column id to the total size on disk of all regions that
 store the column. Does not include bytes necessary to read other
 columns, like footers. Null for row-oriented formats (Avro)</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.value_counts" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1144-1146">source</a><h4 class="code-header">pub fn <a href="#method.value_counts" class="fn">value_counts</a>(&amp;self) -&gt; &amp;<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; [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.value_counts" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1167-1169">source</a><h4 class="code-header">pub fn <a href="#method.value_counts" class="fn">value_counts</a>(&amp;self) -&gt; &amp;<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; [...]
 Map from column id to number of values in the column (including null
 and NaN values)</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.null_value_counts" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1149-1151">source</a><h4 class="code-header">pub fn <a href="#method.null_value_counts" class="fn">null_value_counts</a>(&amp;self) -&gt; &amp;<a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap"> [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.null_value_counts" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1172-1174">source</a><h4 class="code-header">pub fn <a href="#method.null_value_counts" class="fn">null_value_counts</a>(&amp;self) -&gt; &amp;<a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap"> [...]
 Map from column id to number of null values in the column</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.nan_value_counts" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1154-1156">source</a><h4 class="code-header">pub fn <a href="#method.nan_value_counts" class="fn">nan_value_counts</a>(&amp;self) -&gt; &amp;<a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">Has [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.nan_value_counts" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1177-1179">source</a><h4 class="code-header">pub fn <a href="#method.nan_value_counts" class="fn">nan_value_counts</a>(&amp;self) -&gt; &amp;<a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">Has [...]
 Map from column id to number of NaN values in the column</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.lower_bounds" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1159-1161">source</a><h4 class="code-header">pub fn <a href="#method.lower_bounds" class="fn">lower_bounds</a>(&amp;self) -&gt; &amp;<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; [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.lower_bounds" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1182-1184">source</a><h4 class="code-header">pub fn <a href="#method.lower_bounds" class="fn">lower_bounds</a>(&amp;self) -&gt; &amp;<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; [...]
 Map from column id to lower bound in the column serialized as binary.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.upper_bounds" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1164-1166">source</a><h4 class="code-header">pub fn <a href="#method.upper_bounds" class="fn">upper_bounds</a>(&amp;self) -&gt; &amp;<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; [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.upper_bounds" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1187-1189">source</a><h4 class="code-header">pub fn <a href="#method.upper_bounds" class="fn">upper_bounds</a>(&amp;self) -&gt; &amp;<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; [...]
 Map from column id to upper bound in the column serialized as binary.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.key_metadata" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1168-1170">source</a><h4 class="code-header">pub fn <a href="#method.key_metadata" class="fn">key_metadata</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;[<a class="primitive" href="https://d [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.split_offsets" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1173-1175">source</a><h4 class="code-header">pub fn <a href="#method.split_offsets" class="fn">split_offsets</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i64.html">i64</a>]</h4></section></summary><div class="docblock"><p>Get the split offsets of [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.key_metadata" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1191-1193">source</a><h4 class="code-header">pub fn <a href="#method.key_metadata" class="fn">key_metadata</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;[<a class="primitive" href="https://d [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.split_offsets" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1196-1198">source</a><h4 class="code-header">pub fn <a href="#method.split_offsets" class="fn">split_offsets</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i64.html">i64</a>]</h4></section></summary><div class="docblock"><p>Get the split offsets of [...]
 For example, all row group offsets in a Parquet file.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.equality_ids" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1179-1181">source</a><h4 class="code-header">pub fn <a href="#method.equality_ids" class="fn">equality_ids</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>]</h4></section></summary><div class="docblock"><p>Get the equality ids of the [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.equality_ids" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1202-1204">source</a><h4 class="code-header">pub fn <a href="#method.equality_ids" class="fn">equality_ids</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>]</h4></section></summary><div class="docblock"><p>Get the equality ids of the [...]
 Field ids used to determine row equality in equality delete files.
 null when content is not EqualityDeletes.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.sort_order_id" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1188-1190">source</a><h4 class="code-header">pub fn <a href="#method.sort_order_id" class="fn">sort_order_id</a>(&amp;self) -&gt; <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. [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.sort_order_id" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1211-1213">source</a><h4 class="code-header">pub fn <a href="#method.sort_order_id" class="fn">sort_order_id</a>(&amp;self) -&gt; <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. [...]
 Only data files and equality delete files should be
 written with a non-null order id. Position deletes are required to be
 sorted by file and position, not a table order, and should set sort
 order id to null. Readers must ignore sort order id for position
 delete files.</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-DataFile" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><a href="#impl-Clone-for-DataFile" class="anchor">§</a><h3 class="code-header">impl <a cl [...]
+</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-DataFile" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><a href="#impl-Clone-for-DataFile" class="anchor">§</a><h3 class="code-header">impl <a c [...]
 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><section id="impl-Eq-for-DataFile" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><a href="#impl-Eq-for-DataFile" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.DataFile.html" title="struct [...]
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-DataFile" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><a href="#impl-Eq-for-DataFile" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.DataFile.html" title="struc [...]
     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.DataFileBuilder.html b/api/iceberg/spec/struct.DataFileBuilder.html
index 2a1e09c5..1080c0ce 100644
--- a/api/iceberg/spec/struct.DataFileBuilder.html
+++ b/api/iceberg/spec/struct.DataFileBuilder.html
@@ -1,38 +1,38 @@
-<!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="Builder for `DataFile`."><title>DataFileBuilder in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d [...]
-</div></details><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-DataFileBuilder" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><a href="#impl-DataFileBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.DataFileBuilder.html" titl [...]
+<!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="Builder for `DataFile`."><title>DataFileBuilder in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d [...]
+</div></details><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-DataFileBuilder" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><a href="#impl-DataFileBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.DataFileBuilder.html" tit [...]
 <p>Type of content stored by the data file: data, equality deletes,
 or position deletes (all v1 files are data files)</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.file_path" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><h4 class="code-header">pub fn <a href="#method.file_path" class="fn">file_path</a>(&amp;mut self, value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>) -&gt; <a class="primitive" href="https://doc.r [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.file_path" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><h4 class="code-header">pub fn <a href="#method.file_path" class="fn">file_path</a>(&amp;mut self, value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>) -&gt; <a class="primitive" href="https://doc. [...]
 <p>Full URI for the file with FS scheme</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.file_format" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><h4 class="code-header">pub fn <a href="#method.file_format" class="fn">file_format</a>(&amp;mut self, value: <a class="enum" href="enum.DataFileFormat.html" title="enum iceberg::spec::DataFileFormat">DataFileFormat</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/st [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.file_format" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><h4 class="code-header">pub fn <a href="#method.file_format" class="fn">file_format</a>(&amp;mut self, value: <a class="enum" href="enum.DataFileFormat.html" title="enum iceberg::spec::DataFileFormat">DataFileFormat</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/s [...]
 <p>String file format name, avro, orc or parquet</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.partition" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><h4 class="code-header">pub fn <a href="#method.partition" class="fn">partition</a>(&amp;mut self, value: <a class="struct" href="struct.Struct.html" title="struct iceberg::spec::Struct">Struct</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.ht [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.partition" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><h4 class="code-header">pub fn <a href="#method.partition" class="fn">partition</a>(&amp;mut self, value: <a class="struct" href="struct.Struct.html" title="struct iceberg::spec::Struct">Struct</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.h [...]
 <p>Partition data tuple, schema based on the partition spec output using
 partition field ids for the struct field ids</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.record_count" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><h4 class="code-header">pub fn <a href="#method.record_count" class="fn">record_count</a>(&amp;mut self, value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.re [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.record_count" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><h4 class="code-header">pub fn <a href="#method.record_count" class="fn">record_count</a>(&amp;mut self, value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.r [...]
 <p>Number of records in this file</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.file_size_in_bytes" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><h4 class="code-header">pub fn <a href="#method.file_size_in_bytes" class="fn">file_size_in_bytes</a>(&amp;mut self, value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightl [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.file_size_in_bytes" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><h4 class="code-header">pub fn <a href="#method.file_size_in_bytes" class="fn">file_size_in_bytes</a>(&amp;mut self, value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/night [...]
 <p>Total file size in bytes</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.column_sizes" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><h4 class="code-header">pub fn <a href="#method.column_sizes" class="fn">column_sizes</a>(&amp;mut self, value: <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 cla [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.column_sizes" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><h4 class="code-header">pub fn <a href="#method.column_sizes" class="fn">column_sizes</a>(&amp;mut self, value: <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 cl [...]
 key field id: 117
 value field id: 118</p>
 <p>Map from column id to the total size on disk of all regions that
 store the column. Does not include bytes necessary to read other
 columns, like footers. Leave null for row-oriented formats (Avro)</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.value_counts" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><h4 class="code-header">pub fn <a href="#method.value_counts" class="fn">value_counts</a>(&amp;mut self, value: <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 cla [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.value_counts" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><h4 class="code-header">pub fn <a href="#method.value_counts" class="fn">value_counts</a>(&amp;mut self, value: <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 cl [...]
 key field id: 119
 value field id: 120</p>
 <p>Map from column id to number of values in the column (including null
 and NaN values)</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.null_value_counts" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><h4 class="code-header">pub fn <a href="#method.null_value_counts" class="fn">null_value_counts</a>(&amp;mut self, value: <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMa [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.null_value_counts" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><h4 class="code-header">pub fn <a href="#method.null_value_counts" class="fn">null_value_counts</a>(&amp;mut self, value: <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashM [...]
 key field id: 121
 value field id: 122</p>
 <p>Map from column id to number of null values in the column</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.nan_value_counts" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><h4 class="code-header">pub fn <a href="#method.nan_value_counts" class="fn">nan_value_counts</a>(&amp;mut self, value: <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</ [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.nan_value_counts" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><h4 class="code-header">pub fn <a href="#method.nan_value_counts" class="fn">nan_value_counts</a>(&amp;mut self, value: <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< [...]
 key field id: 138
 value field id: 139</p>
 <p>Map from column id to number of NaN values in the column</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.lower_bounds" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><h4 class="code-header">pub fn <a href="#method.lower_bounds" class="fn">lower_bounds</a>(&amp;mut self, value: <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 cla [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.lower_bounds" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><h4 class="code-header">pub fn <a href="#method.lower_bounds" class="fn">lower_bounds</a>(&amp;mut self, value: <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 cl [...]
 key field id: 126
 value field id: 127</p>
 <p>Map from column id to lower bound in the column serialized as binary.
@@ -42,7 +42,7 @@ in the column for the file.</p>
 <ul>
 <li><a href="https://iceberg.apache.org/spec/#binary-single-value-serialization">Binary single-value serialization</a></li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.upper_bounds" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><h4 class="code-header">pub fn <a href="#method.upper_bounds" class="fn">upper_bounds</a>(&amp;mut self, value: <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 cla [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.upper_bounds" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><h4 class="code-header">pub fn <a href="#method.upper_bounds" class="fn">upper_bounds</a>(&amp;mut self, value: <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 cl [...]
 key field id: 129
 value field id: 130</p>
 <p>Map from column id to upper bound in the column serialized as binary.
@@ -52,19 +52,19 @@ values in the column for the file.</p>
 <ul>
 <li><a href="https://iceberg.apache.org/spec/#binary-single-value-serialization">Binary single-value serialization</a></li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.key_metadata" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><h4 class="code-header">pub fn <a href="#method.key_metadata" class="fn">key_metadata</a>(&amp;mut self, value: <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-la [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.key_metadata" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><h4 class="code-header">pub fn <a href="#method.key_metadata" class="fn">key_metadata</a>(&amp;mut self, value: <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-l [...]
 <p>Implementation-specific key metadata for encryption</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.split_offsets" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><h4 class="code-header">pub fn <a href="#method.split_offsets" class="fn">split_offsets</a>(&amp;mut self, value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lan [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.split_offsets" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><h4 class="code-header">pub fn <a href="#method.split_offsets" class="fn">split_offsets</a>(&amp;mut self, value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-la [...]
 element field id: 133</p>
 <p>Split offsets for the data file. For example, all row group offsets
 in a Parquet file. Must be sorted ascending</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.equality_ids" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><h4 class="code-header">pub fn <a href="#method.equality_ids" class="fn">equality_ids</a>(&amp;mut self, value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.o [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.equality_ids" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><h4 class="code-header">pub fn <a href="#method.equality_ids" class="fn">equality_ids</a>(&amp;mut self, value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang. [...]
 element field id: 136</p>
 <p>Field ids used to determine row equality in equality delete files.
 Required when content is EqualityDeletes and should be null
 otherwise. Fields with ids listed in this column must be present
 in the delete file</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.sort_order_id" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><h4 class="code-header">pub fn <a href="#method.sort_order_id" class="fn">sort_order_id</a>(&amp;mut self, value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.sort_order_id" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><h4 class="code-header">pub fn <a href="#method.sort_order_id" class="fn">sort_order_id</a>(&amp;mut self, value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitiv [...]
 <p>ID representing sort order for this file.</p>
 <p>If sort order ID is missing or unknown, then the order is assumed to
 be unsorted. Only data files and equality delete files should be
@@ -72,10 +72,10 @@ written with a non-null order id. Position deletes are required to be
 sorted by file and position, not a table order, and should set sort
 order id to null. Readers must ignore sort order id for position
 delete files.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.build" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><h4 class="code-header">pub fn <a href="#method.build" class="fn">build</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.DataFile.html" title="struct iceberg:: [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.build" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><h4 class="code-header">pub fn <a href="#method.build" class="fn">build</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.DataFile.html" title="struct iceberg: [...]
 <h5 id="errors"><a class="doc-anchor" href="#errors">§</a>Errors</h5>
 <p>If a required field has not been initialized.</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-DataFileBuilder" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#989">source</a><a href="#impl-Clone-for-DataFileBuilder" class="anchor">§</a><h3 class="code-head [...]
+</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-DataFileBuilder" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#1012">source</a><a href="#impl-Clone-for-DataFileBuilder" class="anchor">§</a><h3 class="code-hea [...]
     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.Manifest.html b/api/iceberg/spec/struct.Manifest.html
index c407cbe1..2e581e19 100644
--- a/api/iceberg/spec/struct.Manifest.html
+++ b/api/iceberg/spec/struct.Manifest.html
@@ -1,11 +1,11 @@
-<!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="A manifest contains metadata and a list of entries."><title>Manifest in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans [...]
-</div></details><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-Manifest" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#50-114">source</a><a href="#impl-Manifest" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Manifest.html" title="struct iceberg: [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.entries" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#97-99">source</a><h4 class="code-header">pub fn <a href="#method.entries" class="fn">entries</a>(&amp;self) -&gt; &amp;[<a class="type" href="type.ManifestEntryRef.html" title="type iceberg::spec::ManifestEntryRef">ManifestEntryRef</a>]</h4></section></summary><div class="docblock"><p>Entries slice.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.into_parts" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#102-105">source</a><h4 class="code-header">pub fn <a href="#method.into_parts" class="fn">into_parts</a>(self) -&gt; (<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="type" href="type.ManifestEntryRef.html" title="type [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#108-113">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(metadata: <a class="struct" href="struct.ManifestMetadata.html" title="struct iceberg::spec::ManifestMetadata">ManifestMetadata</a>, entries: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.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-Clone-for-Manifest" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#44">source</a><a href="#impl-Clone-for-Manifest" class="anchor">§</a><h3 class="code-header">impl <a cla [...]
+<!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="A manifest contains metadata and a list of entries."><title>Manifest in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans [...]
+</div></details><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-Manifest" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#51-115">source</a><a href="#impl-Manifest" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Manifest.html" title="struct iceberg: [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.entries" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#98-100">source</a><h4 class="code-header">pub fn <a href="#method.entries" class="fn">entries</a>(&amp;self) -&gt; &amp;[<a class="type" href="type.ManifestEntryRef.html" title="type iceberg::spec::ManifestEntryRef">ManifestEntryRef</a>]</h4></section></summary><div class="docblock"><p>Entries slice.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.into_parts" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#103-106">source</a><h4 class="code-header">pub fn <a href="#method.into_parts" class="fn">into_parts</a>(self) -&gt; (<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="type" href="type.ManifestEntryRef.html" title="type [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#109-114">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(metadata: <a class="struct" href="struct.ManifestMetadata.html" title="struct iceberg::spec::ManifestMetadata">ManifestMetadata</a>, entries: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.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-Clone-for-Manifest" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#45">source</a><a href="#impl-Clone-for-Manifest" class="anchor">§</a><h3 class="code-header">impl <a cla [...]
 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><section id="impl-Eq-for-Manifest" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#44">source</a><a href="#impl-Eq-for-Manifest" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Manifest.html" title="struct  [...]
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-Manifest" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#45">source</a><a href="#impl-Eq-for-Manifest" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Manifest.html" title="struct  [...]
     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.ManifestEntry.html b/api/iceberg/spec/struct.ManifestEntry.html
index fc5e2f4c..e9caeb1b 100644
--- a/api/iceberg/spec/struct.ManifestEntry.html
+++ b/api/iceberg/spec/struct.ManifestEntry.html
@@ -1,22 +1,22 @@
-<!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="A manifest is an immutable Avro file that lists data files or delete files, along with each file’s partition data tuple, metrics, and tracking information."><title>ManifestEntry in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML( [...]
+<!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="A manifest is an immutable Avro file that lists data files or delete files, along with each file’s partition data tuple, metrics, and tracking information."><title>ManifestEntry in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML( [...]
 files, along with each file’s partition data tuple, metrics, and tracking
 information.</p>
-</div></details><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-ManifestEntry" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#845">source</a><a href="#impl-ManifestEntry" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.ManifestEntry.html" title="str [...]
+</div></details><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-ManifestEntry" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#868">source</a><a href="#impl-ManifestEntry" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.ManifestEntry.html" title="str [...]
 On the builder, call <code>.status(...)</code>, <code>.snapshot_id(...)</code>(optional), <code>.sequence_number(...)</code>(optional), <code>.file_sequence_number(...)</code>(optional), <code>.data_file(...)</code> to set the values of the fields.
 Finally, call <code>.build()</code> to create the instance of <code>ManifestEntry</code>.</p>
-</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-ManifestEntry-1" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#875-957">source</a><a href="#impl-ManifestEntry-1" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.ManifestEntry.html" title="struct iceberg::spec::ManifestEntry">ManifestEntry</a></h3></section></summary><div class="impl-items"><details class="toggle [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.status" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#885-887">source</a><h4 class="code-header">pub fn <a href="#method.status" class="fn">status</a>(&amp;self) -&gt; <a class="enum" href="enum.ManifestStatus.html" title="enum iceberg::spec::ManifestStatus">ManifestStatus</a></h4></section></summary><div class="docblock"><p>Status of this manifest entry</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.content_type" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#891-893">source</a><h4 class="code-header">pub fn <a href="#method.content_type" class="fn">content_type</a>(&amp;self) -&gt; <a class="enum" href="enum.DataContentType.html" title="enum iceberg::spec::DataContentType">DataContentType</a></h4></section></summary><div class="docblock"><p>Content type of  [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.file_format" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#897-899">source</a><h4 class="code-header">pub fn <a href="#method.file_format" class="fn">file_format</a>(&amp;self) -&gt; <a class="enum" href="enum.DataFileFormat.html" title="enum iceberg::spec::DataFileFormat">DataFileFormat</a></h4></section></summary><div class="docblock"><p>File format of this ma [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.file_path" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#903-905">source</a><h4 class="code-header">pub fn <a href="#method.file_path" class="fn">file_path</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>Data file path of this manifest entry.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.record_count" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#909-911">source</a><h4 class="code-header">pub fn <a href="#method.record_count" class="fn">record_count</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Data file record count of the manife [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.snapshot_id" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#936-938">source</a><h4 class="code-header">pub fn <a href="#method.snapshot_id" class="fn">snapshot_id</a>(&amp;self) -&gt; <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-lan [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.sequence_number" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#942-944">source</a><h4 class="code-header">pub fn <a href="#method.sequence_number" class="fn">sequence_number</a>(&amp;self) -&gt; <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:// [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.file_size_in_bytes" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#948-950">source</a><h4 class="code-header">pub fn <a href="#method.file_size_in_bytes" class="fn">file_size_in_bytes</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>File size in bytes.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.data_file" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#954-956">source</a><h4 class="code-header">pub fn <a href="#method.data_file" class="fn">data_file</a>(&amp;self) -&gt; &amp;<a class="struct" href="struct.DataFile.html" title="struct iceberg::spec::DataFile">DataFile</a></h4></section></summary><div class="docblock"><p>get a reference to the actual data  [...]
-</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-ManifestEntry" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#845">source</a><a href="#impl-Clone-for-ManifestEntry" class="anchor">§</a><h3 class="code-header"> [...]
+</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-ManifestEntry-1" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#898-980">source</a><a href="#impl-ManifestEntry-1" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.ManifestEntry.html" title="struct iceberg::spec::ManifestEntry">ManifestEntry</a></h3></section></summary><div class="impl-items"><details class="toggle [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.status" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#908-910">source</a><h4 class="code-header">pub fn <a href="#method.status" class="fn">status</a>(&amp;self) -&gt; <a class="enum" href="enum.ManifestStatus.html" title="enum iceberg::spec::ManifestStatus">ManifestStatus</a></h4></section></summary><div class="docblock"><p>Status of this manifest entry</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.content_type" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#914-916">source</a><h4 class="code-header">pub fn <a href="#method.content_type" class="fn">content_type</a>(&amp;self) -&gt; <a class="enum" href="enum.DataContentType.html" title="enum iceberg::spec::DataContentType">DataContentType</a></h4></section></summary><div class="docblock"><p>Content type of  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.file_format" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#920-922">source</a><h4 class="code-header">pub fn <a href="#method.file_format" class="fn">file_format</a>(&amp;self) -&gt; <a class="enum" href="enum.DataFileFormat.html" title="enum iceberg::spec::DataFileFormat">DataFileFormat</a></h4></section></summary><div class="docblock"><p>File format of this ma [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.file_path" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#926-928">source</a><h4 class="code-header">pub fn <a href="#method.file_path" class="fn">file_path</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>Data file path of this manifest entry.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.record_count" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#932-934">source</a><h4 class="code-header">pub fn <a href="#method.record_count" class="fn">record_count</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Data file record count of the manife [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.snapshot_id" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#959-961">source</a><h4 class="code-header">pub fn <a href="#method.snapshot_id" class="fn">snapshot_id</a>(&amp;self) -&gt; <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-lan [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.sequence_number" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#965-967">source</a><h4 class="code-header">pub fn <a href="#method.sequence_number" class="fn">sequence_number</a>(&amp;self) -&gt; <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:// [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.file_size_in_bytes" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#971-973">source</a><h4 class="code-header">pub fn <a href="#method.file_size_in_bytes" class="fn">file_size_in_bytes</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>File size in bytes.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.data_file" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#977-979">source</a><h4 class="code-header">pub fn <a href="#method.data_file" class="fn">data_file</a>(&amp;self) -&gt; &amp;<a class="struct" href="struct.DataFile.html" title="struct iceberg::spec::DataFile">DataFile</a></h4></section></summary><div class="docblock"><p>get a reference to the actual data  [...]
+</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-ManifestEntry" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#868">source</a><a href="#impl-Clone-for-ManifestEntry" class="anchor">§</a><h3 class="code-header"> [...]
 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><section id="impl-Eq-for-ManifestEntry" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#845">source</a><a href="#impl-Eq-for-ManifestEntry" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.ManifestEntry.html [...]
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-ManifestEntry" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#868">source</a><a href="#impl-Eq-for-ManifestEntry" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.ManifestEntry.html [...]
     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.ManifestMetadata.html b/api/iceberg/spec/struct.ManifestMetadata.html
index 933c6e9b..a1d1b05b 100644
--- a/api/iceberg/spec/struct.ManifestMetadata.html
+++ b/api/iceberg/spec/struct.ManifestMetadata.html
@@ -1,11 +1,11 @@
-<!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="Meta data of a manifest that is stored in the key-value metadata of the Avro file"><title>ManifestMetadata in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-R [...]
-</div></details><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-ManifestMetadata" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#732">source</a><a href="#impl-ManifestMetadata" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.ManifestMetadata.html" t [...]
+<!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="Meta data of a manifest that is stored in the key-value metadata of the Avro file"><title>ManifestMetadata in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-R [...]
+</div></details><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-ManifestMetadata" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#755">source</a><a href="#impl-ManifestMetadata" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.ManifestMetadata.html" t [...]
 On the builder, call <code>.schema(...)</code>, <code>.schema_id(...)</code>, <code>.partition_spec(...)</code>, <code>.format_version(...)</code>, <code>.content(...)</code> to set the values of the fields.
 Finally, call <code>.build()</code> to create the instance of <code>ManifestMetadata</code>.</p>
-</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-ManifestMetadata-1" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#747-837">source</a><a href="#impl-ManifestMetadata-1" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.ManifestMetadata.html" title="struct iceberg::spec::ManifestMetadata">ManifestMetadata</a></h3></section></summary><div class="impl-items"><detail [...]
-</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-ManifestMetadata" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#732">source</a><a href="#impl-Clone-for-ManifestMetadata" class="anchor">§</a><h3 class="code-he [...]
+</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-ManifestMetadata-1" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#770-860">source</a><a href="#impl-ManifestMetadata-1" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.ManifestMetadata.html" title="struct iceberg::spec::ManifestMetadata">ManifestMetadata</a></h3></section></summary><div class="impl-items"><detail [...]
+</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-ManifestMetadata" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#755">source</a><a href="#impl-Clone-for-ManifestMetadata" class="anchor">§</a><h3 class="code-he [...]
 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><section id="impl-Eq-for-ManifestMetadata" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#732">source</a><a href="#impl-Eq-for-ManifestMetadata" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.ManifestMeta [...]
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-ManifestMetadata" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#755">source</a><a href="#impl-Eq-for-ManifestMetadata" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.ManifestMeta [...]
     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.ManifestWriter.html b/api/iceberg/spec/struct.ManifestWriter.html
index 82e66f82..2fb7b01f 100644
--- a/api/iceberg/spec/struct.ManifestWriter.html
+++ b/api/iceberg/spec/struct.ManifestWriter.html
@@ -1,6 +1,6 @@
-<!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="A manifest writer."><title>ManifestWriter in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.wo [...]
-</div></details><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-ManifestWriter" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#198-355">source</a><a href="#impl-ManifestWriter" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.ManifestWriter.html" tit [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.write" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#236-354">source</a><h4 class="code-header">pub async fn <a href="#method.write" class="fn">write</a>(self, manifest: <a class="struct" href="struct.Manifest.html" title="struct iceberg::spec::Manifest">Manifest</a>) -&gt; <a class="type" href="../type.Result.html" title="type iceberg::Result">Result</a>&lt;<a  [...]
+<!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="A manifest writer."><title>ManifestWriter in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.wo [...]
+</div></details><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-ManifestWriter" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#199-356">source</a><a href="#impl-ManifestWriter" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.ManifestWriter.html" tit [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.write" class="method"><a class="src rightside" href="../../src/iceberg/spec/manifest.rs.html#237-355">source</a><h4 class="code-header">pub async fn <a href="#method.write" class="fn">write</a>(self, manifest: <a class="struct" href="struct.Manifest.html" title="struct iceberg::spec::Manifest">Manifest</a>) -&gt; <a class="type" href="../type.Result.html" title="type iceberg::Result">Result</a>&lt;<a  [...]
 </div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-ManifestWriter" class="impl"><a href="#impl-Freeze-for-ManifestWriter" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Fre [...]
     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:/ [...]
diff --git a/api/iceberg/spec/type.ManifestEntryRef.html b/api/iceberg/spec/type.ManifestEntryRef.html
index 60ff9b1d..d2e525a7 100644
--- a/api/iceberg/spec/type.ManifestEntryRef.html
+++ b/api/iceberg/spec/type.ManifestEntryRef.html
@@ -1,2 +1,2 @@
-<!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="Reference to `ManifestEntry`."><title>ManifestEntryRef in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a78 [...]
+<!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="Reference to `ManifestEntry`."><title>ManifestEntryRef in iceberg::spec - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a78 [...]
 </div></details><h2 id="aliased-type" class="section-header">Aliased Type<a href="#aliased-type" class="anchor">§</a></h2><pre class="rust item-decl"><code>struct ManifestEntryRef { <span class="comment">/* private fields */</span> }</code></pre><script src="../../type.impl/alloc/sync/struct.Arc.js" data-self-path="iceberg::spec::manifest::ManifestEntryRef" async></script></section></div></main></body></html>
\ No newline at end of file
diff --git a/api/search-index.js b/api/search-index.js
index 6232b771..95dd192f 100644
--- a/api/search-index.js
+++ b/api/search-index.js
@@ -1,5 +1,5 @@
 var searchIndex = new Map(JSON.parse('[\
-["iceberg",{"t":"PPPPPKPPPPPFGPPPFFPPPPPPPPPIPPPPPPPPFFFGGPPPFNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMQNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNCNMMMOONCNNOOONOMNNNNNNONOOMOCOONNNNONCOCMNNNNNNNNNNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNCOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFFKRRNNNNNNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNMMMNMHMNNNNNNNHNNNNNNPPPPPPPPFKRGFIPPPPPPPPFPPPPPPPPPGGFPPFPIPPFNNMNNNNNNNNNNNNNNNNNNNNNNNNNN [...]
+["iceberg",{"t":"PPPPPKPPPPPFGPPPFFPPPPPPPPPIPPPPPPPPFFFGGPPPFNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMQNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNCNMMMOONCNNOOONOMNNNNNNONOOMOCOONNNNONCOCMNNNNNNNNNNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNCOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFFKRRNNNNNNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNMMMNMHMNNNNNNNHNNNNNNPPPPPPPPFKRGFIPPPPPPPPFPPPPPPPPPGGFPPFPIPPFNNMNNNNNNNNNNNNNNNNNNNNNNNNNN [...]
 ["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 cc3ea4ce..4a276bff 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/spec/manifest.rs.html b/api/src/iceberg/spec/manifest.rs.html
index 6ff24be7..82af4852 100644
--- a/api/src/iceberg/spec/manifest.rs.html
+++ b/api/src/iceberg/spec/manifest.rs.html
@@ -2337,6 +2337,136 @@
 <a href="#2337" id="2337">2337</a>
 <a href="#2338" id="2338">2338</a>
 <a href="#2339" id="2339">2339</a>
+<a href="#2340" id="2340">2340</a>
+<a href="#2341" id="2341">2341</a>
+<a href="#2342" id="2342">2342</a>
+<a href="#2343" id="2343">2343</a>
+<a href="#2344" id="2344">2344</a>
+<a href="#2345" id="2345">2345</a>
+<a href="#2346" id="2346">2346</a>
+<a href="#2347" id="2347">2347</a>
+<a href="#2348" id="2348">2348</a>
+<a href="#2349" id="2349">2349</a>
+<a href="#2350" id="2350">2350</a>
+<a href="#2351" id="2351">2351</a>
+<a href="#2352" id="2352">2352</a>
+<a href="#2353" id="2353">2353</a>
+<a href="#2354" id="2354">2354</a>
+<a href="#2355" id="2355">2355</a>
+<a href="#2356" id="2356">2356</a>
+<a href="#2357" id="2357">2357</a>
+<a href="#2358" id="2358">2358</a>
+<a href="#2359" id="2359">2359</a>
+<a href="#2360" id="2360">2360</a>
+<a href="#2361" id="2361">2361</a>
+<a href="#2362" id="2362">2362</a>
+<a href="#2363" id="2363">2363</a>
+<a href="#2364" id="2364">2364</a>
+<a href="#2365" id="2365">2365</a>
+<a href="#2366" id="2366">2366</a>
+<a href="#2367" id="2367">2367</a>
+<a href="#2368" id="2368">2368</a>
+<a href="#2369" id="2369">2369</a>
+<a href="#2370" id="2370">2370</a>
+<a href="#2371" id="2371">2371</a>
+<a href="#2372" id="2372">2372</a>
+<a href="#2373" id="2373">2373</a>
+<a href="#2374" id="2374">2374</a>
+<a href="#2375" id="2375">2375</a>
+<a href="#2376" id="2376">2376</a>
+<a href="#2377" id="2377">2377</a>
+<a href="#2378" id="2378">2378</a>
+<a href="#2379" id="2379">2379</a>
+<a href="#2380" id="2380">2380</a>
+<a href="#2381" id="2381">2381</a>
+<a href="#2382" id="2382">2382</a>
+<a href="#2383" id="2383">2383</a>
+<a href="#2384" id="2384">2384</a>
+<a href="#2385" id="2385">2385</a>
+<a href="#2386" id="2386">2386</a>
+<a href="#2387" id="2387">2387</a>
+<a href="#2388" id="2388">2388</a>
+<a href="#2389" id="2389">2389</a>
+<a href="#2390" id="2390">2390</a>
+<a href="#2391" id="2391">2391</a>
+<a href="#2392" id="2392">2392</a>
+<a href="#2393" id="2393">2393</a>
+<a href="#2394" id="2394">2394</a>
+<a href="#2395" id="2395">2395</a>
+<a href="#2396" id="2396">2396</a>
+<a href="#2397" id="2397">2397</a>
+<a href="#2398" id="2398">2398</a>
+<a href="#2399" id="2399">2399</a>
+<a href="#2400" id="2400">2400</a>
+<a href="#2401" id="2401">2401</a>
+<a href="#2402" id="2402">2402</a>
+<a href="#2403" id="2403">2403</a>
+<a href="#2404" id="2404">2404</a>
+<a href="#2405" id="2405">2405</a>
+<a href="#2406" id="2406">2406</a>
+<a href="#2407" id="2407">2407</a>
+<a href="#2408" id="2408">2408</a>
+<a href="#2409" id="2409">2409</a>
+<a href="#2410" id="2410">2410</a>
+<a href="#2411" id="2411">2411</a>
+<a href="#2412" id="2412">2412</a>
+<a href="#2413" id="2413">2413</a>
+<a href="#2414" id="2414">2414</a>
+<a href="#2415" id="2415">2415</a>
+<a href="#2416" id="2416">2416</a>
+<a href="#2417" id="2417">2417</a>
+<a href="#2418" id="2418">2418</a>
+<a href="#2419" id="2419">2419</a>
+<a href="#2420" id="2420">2420</a>
+<a href="#2421" id="2421">2421</a>
+<a href="#2422" id="2422">2422</a>
+<a href="#2423" id="2423">2423</a>
+<a href="#2424" id="2424">2424</a>
+<a href="#2425" id="2425">2425</a>
+<a href="#2426" id="2426">2426</a>
+<a href="#2427" id="2427">2427</a>
+<a href="#2428" id="2428">2428</a>
+<a href="#2429" id="2429">2429</a>
+<a href="#2430" id="2430">2430</a>
+<a href="#2431" id="2431">2431</a>
+<a href="#2432" id="2432">2432</a>
+<a href="#2433" id="2433">2433</a>
+<a href="#2434" id="2434">2434</a>
+<a href="#2435" id="2435">2435</a>
+<a href="#2436" id="2436">2436</a>
+<a href="#2437" id="2437">2437</a>
+<a href="#2438" id="2438">2438</a>
+<a href="#2439" id="2439">2439</a>
+<a href="#2440" id="2440">2440</a>
+<a href="#2441" id="2441">2441</a>
+<a href="#2442" id="2442">2442</a>
+<a href="#2443" id="2443">2443</a>
+<a href="#2444" id="2444">2444</a>
+<a href="#2445" id="2445">2445</a>
+<a href="#2446" id="2446">2446</a>
+<a href="#2447" id="2447">2447</a>
+<a href="#2448" id="2448">2448</a>
+<a href="#2449" id="2449">2449</a>
+<a href="#2450" id="2450">2450</a>
+<a href="#2451" id="2451">2451</a>
+<a href="#2452" id="2452">2452</a>
+<a href="#2453" id="2453">2453</a>
+<a href="#2454" id="2454">2454</a>
+<a href="#2455" id="2455">2455</a>
+<a href="#2456" id="2456">2456</a>
+<a href="#2457" id="2457">2457</a>
+<a href="#2458" id="2458">2458</a>
+<a href="#2459" id="2459">2459</a>
+<a href="#2460" id="2460">2460</a>
+<a href="#2461" id="2461">2461</a>
+<a href="#2462" id="2462">2462</a>
+<a href="#2463" id="2463">2463</a>
+<a href="#2464" id="2464">2464</a>
+<a href="#2465" id="2465">2465</a>
+<a href="#2466" id="2466">2466</a>
+<a href="#2467" id="2467">2467</a>
+<a href="#2468" id="2468">2468</a>
+<a href="#2469" id="2469">2469</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
@@ -2357,6 +2487,7 @@
 </span><span class="doccomment">//! Manifest for Iceberg.
 </span><span class="kw">use </span>std::cmp::min;
 <span class="kw">use </span>std::collections::HashMap;
+<span class="kw">use </span>std::io::{Read, Write};
 <span class="kw">use </span>std::str::FromStr;
 <span class="kw">use </span>std::sync::Arc;
 
@@ -2400,7 +2531,7 @@
 
         <span class="kw">let </span>entries = <span class="kw">match </span>metadata.format_version {
             FormatVersion::V1 =&gt; {
-                <span class="kw">let </span>schema = manifest_schema_v1(partition_type.clone())<span class="question-mark">?</span>;
+                <span class="kw">let </span>schema = manifest_schema_v1(<span class="kw-2">&amp;</span>partition_type)<span class="question-mark">?</span>;
                 <span class="kw">let </span>reader = AvroReader::with_schema(<span class="kw-2">&amp;</span>schema, bs)<span class="question-mark">?</span>;
                 reader
                     .into_iter()
@@ -2411,7 +2542,7 @@
                     .collect::&lt;<span class="prelude-ty">Result</span>&lt;Vec&lt;<span class="kw">_</span>&gt;&gt;&gt;()<span class="question-mark">?
             </span>}
             FormatVersion::V2 =&gt; {
-                <span class="kw">let </span>schema = manifest_schema_v2(partition_type.clone())<span class="question-mark">?</span>;
+                <span class="kw">let </span>schema = manifest_schema_v2(<span class="kw-2">&amp;</span>partition_type)<span class="question-mark">?</span>;
                 <span class="kw">let </span>reader = AvroReader::with_schema(<span class="kw-2">&amp;</span>schema, bs)<span class="question-mark">?</span>;
                 reader
                     .into_iter()
@@ -2580,8 +2711,8 @@
             .partition_type(<span class="kw-2">&amp;</span>manifest.metadata.schema)<span class="question-mark">?</span>;
         <span class="kw">let </span>table_schema = <span class="kw-2">&amp;</span>manifest.metadata.schema;
         <span class="kw">let </span>avro_schema = <span class="kw">match </span>manifest.metadata.format_version {
-            FormatVersion::V1 =&gt; manifest_schema_v1(partition_type.clone())<span class="question-mark">?</span>,
-            FormatVersion::V2 =&gt; manifest_schema_v2(partition_type.clone())<span class="question-mark">?</span>,
+            FormatVersion::V1 =&gt; manifest_schema_v1(<span class="kw-2">&amp;</span>partition_type)<span class="question-mark">?</span>,
+            FormatVersion::V2 =&gt; manifest_schema_v2(<span class="kw-2">&amp;</span>partition_type)<span class="question-mark">?</span>,
         };
         <span class="kw">let </span><span class="kw-2">mut </span>avro_writer = AvroWriter::new(<span class="kw-2">&amp;</span>avro_schema, Vec::new());
         avro_writer.add_user_metadata(
@@ -2995,7 +3126,39 @@
         })
     };
 
-    <span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">fn </span>manifest_schema_v2(partition_type: StructType) -&gt; <span class="prelude-ty">Result</span>&lt;AvroSchema, Error&gt; {
+    <span class="kw">fn </span>data_file_fields_v2(partition_type: <span class="kw-2">&amp;</span>StructType) -&gt; Vec&lt;NestedFieldRef&gt; {
+        <span class="macro">vec!</span>[
+            CONTENT.clone(),
+            FILE_PATH.clone(),
+            FILE_FORMAT.clone(),
+            Arc::new(NestedField::required(
+                <span class="number">102</span>,
+                <span class="string">"partition"</span>,
+                Type::Struct(partition_type.clone()),
+            )),
+            RECORD_COUNT.clone(),
+            FILE_SIZE_IN_BYTES.clone(),
+            COLUMN_SIZES.clone(),
+            VALUE_COUNTS.clone(),
+            NULL_VALUE_COUNTS.clone(),
+            NAN_VALUE_COUNTS.clone(),
+            LOWER_BOUNDS.clone(),
+            UPPER_BOUNDS.clone(),
+            KEY_METADATA.clone(),
+            SPLIT_OFFSETS.clone(),
+            EQUALITY_IDS.clone(),
+            SORT_ORDER_ID.clone(),
+        ]
+    }
+
+    <span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">fn </span>data_file_schema_v2(partition_type: <span class="kw-2">&amp;</span>StructType) -&gt; <span class="prelude-ty">Result</span>&lt;AvroSchema, Error&gt; {
+        <span class="kw">let </span>schema = Schema::builder()
+            .with_fields(data_file_fields_v2(partition_type))
+            .build()<span class="question-mark">?</span>;
+        schema_to_avro_schema(<span class="string">"data_file"</span>, <span class="kw-2">&amp;</span>schema)
+    }
+
+    <span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">fn </span>manifest_schema_v2(partition_type: <span class="kw-2">&amp;</span>StructType) -&gt; <span class="prelude-ty">Result</span>&lt;AvroSchema, Error&gt; {
         <span class="kw">let </span>fields = <span class="macro">vec!</span>[
             STATUS.clone(),
             SNAPSHOT_ID_V2.clone(),
@@ -3004,62 +3167,52 @@
             Arc::new(NestedField::required(
                 <span class="number">2</span>,
                 <span class="string">"data_file"</span>,
-                Type::Struct(StructType::new(<span class="macro">vec!</span>[
-                    CONTENT.clone(),
-                    FILE_PATH.clone(),
-                    FILE_FORMAT.clone(),
-                    Arc::new(NestedField::required(
-                        <span class="number">102</span>,
-                        <span class="string">"partition"</span>,
-                        Type::Struct(partition_type),
-                    )),
-                    RECORD_COUNT.clone(),
-                    FILE_SIZE_IN_BYTES.clone(),
-                    COLUMN_SIZES.clone(),
-                    VALUE_COUNTS.clone(),
-                    NULL_VALUE_COUNTS.clone(),
-                    NAN_VALUE_COUNTS.clone(),
-                    LOWER_BOUNDS.clone(),
-                    UPPER_BOUNDS.clone(),
-                    KEY_METADATA.clone(),
-                    SPLIT_OFFSETS.clone(),
-                    EQUALITY_IDS.clone(),
-                    SORT_ORDER_ID.clone(),
-                ])),
+                Type::Struct(StructType::new(data_file_fields_v2(partition_type))),
             )),
         ];
         <span class="kw">let </span>schema = Schema::builder().with_fields(fields).build()<span class="question-mark">?</span>;
         schema_to_avro_schema(<span class="string">"manifest_entry"</span>, <span class="kw-2">&amp;</span>schema)
     }
 
-    <span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">fn </span>manifest_schema_v1(partition_type: StructType) -&gt; <span class="prelude-ty">Result</span>&lt;AvroSchema, Error&gt; {
+    <span class="kw">fn </span>data_file_fields_v1(partition_type: <span class="kw-2">&amp;</span>StructType) -&gt; Vec&lt;NestedFieldRef&gt; {
+        <span class="macro">vec!</span>[
+            FILE_PATH.clone(),
+            FILE_FORMAT.clone(),
+            Arc::new(NestedField::required(
+                <span class="number">102</span>,
+                <span class="string">"partition"</span>,
+                Type::Struct(partition_type.clone()),
+            )),
+            RECORD_COUNT.clone(),
+            FILE_SIZE_IN_BYTES.clone(),
+            BLOCK_SIZE_IN_BYTES.clone(),
+            COLUMN_SIZES.clone(),
+            VALUE_COUNTS.clone(),
+            NULL_VALUE_COUNTS.clone(),
+            NAN_VALUE_COUNTS.clone(),
+            LOWER_BOUNDS.clone(),
+            UPPER_BOUNDS.clone(),
+            KEY_METADATA.clone(),
+            SPLIT_OFFSETS.clone(),
+            SORT_ORDER_ID.clone(),
+        ]
+    }
+
+    <span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">fn </span>data_file_schema_v1(partition_type: <span class="kw-2">&amp;</span>StructType) -&gt; <span class="prelude-ty">Result</span>&lt;AvroSchema, Error&gt; {
+        <span class="kw">let </span>schema = Schema::builder()
+            .with_fields(data_file_fields_v1(partition_type))
+            .build()<span class="question-mark">?</span>;
+        schema_to_avro_schema(<span class="string">"data_file"</span>, <span class="kw-2">&amp;</span>schema)
+    }
+
+    <span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">fn </span>manifest_schema_v1(partition_type: <span class="kw-2">&amp;</span>StructType) -&gt; <span class="prelude-ty">Result</span>&lt;AvroSchema, Error&gt; {
         <span class="kw">let </span>fields = <span class="macro">vec!</span>[
             STATUS.clone(),
             SNAPSHOT_ID_V1.clone(),
             Arc::new(NestedField::required(
                 <span class="number">2</span>,
                 <span class="string">"data_file"</span>,
-                Type::Struct(StructType::new(<span class="macro">vec!</span>[
-                    FILE_PATH.clone(),
-                    FILE_FORMAT.clone(),
-                    Arc::new(NestedField::required(
-                        <span class="number">102</span>,
-                        <span class="string">"partition"</span>,
-                        Type::Struct(partition_type),
-                    )),
-                    RECORD_COUNT.clone(),
-                    FILE_SIZE_IN_BYTES.clone(),
-                    BLOCK_SIZE_IN_BYTES.clone(),
-                    COLUMN_SIZES.clone(),
-                    VALUE_COUNTS.clone(),
-                    NULL_VALUE_COUNTS.clone(),
-                    NAN_VALUE_COUNTS.clone(),
-                    LOWER_BOUNDS.clone(),
-                    UPPER_BOUNDS.clone(),
-                    KEY_METADATA.clone(),
-                    SPLIT_OFFSETS.clone(),
-                    SORT_ORDER_ID.clone(),
-                ])),
+                Type::Struct(StructType::new(data_file_fields_v1(partition_type))),
             )),
         ];
         <span class="kw">let </span>schema = Schema::builder().with_fields(fields).build()<span class="question-mark">?</span>;
@@ -3528,6 +3681,49 @@
         <span class="self">self</span>.sort_order_id
     }
 }
+
+<span class="doccomment">/// Convert data files to avro bytes and write to writer.
+/// Return the bytes written.
+</span><span class="kw">pub fn </span>write_data_files_to_avro&lt;W: Write&gt;(
+    writer: <span class="kw-2">&amp;mut </span>W,
+    data_files: <span class="kw">impl </span>IntoIterator&lt;Item = DataFile&gt;,
+    partition_type: <span class="kw-2">&amp;</span>StructType,
+    version: FormatVersion,
+) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+    <span class="kw">let </span>avro_schema = <span class="kw">match </span>version {
+        FormatVersion::V1 =&gt; _const_schema::data_file_schema_v1(partition_type).unwrap(),
+        FormatVersion::V2 =&gt; _const_schema::data_file_schema_v2(partition_type).unwrap(),
+    };
+    <span class="kw">let </span><span class="kw-2">mut </span>writer = AvroWriter::new(<span class="kw-2">&amp;</span>avro_schema, writer);
+
+    <span class="kw">for </span>data_file <span class="kw">in </span>data_files {
+        <span class="kw">let </span>value = to_value(_serde::DataFile::try_from(data_file, partition_type, <span class="bool-val">true</span>)<span class="question-mark">?</span>)<span class="question-mark">?
+            </span>.resolve(<span class="kw-2">&amp;</span>avro_schema)<span class="question-mark">?</span>;
+        writer.append(value)<span class="question-mark">?</span>;
+    }
+
+    <span class="prelude-val">Ok</span>(writer.flush()<span class="question-mark">?</span>)
+}
+
+<span class="doccomment">/// Parse data files from avro bytes.
+</span><span class="kw">pub fn </span>read_data_files_from_avro&lt;R: Read&gt;(
+    reader: <span class="kw-2">&amp;mut </span>R,
+    schema: <span class="kw-2">&amp;</span>Schema,
+    partition_type: <span class="kw-2">&amp;</span>StructType,
+    version: FormatVersion,
+) -&gt; <span class="prelude-ty">Result</span>&lt;Vec&lt;DataFile&gt;&gt; {
+    <span class="kw">let </span>avro_schema = <span class="kw">match </span>version {
+        FormatVersion::V1 =&gt; _const_schema::data_file_schema_v1(partition_type).unwrap(),
+        FormatVersion::V2 =&gt; _const_schema::data_file_schema_v2(partition_type).unwrap(),
+    };
+
+    <span class="kw">let </span>reader = AvroReader::with_schema(<span class="kw-2">&amp;</span>avro_schema, reader)<span class="question-mark">?</span>;
+    reader
+        .into_iter()
+        .map(|value| from_value::&lt;_serde::DataFile&gt;(<span class="kw-2">&amp;</span>value<span class="question-mark">?</span>)<span class="question-mark">?</span>.try_into(partition_type, schema))
+        .collect::&lt;<span class="prelude-ty">Result</span>&lt;Vec&lt;<span class="kw">_</span>&gt;&gt;&gt;()
+}
+
 <span class="doccomment">/// Type of content stored by the data file: data, equality deletes, or
 /// position deletes (all v1 files are data files)
 </span><span class="attr">#[derive(Debug, PartialEq, Eq, Clone, Copy, Serialize, Deserialize)]
@@ -3890,6 +4086,7 @@
 <span class="attr">#[cfg(test)]
 </span><span class="kw">mod </span>tests {
     <span class="kw">use </span>std::fs;
+    <span class="kw">use </span>std::io::Cursor;
     <span class="kw">use </span>std::sync::Arc;
 
     <span class="kw">use </span>tempfile::TempDir;
@@ -4675,5 +4872,68 @@
         <span class="comment">// Verify manifest
         </span>(fs::read(path).expect(<span class="string">"read_file must succeed"</span>), res)
     }
+
+    <span class="attr">#[tokio::test]
+    </span><span class="kw">async fn </span>test_data_file_serialize_deserialize() {
+        <span class="kw">let </span>schema = Arc::new(
+            Schema::builder()
+                .with_fields(<span class="macro">vec!</span>[
+                    Arc::new(NestedField::optional(
+                        <span class="number">1</span>,
+                        <span class="string">"v1"</span>,
+                        Type::Primitive(PrimitiveType::Int),
+                    )),
+                    Arc::new(NestedField::optional(
+                        <span class="number">2</span>,
+                        <span class="string">"v2"</span>,
+                        Type::Primitive(PrimitiveType::String),
+                    )),
+                    Arc::new(NestedField::optional(
+                        <span class="number">3</span>,
+                        <span class="string">"v3"</span>,
+                        Type::Primitive(PrimitiveType::String),
+                    )),
+                ])
+                .build()
+                .unwrap(),
+        );
+        <span class="kw">let </span>data_files = <span class="macro">vec!</span>[DataFile {
+            content: DataContentType::Data,
+            file_path: <span class="string">"s3://testbucket/iceberg_data/iceberg_ctl/iceberg_db/iceberg_tbl/data/00000-7-45268d71-54eb-476c-b42c-942d880c04a1-00001.parquet"</span>.to_string(),
+            file_format: DataFileFormat::Parquet,
+            partition: Struct::empty(),
+            record_count: <span class="number">1</span>,
+            file_size_in_bytes: <span class="number">875</span>,
+            column_sizes: HashMap::from([(<span class="number">1</span>,<span class="number">47</span>),(<span class="number">2</span>,<span class="number">48</span>),(<span class="number">3</span>,<span class="number">52</span>)]),
+            value_counts: HashMap::from([(<span class="number">1</span>,<span class="number">1</span>),(<span class="number">2</span>,<span class="number">1</span>),(<span class="number">3</span>,<span class="number">1</span>)]),
+            null_value_counts: HashMap::from([(<span class="number">1</span>,<span class="number">0</span>),(<span class="number">2</span>,<span class="number">0</span>),(<span class="number">3</span>,<span class="number">0</span>)]),
+            nan_value_counts: HashMap::new(),
+            lower_bounds: HashMap::from([(<span class="number">1</span>,Datum::int(<span class="number">1</span>)),(<span class="number">2</span>,Datum::string(<span class="string">"a"</span>)),(<span class="number">3</span>,Datum::string(<span class="string">"AC/DC"</span>))]),
+            upper_bounds: HashMap::from([(<span class="number">1</span>,Datum::int(<span class="number">1</span>)),(<span class="number">2</span>,Datum::string(<span class="string">"a"</span>)),(<span class="number">3</span>,Datum::string(<span class="string">"AC/DC"</span>))]),
+            key_metadata: <span class="prelude-val">None</span>,
+            split_offsets: <span class="macro">vec!</span>[<span class="number">4</span>],
+            equality_ids: <span class="macro">vec!</span>[],
+            sort_order_id: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+        }];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buffer = Vec::new();
+        <span class="kw">let _ </span>= write_data_files_to_avro(
+            <span class="kw-2">&amp;mut </span>buffer,
+            data_files.clone().into_iter(),
+            <span class="kw-2">&amp;</span>StructType::new(<span class="macro">vec!</span>[]),
+            FormatVersion::V2,
+        )
+        .unwrap();
+
+        <span class="kw">let </span>actual_data_file = read_data_files_from_avro(
+            <span class="kw-2">&amp;mut </span>Cursor::new(buffer),
+            <span class="kw-2">&amp;</span>schema,
+            <span class="kw-2">&amp;</span>StructType::new(<span class="macro">vec!</span>[]),
+            FormatVersion::V2,
+        )
+        .unwrap();
+
+        <span class="macro">assert_eq!</span>(data_files, actual_data_file);
+    }
 }
 </code></pre></div></section></main></body></html>
\ No newline at end of file