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 63f4ef78 deploy: 82da82605d41b5f6d0bdc4bfaf74a7e60920d88e
63f4ef78 is described below

commit 63f4ef785ef596eff892425769fd4bbf79f22cfb
Author: Fokko <[email protected]>
AuthorDate: Fri Mar 7 12:57:03 2025 +0000

    deploy: 82da82605d41b5f6d0bdc4bfaf74a7e60920d88e
---
 api/iceberg/spec/enum.FormatVersion.html           | 16 +++---
 api/iceberg/spec/struct.MetadataLog.html           | 10 ++--
 api/iceberg/spec/struct.SnapshotLog.html           | 14 ++---
 api/iceberg/spec/struct.TableMetadata.html         |  4 +-
 api/src/iceberg/spec/table_metadata.rs.html        | 34 ++++++++++++
 .../iceberg/spec/table_metadata_builder.rs.html    | 62 ++++++++++++++++++++++
 6 files changed, 118 insertions(+), 22 deletions(-)

diff --git a/api/iceberg/spec/enum.FormatVersion.html 
b/api/iceberg/spec/enum.FormatVersion.html
index 65da2bbf..71358b9d 100644
--- a/api/iceberg/spec/enum.FormatVersion.html
+++ b/api/iceberg/spec/enum.FormatVersion.html
@@ -1,21 +1,21 @@
-<!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="Iceberg 
format version"><title>FormatVersion 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="Iceberg 
format version"><title>FormatVersion 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
 [...]
     V1 = 1,
     V2 = 2,
 }</code></pre><details class="toggle top-doc" open><summary 
class="hideme"><span>Expand description</span></summary><div 
class="docblock"><p>Iceberg format version</p>
 </div></details><h2 id="variants" class="variants section-header">Variants<a 
href="#variants" class="anchor">§</a></h2><div class="variants"><section 
id="variant.V1" class="variant"><a href="#variant.V1" class="anchor">§</a><h3 
class="code-header">V1 = 1</h3></section><div class="docblock"><p>Iceberg spec 
version 1</p>
 </div><section id="variant.V2" class="variant"><a href="#variant.V2" 
class="anchor">§</a><h3 class="code-header">V2 = 2</h3></section><div 
class="docblock"><p>Iceberg spec version 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-FormatVersion" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#1203">source</a><a 
href="#impl-Clone-for-FormatVersion" class="anchor">§</a><h3 
class="code-header">impl <a class="trai [...]
-    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-Display [...]
+</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Clone-for-FormatVersion" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#1220">source</a><a 
href="#impl-Clone-for-FormatVersion" class="anchor">§</a><h3 
class="code-header">impl <a class="trai [...]
+    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-Display [...]
     H: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"; 
title="trait core::hash::Hasher">Hasher</a>,
-    Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div 
class='docblock'>Feeds a slice of this type into the given <a 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"; 
title="trait core::hash::Hasher"><code>Hasher</code></a>. <a 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice";>Read
 more</a></div></details></div></d [...]
+    Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div 
class='docblock'>Feeds a slice of this type into the given <a 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"; 
title="trait core::hash::Hasher"><code>Hasher</code></a>. <a 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice";>Read
 more</a></div></details></div></d [...]
     Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div 
class='docblock'>Compares and returns the maximum of two values. <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max";>Read
 more</a></div></details><details class="toggle method-toggle" 
open><summary><section id="method.min" class="method trait-impl"><span 
class="rightside"><span class="si [...]
     Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div 
class='docblock'>Compares and returns the minimum of two values. <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min";>Read
 more</a></div></details><details class="toggle method-toggle" 
open><summary><section id="method.clamp" class="method trait-impl"><span 
class="rightside"><span class=" [...]
-    Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a> + <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html"; 
title="trait 
core::cmp::PartialOrd">PartialOrd</a>,</div></h4></section></summary><div 
class='docblock'>Restrict a value to a certain interval. <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp";>Read
 more</a></div></details></div> [...]
+    Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a> + <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html"; 
title="trait 
core::cmp::PartialOrd">PartialOrd</a>,</div></h4></section></summary><div 
class='docblock'>Restrict a value to a certain interval. <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp";>Read
 more</a></div></details></div> [...]
 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-PartialOrd-for-FormatVersion" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#1213-1217">source</a><a 
href="#impl-PartialOrd-for-FormatVersion" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd. [...]
+sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section 
id="impl-PartialOrd-for-FormatVersion" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#1230-1234">source</a><a 
href="#impl-PartialOrd-for-FormatVersion" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd. [...]
 operator. <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le";>Read
 more</a></div></details><details class="toggle method-toggle" 
open><summary><section id="method.gt" 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#1215";>source</a></span><a
 href="#method.gt" class="anchor">§</a><h4 class="code-header">fn  [...]
-operator. <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section 
id="impl-Serialize-for-FormatVersion" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#1203">source</a><a 
href="#impl-Serialize-for-FormatVersion" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0 [...]
-    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-FormatVersion" class="impl"><a class="src rightside" 
href="../../src/iceberg/s [...]
+operator. <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section 
id="impl-Serialize-for-FormatVersion" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#1220">source</a><a 
href="#impl-Serialize-for-FormatVersion" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0 [...]
+    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-FormatVersion" class="impl"><a class="src rightside" 
href="../../src/iceberg/s [...]
     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.MetadataLog.html 
b/api/iceberg/spec/struct.MetadataLog.html
index 54116ecf..0071630e 100644
--- a/api/iceberg/spec/struct.MetadataLog.html
+++ b/api/iceberg/spec/struct.MetadataLog.html
@@ -1,14 +1,14 @@
-<!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="Encodes 
changes to the previous metadata files for the table"><title>MetadataLog in 
iceberg::spec - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.wo
 [...]
+<!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="Encodes 
changes to the previous metadata files for the table"><title>MetadataLog in 
iceberg::spec - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.wo
 [...]
     pub metadata_file: <a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a>,
     pub timestamp_ms: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a>,
 }</code></pre><details class="toggle top-doc" open><summary 
class="hideme"><span>Expand description</span></summary><div 
class="docblock"><p>Encodes changes to the previous metadata files for the 
table</p>
 </div></details><h2 id="fields" class="fields section-header">Fields<a 
href="#fields" class="anchor">§</a></h2><span id="structfield.metadata_file" 
class="structfield section-header"><a href="#structfield.metadata_file" 
class="anchor field">§</a><code>metadata_file: <a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a></code></span><div 
class="docblock"><p>The file for the log.</p>
 </div><span id="structfield.timestamp_ms" class="structfield 
section-header"><a href="#structfield.timestamp_ms" class="anchor 
field">§</a><code>timestamp_ms: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a></code></span><div
 class="docblock"><p>Time new metadata was created</p>
-</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-MetadataLog" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#1234">source</a><a 
href="#impl-Clone-for-MetadataLog" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" href="h [...]
-    __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><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-MetadataLog" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#1251">source</a><a 
href="#impl-Clone-for-MetadataLog" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" href="h [...]
+    __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-MetadataLog" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#1234">source</a><a 
href="#impl-Serialize-for-MetadataLog" 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 
[...]
-    __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-Eq-for-MetadataLog" 
class="impl"><a class="src rightside" href="../../src/iceberg/spe [...]
+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-MetadataLog" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#1251">source</a><a 
href="#impl-Serialize-for-MetadataLog" 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 
[...]
+    __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-Eq-for-MetadataLog" 
class="impl"><a class="src rightside" href="../../src/iceberg/spe [...]
     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.SnapshotLog.html 
b/api/iceberg/spec/struct.SnapshotLog.html
index fa4b18d9..19117d87 100644
--- a/api/iceberg/spec/struct.SnapshotLog.html
+++ b/api/iceberg/spec/struct.SnapshotLog.html
@@ -1,16 +1,16 @@
-<!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 log of 
when each snapshot was made."><title>SnapshotLog 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-8f9
 [...]
+<!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 log of 
when each snapshot was made."><title>SnapshotLog 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-8f9
 [...]
     pub snapshot_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a>,
     pub timestamp_ms: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a>,
 }</code></pre><details class="toggle top-doc" open><summary 
class="hideme"><span>Expand description</span></summary><div 
class="docblock"><p>A log of when each snapshot was made.</p>
 </div></details><h2 id="fields" class="fields section-header">Fields<a 
href="#fields" class="anchor">§</a></h2><span id="structfield.snapshot_id" 
class="structfield section-header"><a href="#structfield.snapshot_id" 
class="anchor field">§</a><code>snapshot_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a></code></span><div
 class="docblock"><p>Id of the snapshot.</p>
 </div><span id="structfield.timestamp_ms" class="structfield 
section-header"><a href="#structfield.timestamp_ms" class="anchor 
field">§</a><code>timestamp_ms: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a></code></span><div
 class="docblock"><p>Last updated timestamp</p>
-</div><h2 id="implementations" class="section-header">Implementations<a 
href="#implementations" class="anchor">§</a></h2><div 
id="implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-SnapshotLog" class="impl"><a class="src 
rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#1254-1265">source</a><a 
href="#impl-SnapshotLog" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.SnapshotLog.html" title="struct  [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.timestamp_ms" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#1262-1264">source</a><h4 
class="code-header">pub fn <a href="#method.timestamp_ms" 
class="fn">timestamp_ms</a>(&amp;self) -&gt; <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a></h4></section></summary><div
 class="docblock"><p>Returns the timestamp in mil [...]
-</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-SnapshotLog" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#1244">source</a><a 
href="#impl-Clone-for-SnapshotLog" class="anchor">§</a><h3 class="code-heade 
[...]
-    __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><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-SnapshotLog" class="impl"><a class="src 
rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#1271-1282">source</a><a 
href="#impl-SnapshotLog" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.SnapshotLog.html" title="struct  [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.timestamp_ms" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#1279-1281">source</a><h4 
class="code-header">pub fn <a href="#method.timestamp_ms" 
class="fn">timestamp_ms</a>(&amp;self) -&gt; <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a></h4></section></summary><div
 class="docblock"><p>Returns the timestamp in mil [...]
+</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-SnapshotLog" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#1261">source</a><a 
href="#impl-Clone-for-SnapshotLog" class="anchor">§</a><h3 class="code-heade 
[...]
+    __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-SnapshotLog" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#1244">source</a><a 
href="#impl-Serialize-for-SnapshotLog" 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 
[...]
-    __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-Eq-for-SnapshotLog" 
class="impl"><a class="src rightside" href="../../src/iceberg/spe [...]
+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-SnapshotLog" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#1261">source</a><a 
href="#impl-Serialize-for-SnapshotLog" 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 
[...]
+    __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-Eq-for-SnapshotLog" 
class="impl"><a class="src rightside" href="../../src/iceberg/spe [...]
     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.TableMetadata.html 
b/api/iceberg/spec/struct.TableMetadata.html
index d1bdc756..341699a9 100644
--- a/api/iceberg/spec/struct.TableMetadata.html
+++ b/api/iceberg/spec/struct.TableMetadata.html
@@ -1,7 +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="Fields for 
the version 2 of the table metadata."><title>TableMetadata in iceberg::spec - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSan
 [...]
 <p>We assume that this data structure is always valid, so we will panic when 
invalid error happens.
 We check the validity of this data structure when constructing.</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-TableMetadata" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#176-629">source</a><a 
href="#impl-TableMetadata" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.TableMetadata.html"  [...]
+</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-TableMetadata" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#176-646">source</a><a 
href="#impl-TableMetadata" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.TableMetadata.html"  [...]
     self,
     current_file_location: <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::option::Option">Option</a>&lt;<a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a>&gt;,
 ) -&gt; <a class="struct" href="struct.TableMetadataBuilder.html" 
title="struct 
iceberg::spec::TableMetadataBuilder">TableMetadataBuilder</a></h4></section></summary><div
 class="docblock"><p>Convert this Table Metadata into a builder for 
modification.</p>
@@ -58,7 +58,7 @@ Returns an option if the <code>ref_name</code> is not 
found</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-TableMetadata" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#100">source</a><a 
href="#impl-Clone-for-TableMetadata" class="anchor">§</a><h3 class="code-he 
[...]
     __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-From% [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
-sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section 
id="impl-Serialize-for-TableMetadata" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#745-754">source</a><a 
href="#impl-Serialize-for-TableMetadata" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serialize.html"; ti [...]
+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-TableMetadata" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/table_metadata.rs.html#762-771">source</a><a 
href="#impl-Serialize-for-TableMetadata" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serialize.html"; ti [...]
     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-Eq-for-TableMetadata" class="impl"><a class="src rightside" 
href="../../src/iceberg/spe [...]
     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/src/iceberg/spec/table_metadata.rs.html 
b/api/src/iceberg/spec/table_metadata.rs.html
index f9c8c3a1..f4e074d0 100644
--- a/api/src/iceberg/spec/table_metadata.rs.html
+++ b/api/src/iceberg/spec/table_metadata.rs.html
@@ -2775,6 +2775,23 @@
 <a href="#2775" id="2775">2775</a>
 <a href="#2776" id="2776">2776</a>
 <a href="#2777" id="2777">2777</a>
+<a href="#2778" id="2778">2778</a>
+<a href="#2779" id="2779">2779</a>
+<a href="#2780" id="2780">2780</a>
+<a href="#2781" id="2781">2781</a>
+<a href="#2782" id="2782">2782</a>
+<a href="#2783" id="2783">2783</a>
+<a href="#2784" id="2784">2784</a>
+<a href="#2785" id="2785">2785</a>
+<a href="#2786" id="2786">2786</a>
+<a href="#2787" id="2787">2787</a>
+<a href="#2788" id="2788">2788</a>
+<a href="#2789" id="2789">2789</a>
+<a href="#2790" id="2790">2790</a>
+<a href="#2791" id="2791">2791</a>
+<a href="#2792" id="2792">2792</a>
+<a href="#2793" id="2793">2793</a>
+<a href="#2794" id="2794">2794</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
@@ -3202,6 +3219,22 @@
             .insert(snapshot.snapshot_id(), Arc::new(snapshot));
     }
 
+    <span class="kw">fn </span>construct_refs(<span class="kw-2">&amp;mut 
</span><span class="self">self</span>) {
+        <span class="kw">if let </span><span 
class="prelude-val">Some</span>(current_snapshot_id) = <span 
class="self">self</span>.current_snapshot_id {
+            <span class="kw">if </span>!<span 
class="self">self</span>.refs.contains_key(MAIN_BRANCH) {
+                <span class="self">self</span>.refs
+                    .insert(MAIN_BRANCH.to_string(), SnapshotReference {
+                        snapshot_id: current_snapshot_id,
+                        retention: SnapshotRetention::Branch {
+                            min_snapshots_to_keep: <span 
class="prelude-val">None</span>,
+                            max_snapshot_age_ms: <span 
class="prelude-val">None</span>,
+                            max_ref_age_ms: <span 
class="prelude-val">None</span>,
+                        },
+                    });
+            }
+        }
+    }
+
     <span class="doccomment">/// Normalize this partition spec.
     ///
     /// This is an internal method
@@ -3212,6 +3245,7 @@
     </span><span class="kw">pub</span>(<span class="kw">super</span>) <span 
class="kw">fn </span>try_normalize(<span class="kw-2">&amp;mut </span><span 
class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;<span 
class="kw-2">&amp;mut </span><span class="self">Self</span>&gt; {
         <span class="self">self</span>.validate_current_schema()<span 
class="question-mark">?</span>;
         <span class="self">self</span>.normalize_current_snapshot()<span 
class="question-mark">?</span>;
+        <span class="self">self</span>.construct_refs();
         <span class="self">self</span>.validate_refs()<span 
class="question-mark">?</span>;
         <span 
class="self">self</span>.validate_chronological_snapshot_logs()<span 
class="question-mark">?</span>;
         <span 
class="self">self</span>.validate_chronological_metadata_logs()<span 
class="question-mark">?</span>;
diff --git a/api/src/iceberg/spec/table_metadata_builder.rs.html 
b/api/src/iceberg/spec/table_metadata_builder.rs.html
index 63e6517d..7902170f 100644
--- a/api/src/iceberg/spec/table_metadata_builder.rs.html
+++ b/api/src/iceberg/spec/table_metadata_builder.rs.html
@@ -2382,6 +2382,37 @@
 <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>
 </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
@@ -3604,14 +3635,19 @@
 
 <span class="attr">#[cfg(test)]
 </span><span class="kw">mod </span>tests {
+    <span class="kw">use </span>std::fs::File;
+    <span class="kw">use </span>std::io::BufReader;
     <span class="kw">use </span>std::thread::sleep;
 
     <span class="kw">use super</span>::<span class="kw-2">*</span>;
+    <span class="kw">use </span><span 
class="kw">crate</span>::io::FileIOBuilder;
     <span class="kw">use </span><span class="kw">crate</span>::spec::{
         BlobMetadata, NestedField, NullOrder, Operation, PartitionSpec, 
PrimitiveType, Schema,
         SnapshotRetention, SortDirection, SortField, StructType, Summary, 
Transform, Type,
         UnboundPartitionField,
     };
+    <span class="kw">use </span><span class="kw">crate</span>::table::Table;
+    <span class="kw">use </span><span class="kw">crate</span>::TableIdent;
 
     <span class="kw">const </span>TEST_LOCATION: <span 
class="kw-2">&amp;</span>str = <span 
class="string">"s3://bucket/test/location"</span>;
     <span class="kw">const </span>LAST_ASSIGNED_COLUMN_ID: i32 = <span 
class="number">3</span>;
@@ -4765,5 +4801,31 @@
             last_updated_ms
         );
     }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_construct_default_main_branch() {
+        <span class="comment">// Load the table without ref
+        </span><span class="kw">let </span>file = File::open(<span 
class="macro">format!</span>(
+            <span class="string">"{}/testdata/table_metadata/{}"</span>,
+            <span class="macro">env!</span>(<span 
class="string">"CARGO_MANIFEST_DIR"</span>),
+            <span class="string">"TableMetadataV2Valid.json"
+        </span>))
+        .unwrap();
+        <span class="kw">let </span>reader = BufReader::new(file);
+        <span class="kw">let </span>resp = serde_json::from_reader::&lt;<span 
class="kw">_</span>, TableMetadata&gt;(reader).unwrap();
+
+        <span class="kw">let </span>table = Table::builder()
+            .metadata(resp)
+            .metadata_location(<span 
class="string">"s3://bucket/test/location/metadata/v1.json"</span>.to_string())
+            .identifier(TableIdent::from_strs([<span 
class="string">"ns1"</span>, <span class="string">"test1"</span>]).unwrap())
+            .file_io(FileIOBuilder::new(<span 
class="string">"memory"</span>).build().unwrap())
+            .build()
+            .unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            table.metadata().refs.get(MAIN_BRANCH).unwrap().snapshot_id,
+            table.metadata().current_snapshot_id().unwrap()
+        );
+    }
 }
 </code></pre></div></section></main></body></html>
\ No newline at end of file


Reply via email to