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 0692e0bb deploy: 11e36c0ae635aac57471f82f9e7e0c12e587aa22
0692e0bb is described below

commit 0692e0bb4cd92f338602446ede76db3cfcebec6b
Author: liurenjie1024 <[email protected]>
AuthorDate: Fri Oct 25 09:42:37 2024 +0000

    deploy: 11e36c0ae635aac57471f82f9e7e0c12e587aa22
---
 api/iceberg/scan/index.html                        |  2 +-
 api/iceberg/scan/struct.FileScanTask.html          | 20 ++---
 api/iceberg/scan/struct.TableScan.html             | 12 +--
 api/iceberg/scan/struct.TableScanBuilder.html      | 21 ++---
 api/search-index.js                                |  2 +-
 api/search.desc/iceberg/iceberg-desc-0-.js         |  2 +-
 .../iceberg/arrow/record_batch_transformer.rs.html | 36 +++------
 api/src/iceberg/scan.rs.html                       | 92 ++++++++++++++++++----
 8 files changed, 116 insertions(+), 71 deletions(-)

diff --git a/api/iceberg/scan/index.html b/api/iceberg/scan/index.html
index 44c0a1c5..2de90b3c 100644
--- a/api/iceberg/scan/index.html
+++ b/api/iceberg/scan/index.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="Table scan 
api."><title>iceberg::scan - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Reg
 [...]
+<!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="Table scan 
api."><title>iceberg::scan - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Reg
 [...]
 </div></details><h2 id="structs" class="section-header">Structs<a 
href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div 
class="item-name"><a class="struct" href="struct.FileScanTask.html" 
title="struct iceberg::scan::FileScanTask">FileScanTask</a></div><div 
class="desc docblock-short">A task to scan part of file.</div></li><li><div 
class="item-name"><a class="struct" href="struct.TableScan.html" title="struct 
iceberg::scan::TableScan">TableScan</a></div><div class="des [...]
\ No newline at end of file
diff --git a/api/iceberg/scan/struct.FileScanTask.html 
b/api/iceberg/scan/struct.FileScanTask.html
index 62010df8..b0d38f39 100644
--- a/api/iceberg/scan/struct.FileScanTask.html
+++ b/api/iceberg/scan/struct.FileScanTask.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="A task to 
scan part of file."><title>FileScanTask in iceberg::scan - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e497
 [...]
+<!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 task to 
scan part of file."><title>FileScanTask in iceberg::scan - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e497
 [...]
     pub start: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.u64.html";>u64</a>,
     pub length: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.u64.html";>u64</a>,
     pub record_count: <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::option::Option">Option</a>&lt;<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.u64.html";>u64</a>&gt;,
@@ -20,16 +20,16 @@ reading the entire data file.</p>
 </div><span id="structfield.schema" class="structfield section-header"><a 
href="#structfield.schema" class="anchor field">§</a><code>schema: <a 
class="type" href="../spec/type.SchemaRef.html" title="type 
iceberg::spec::SchemaRef">SchemaRef</a></code></span><div 
class="docblock"><p>The schema of the file to scan.</p>
 </div><span id="structfield.project_field_ids" class="structfield 
section-header"><a href="#structfield.project_field_ids" class="anchor 
field">§</a><code>project_field_ids: <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.org/nightly/std/primitive.i32.html";>i32</a>&gt;</code></span><div
 class="docblock"><p>The field ids to project.</p>
 </div><span id="structfield.predicate" class="structfield section-header"><a 
href="#structfield.predicate" class="anchor field">§</a><code>predicate: <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="enum" 
href="../expr/enum.BoundPredicate.html" title="enum 
iceberg::expr::BoundPredicate">BoundPredicate</a>&gt;</code></span><div 
class="docblock"><p>The predicate to filter.</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-FileScanTask" class="impl"><a class="src 
rightside" href="../../src/iceberg/scan.rs.html#909-934">source</a><a 
href="#impl-FileScanTask" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.FileScanTask.html" title="struct iceberg::scan: 
[...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.project_field_ids" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#916-918">source</a><h4 
class="code-header">pub fn <a href="#method.project_field_ids" 
class="fn">project_field_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>Returns the project fie [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.predicate" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#921-923">source</a><h4 
class="code-header">pub fn <a href="#method.predicate" 
class="fn">predicate</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="enum" 
href="../expr/enum.BoundPredicate.html" t [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.schema" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#926-928">source</a><h4 
class="code-header">pub fn <a href="#method.schema" 
class="fn">schema</a>(&amp;self) -&gt; &amp;<a class="struct" 
href="../spec/struct.Schema.html" title="struct 
iceberg::spec::Schema">Schema</a></h4></section></summary><div 
class="docblock"><p>Returns the schema of this file scan task as a refe [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.schema_ref" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#931-933">source</a><h4 
class="code-header">pub fn <a href="#method.schema_ref" 
class="fn">schema_ref</a>(&amp;self) -&gt; <a class="type" 
href="../spec/type.SchemaRef.html" title="type 
iceberg::spec::SchemaRef">SchemaRef</a></h4></section></summary><div 
class="docblock"><p>Returns the schema of this file scan task [...]
-</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-FileScanTask" class="impl"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#881">source</a><a 
href="#impl-Clone-for-FileScanTask" class="anchor">§</a><h3 
class="code-header">impl <a cla [...]
-    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.213/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.213/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-FileScanTask" class="impl"><a class="src 
rightside" href="../../src/iceberg/scan.rs.html#927-952">source</a><a 
href="#impl-FileScanTask" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.FileScanTask.html" title="struct iceberg::scan: 
[...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.project_field_ids" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#934-936">source</a><h4 
class="code-header">pub fn <a href="#method.project_field_ids" 
class="fn">project_field_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>Returns the project fie [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.predicate" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#939-941">source</a><h4 
class="code-header">pub fn <a href="#method.predicate" 
class="fn">predicate</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="enum" 
href="../expr/enum.BoundPredicate.html" t [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.schema" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#944-946">source</a><h4 
class="code-header">pub fn <a href="#method.schema" 
class="fn">schema</a>(&amp;self) -&gt; &amp;<a class="struct" 
href="../spec/struct.Schema.html" title="struct 
iceberg::spec::Schema">Schema</a></h4></section></summary><div 
class="docblock"><p>Returns the schema of this file scan task as a refe [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.schema_ref" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#949-951">source</a><h4 
class="code-header">pub fn <a href="#method.schema_ref" 
class="fn">schema_ref</a>(&amp;self) -&gt; <a class="type" 
href="../spec/type.SchemaRef.html" title="type 
iceberg::spec::SchemaRef">SchemaRef</a></h4></section></summary><div 
class="docblock"><p>Returns the schema of this file scan task [...]
+</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-FileScanTask" class="impl"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#899">source</a><a 
href="#impl-Clone-for-FileScanTask" class="anchor">§</a><h3 
class="code-header">impl <a cla [...]
+    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.213/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.213/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-FileScanTask" class="impl"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#881">source</a><a 
href="#impl-Serialize-for-FileScanTask" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.213/serde/ser/trait.Serialize.html"; 
title="trait serde::ser [...]
-    __S: <a class="trait" 
href="https://docs.rs/serde/1.0.213/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.213/serde/ser/trait.Serialize.html#tymethod.serialize";>Read
 more</a></div></details></div></details><section 
id="impl-StructuralPartialEq-for-FileScanTask" class="impl"><a class="src 
rightside" href="../ [...]
+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-FileScanTask" class="impl"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#899">source</a><a 
href="#impl-Serialize-for-FileScanTask" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.213/serde/ser/trait.Serialize.html"; 
title="trait serde::ser [...]
+    __S: <a class="trait" 
href="https://docs.rs/serde/1.0.213/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.213/serde/ser/trait.Serialize.html#tymethod.serialize";>Read
 more</a></div></details></div></details><section 
id="impl-StructuralPartialEq-for-FileScanTask" class="impl"><a class="src 
rightside" href="../ [...]
     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/scan/struct.TableScan.html 
b/api/iceberg/scan/struct.TableScan.html
index 0c429a13..23966703 100644
--- a/api/iceberg/scan/struct.TableScan.html
+++ b/api/iceberg/scan/struct.TableScan.html
@@ -1,9 +1,9 @@
-<!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="Table 
scan."><title>TableScan in iceberg::scan - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCo
 [...]
-</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-TableScan" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/scan.rs.html#336-477">source</a><a 
href="#impl-TableScan" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.TableScan.html" title="struct iceberg::scan [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.to_arrow" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#398-409">source</a><h4 
class="code-header">pub async fn <a href="#method.to_arrow" 
class="fn">to_arrow</a>(&amp;self) -&gt; <a class="type" 
href="../type.Result.html" title="type iceberg::Result">Result</a>&lt;<a 
class="type" href="type.ArrowRecordBatchStream.html" title="type 
iceberg::scan::ArrowRecordBatchStream"> [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.column_names" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#412-414">source</a><h4 
class="code-header">pub fn <a href="#method.column_names" 
class="fn">column_names</a>(&amp;self) -&gt; &amp;[<a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a>]</h4></section></summary><div 
class="docbl [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.snapshot" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#416-418">source</a><h4 
class="code-header">pub fn <a href="#method.snapshot" 
class="fn">snapshot</a>(&amp;self) -&gt; &amp;<a class="type" 
href="../spec/type.SnapshotRef.html" title="type 
iceberg::spec::SnapshotRef">SnapshotRef</a></h4></section></summary><div 
class="docblock"><p>Returns a reference to the snapshot  [...]
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Debug-for-TableScan" class="impl"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#295">source</a><a 
href="#impl-Debug-for-TableScan" class="anchor">§</a><h3 
class="code-header">impl <a class="tr [...]
+<!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="Table 
scan."><title>TableScan in iceberg::scan - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCo
 [...]
+</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-TableScan" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/scan.rs.html#353-495">source</a><a 
href="#impl-TableScan" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.TableScan.html" title="struct iceberg::scan [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.to_arrow" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#415-426">source</a><h4 
class="code-header">pub async fn <a href="#method.to_arrow" 
class="fn">to_arrow</a>(&amp;self) -&gt; <a class="type" 
href="../type.Result.html" title="type iceberg::Result">Result</a>&lt;<a 
class="type" href="type.ArrowRecordBatchStream.html" title="type 
iceberg::scan::ArrowRecordBatchStream"> [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.column_names" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#429-431">source</a><h4 
class="code-header">pub fn <a href="#method.column_names" 
class="fn">column_names</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="struct" 
href="https://doc.rust-lang.o [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.snapshot" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#434-436">source</a><h4 
class="code-header">pub fn <a href="#method.snapshot" 
class="fn">snapshot</a>(&amp;self) -&gt; &amp;<a class="type" 
href="../spec/type.SnapshotRef.html" title="type 
iceberg::spec::SnapshotRef">SnapshotRef</a></h4></section></summary><div 
class="docblock"><p>Returns a reference to the snapshot  [...]
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Debug-for-TableScan" class="impl"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#312">source</a><a 
href="#impl-Debug-for-TableScan" class="anchor">§</a><h3 
class="code-header">impl <a class="tr [...]
     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/scan/struct.TableScanBuilder.html 
b/api/iceberg/scan/struct.TableScanBuilder.html
index dd91daea..4f03f7bf 100644
--- a/api/iceberg/scan/struct.TableScanBuilder.html
+++ b/api/iceberg/scan/struct.TableScanBuilder.html
@@ -1,19 +1,20 @@
-<!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 to 
create table scan."><title>TableScanBuilder in iceberg::scan - 
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="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-TableScanBuilder%3C'a%3E" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#67-292">source</a><a 
href="#impl-TableScanBuilder%3C'a%3E" class="anchor">§</a><h3 
class="code-header">impl&lt;'a&gt; <a class="struct" href="struct.Tabl [...]
+<!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 to 
create table scan."><title>TableScanBuilder in iceberg::scan - 
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="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-TableScanBuilder%3C'a%3E" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#67-309">source</a><a 
href="#impl-TableScanBuilder%3C'a%3E" class="anchor">§</a><h3 
class="code-header">impl&lt;'a&gt; <a class="struct" href="struct.Tabl [...]
 to something other than the default</p>
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.with_case_sensitive" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#94-97">source</a><h4 
class="code-header">pub fn <a href="#method.with_case_sensitive" 
class="fn">with_case_sensitive</a>(self, case_sensitive: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.bool.html";>bool</a>) 
-&gt; Self</h4></section></summary><div class="docblock"><p>Sets th [...]
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.with_filter" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#100-105">source</a><h4 
class="code-header">pub fn <a href="#method.with_filter" 
class="fn">with_filter</a>(self, predicate: <a class="enum" 
href="../expr/enum.Predicate.html" title="enum 
iceberg::expr::Predicate">Predicate</a>) -&gt; 
Self</h4></section></summary><div class="docblock"><p>Specifies a predicate to 
u [...]
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.select_all" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#108-111">source</a><h4 
class="code-header">pub fn <a href="#method.select_all" 
class="fn">select_all</a>(self) -&gt; Self</h4></section></summary><div 
class="docblock"><p>Select all columns.</p>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.select" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#114-120">source</a><h4 
class="code-header">pub fn <a href="#method.select" class="fn">select</a>(
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.select_empty" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#114-117">source</a><h4 
class="code-header">pub fn <a href="#method.select_empty" 
class="fn">select_empty</a>(self) -&gt; Self</h4></section></summary><div 
class="docblock"><p>Select empty columns.</p>
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.select" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#120-128">source</a><h4 
class="code-header">pub fn <a href="#method.select" class="fn">select</a>(
     self,
     column_names: 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 = impl <a 
class="trait" 
href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html"; 
title="trait alloc::string::ToString">ToString</a>&gt;,
 ) -&gt; Self</h4></section></summary><div class="docblock"><p>Select some 
columns of the table.</p>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.snapshot_id" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#123-126">source</a><h4 
class="code-header">pub fn <a href="#method.snapshot_id" 
class="fn">snapshot_id</a>(self, snapshot_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a>) -&gt; 
Self</h4></section></summary><div class="docblock"><p>Set the snapshot to scan. 
When not [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.with_concurrency_limit" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#130-135">source</a><h4 
class="code-header">pub fn <a href="#method.with_concurrency_limit" 
class="fn">with_concurrency_limit</a>(self, limit: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.usize.html";>usize</a>) 
-&gt; Self</h4></section></summary><div class="docblock"><p>Set [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.snapshot_id" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#131-134">source</a><h4 
class="code-header">pub fn <a href="#method.snapshot_id" 
class="fn">snapshot_id</a>(self, snapshot_id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a>) -&gt; 
Self</h4></section></summary><div class="docblock"><p>Set the snapshot to scan. 
When not [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.with_concurrency_limit" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#138-143">source</a><h4 
class="code-header">pub fn <a href="#method.with_concurrency_limit" 
class="fn">with_concurrency_limit</a>(self, limit: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.usize.html";>usize</a>) 
-&gt; Self</h4></section></summary><div class="docblock"><p>Set [...]
 entries for this scan</p>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.with_data_file_concurrency_limit" class="method"><a class="src 
rightside" href="../../src/iceberg/scan.rs.html#138-141">source</a><h4 
class="code-header">pub fn <a href="#method.with_data_file_concurrency_limit" 
class="fn">with_data_file_concurrency_limit</a>(self, limit: <a 
class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.usize.html";>usize</a>) 
-&gt; Self</h4></section></summar [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.with_manifest_entry_concurrency_limit" class="method"><a class="src 
rightside" href="../../src/iceberg/scan.rs.html#144-147">source</a><h4 
class="code-header">pub fn <a 
href="#method.with_manifest_entry_concurrency_limit" 
class="fn">with_manifest_entry_concurrency_limit</a>(self, limit: <a 
class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.usize.html";>usize</a>) 
-&gt; Self</h4></s [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.with_row_group_filtering_enabled" class="method"><a class="src 
rightside" href="../../src/iceberg/scan.rs.html#157-160">source</a><h4 
class="code-header">pub fn <a href="#method.with_row_group_filtering_enabled" 
class="fn">with_row_group_filtering_enabled</a>(
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.with_data_file_concurrency_limit" class="method"><a class="src 
rightside" href="../../src/iceberg/scan.rs.html#146-149">source</a><h4 
class="code-header">pub fn <a href="#method.with_data_file_concurrency_limit" 
class="fn">with_data_file_concurrency_limit</a>(self, limit: <a 
class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.usize.html";>usize</a>) 
-&gt; Self</h4></section></summar [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.with_manifest_entry_concurrency_limit" class="method"><a class="src 
rightside" href="../../src/iceberg/scan.rs.html#152-155">source</a><h4 
class="code-header">pub fn <a 
href="#method.with_manifest_entry_concurrency_limit" 
class="fn">with_manifest_entry_concurrency_limit</a>(self, limit: <a 
class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.usize.html";>usize</a>) 
-&gt; Self</h4></s [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.with_row_group_filtering_enabled" class="method"><a class="src 
rightside" href="../../src/iceberg/scan.rs.html#165-168">source</a><h4 
class="code-header">pub fn <a href="#method.with_row_group_filtering_enabled" 
class="fn">with_row_group_filtering_enabled</a>(
     self,
     row_group_filtering_enabled: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.bool.html";>bool</a>,
 ) -&gt; Self</h4></section></summary><div class="docblock"><p>Determines 
whether to enable row group filtering.
@@ -23,7 +24,7 @@ evaluated against the filter predicate and row groups
 that cant contain matching rows will be skipped entirely.</p>
 <p>Defaults to enabled, as it generally improves performance or
 keeps it the same, with performance degradation unlikely.</p>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.with_row_selection_enabled" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#176-179">source</a><h4 
class="code-header">pub fn <a href="#method.with_row_selection_enabled" 
class="fn">with_row_selection_enabled</a>(self, row_selection_enabled: <a 
class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.bool.html";>bool</a>) 
-&gt; Self</h4></section></summary><d [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.with_row_selection_enabled" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#184-187">source</a><h4 
class="code-header">pub fn <a href="#method.with_row_selection_enabled" 
class="fn">with_row_selection_enabled</a>(self, row_selection_enabled: <a 
class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.bool.html";>bool</a>) 
-&gt; Self</h4></section></summary><d [...]
 When enabled, if a read is performed with a filter predicate,
 then (for row groups that have not been skipped) the page index
 for each row group in a parquet file is parsed and evaluated
@@ -36,7 +37,7 @@ gains from the reduced number of rows that need scanning.
 It is recommended to experiment with partitioning, sorting, row group size,
 page size, and page row limit Iceberg settings on the table being scanned in
 order to get the best performance from using row selection.</p>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.build" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#182-291">source</a><h4 
class="code-header">pub fn <a href="#method.build" class="fn">build</a>(self) 
-&gt; <a class="type" href="../type.Result.html" title="type 
iceberg::Result">Result</a>&lt;<a class="struct" href="struct.TableScan.html" 
title="struct 
iceberg::scan::TableScan">TableScan</a>&gt;</h4></section></summar [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.build" class="method"><a class="src rightside" 
href="../../src/iceberg/scan.rs.html#190-308">source</a><h4 
class="code-header">pub fn <a href="#method.build" class="fn">build</a>(self) 
-&gt; <a class="type" href="../type.Result.html" title="type 
iceberg::Result">Result</a>&lt;<a class="struct" href="struct.TableScan.html" 
title="struct 
iceberg::scan::TableScan">TableScan</a>&gt;</h4></section></summar [...]
 </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-TableScanBuilder%3C'a%3E" class="impl"><a 
href="#impl-Freeze-for-TableScanBuilder%3C'a%3E" class="anchor">§</a><h3 
class="code-header">impl&lt;'a&gt; <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.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:/ [...]
diff --git a/api/search-index.js b/api/search-index.js
index f3b005bf..472cfc86 100644
--- a/api/search-index.js
+++ b/api/search-index.js
@@ -1,5 +1,5 @@
 var searchIndex = new Map(JSON.parse('[\
-["iceberg",{"t":"PPPPPKPPPPPFGPPPFFPPPPPPIPPPPPPFFFGGPPPFNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMQNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNCNMMMOONNNOOONOMNNNNNNONOOMOCOONNNNONCOCMNNNNNNNNNNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNCOOOOOOOOOOOOOOOOOOOOOOOOOFFKRRNNNNNNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNMMMNMHMNNNNNNNHNNNNNNPPPPPPPPFKRGFIPPPPPPPPFPPPPPPPPPGGFPPFPIPPFNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
 [...]
+["iceberg",{"t":"PPPPPKPPPPPFGPPPFFPPPPPPIPPPPPPFFFGGPPPFNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMQNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNCNMMMOONNNOOONOMNNNNNNONOOMOCOONNNNONCOCMNNNNNNNNNNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNCOOOOOOOOOOOOOOOOOOOOOOOOOFFKRRNNNNNNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNMMMNMHMNNNNNNNHNNNNNNPPPPPPPPFKRGFIPPPPPPPPFPPPPPPPPPGGFPPFPIPPFNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
 [...]
 
["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 4967dea1..d4f02a90 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/arrow/record_batch_transformer.rs.html 
b/api/src/iceberg/arrow/record_batch_transformer.rs.html
index a8f4f3ef..70042da2 100644
--- a/api/src/iceberg/arrow/record_batch_transformer.rs.html
+++ b/api/src/iceberg/arrow/record_batch_transformer.rs.html
@@ -613,13 +613,6 @@
 <a href="#613" id="613">613</a>
 <a href="#614" id="614">614</a>
 <a href="#615" id="615">615</a>
-<a href="#616" id="616">616</a>
-<a href="#617" id="617">617</a>
-<a href="#618" id="618">618</a>
-<a href="#619" id="619">619</a>
-<a href="#620" id="620">620</a>
-<a href="#621" id="621">621</a>
-<a href="#622" id="622">622</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
@@ -642,7 +635,7 @@
 
 <span class="kw">use </span>arrow_array::{
     Array <span class="kw">as </span>ArrowArray, ArrayRef, BinaryArray, 
BooleanArray, Float32Array, Float64Array,
-    Int32Array, Int64Array, NullArray, RecordBatch, StringArray,
+    Int32Array, Int64Array, NullArray, RecordBatch, RecordBatchOptions, 
StringArray,
 };
 <span class="kw">use </span>arrow_cast::cast;
 <span class="kw">use </span>arrow_schema::{
@@ -746,19 +739,7 @@
         snapshot_schema: Arc&lt;IcebergSchema&gt;,
         projected_iceberg_field_ids: <span class="kw-2">&amp;</span>[i32],
     ) -&gt; <span class="self">Self </span>{
-        <span class="kw">let </span>projected_iceberg_field_ids = <span 
class="kw">if </span>projected_iceberg_field_ids.is_empty() {
-            <span class="comment">// If the list of field ids is empty, this 
indicates that we
-            // need to select all fields.
-            // Project all fields in table schema order
-            </span>snapshot_schema
-                .as_struct()
-                .fields()
-                .iter()
-                .map(|field| field.id)
-                .collect()
-        } <span class="kw">else </span>{
-            projected_iceberg_field_ids.to_vec()
-        };
+        <span class="kw">let </span>projected_iceberg_field_ids = 
projected_iceberg_field_ids.to_vec();
 
         <span class="self">Self </span>{
             snapshot_schema,
@@ -776,10 +757,15 @@
             <span class="prelude-val">Some</span>(BatchTransform::Modify {
                 <span class="kw-2">ref </span>target_schema,
                 <span class="kw-2">ref </span>operations,
-            }) =&gt; RecordBatch::try_new(
-                target_schema.clone(),
-                <span 
class="self">self</span>.transform_columns(record_batch.columns(), 
operations)<span class="question-mark">?</span>,
-            )<span class="question-mark">?</span>,
+            }) =&gt; {
+                <span class="kw">let </span>options =
+                    RecordBatchOptions::default().with_row_count(<span 
class="prelude-val">Some</span>(record_batch.num_rows()));
+                RecordBatch::try_new_with_options(
+                    target_schema.clone(),
+                    <span 
class="self">self</span>.transform_columns(record_batch.columns(), 
operations)<span class="question-mark">?</span>,
+                    <span class="kw-2">&amp;</span>options,
+                )<span class="question-mark">?
+            </span>}
             <span class="prelude-val">Some</span>(BatchTransform::ModifySchema 
{ target_schema }) =&gt; {
                 record_batch.with_schema(target_schema.clone())<span 
class="question-mark">?
             </span>}
diff --git a/api/src/iceberg/scan.rs.html b/api/src/iceberg/scan.rs.html
index e8176130..c7653ee8 100644
--- a/api/src/iceberg/scan.rs.html
+++ b/api/src/iceberg/scan.rs.html
@@ -1846,6 +1846,35 @@
 <a href="#1846" id="1846">1846</a>
 <a href="#1847" id="1847">1847</a>
 <a href="#1848" id="1848">1848</a>
+<a href="#1849" id="1849">1849</a>
+<a href="#1850" id="1850">1850</a>
+<a href="#1851" id="1851">1851</a>
+<a href="#1852" id="1852">1852</a>
+<a href="#1853" id="1853">1853</a>
+<a href="#1854" id="1854">1854</a>
+<a href="#1855" id="1855">1855</a>
+<a href="#1856" id="1856">1856</a>
+<a href="#1857" id="1857">1857</a>
+<a href="#1858" id="1858">1858</a>
+<a href="#1859" id="1859">1859</a>
+<a href="#1860" id="1860">1860</a>
+<a href="#1861" id="1861">1861</a>
+<a href="#1862" id="1862">1862</a>
+<a href="#1863" id="1863">1863</a>
+<a href="#1864" id="1864">1864</a>
+<a href="#1865" id="1865">1865</a>
+<a href="#1866" id="1866">1866</a>
+<a href="#1867" id="1867">1867</a>
+<a href="#1868" id="1868">1868</a>
+<a href="#1869" id="1869">1869</a>
+<a href="#1870" id="1870">1870</a>
+<a href="#1871" id="1871">1871</a>
+<a href="#1872" id="1872">1872</a>
+<a href="#1873" id="1873">1873</a>
+<a href="#1874" id="1874">1874</a>
+<a href="#1875" id="1875">1875</a>
+<a href="#1876" id="1876">1876</a>
+<a href="#1877" id="1877">1877</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
@@ -1899,8 +1928,8 @@
 <span class="doccomment">/// Builder to create table scan.
 </span><span class="kw">pub struct </span>TableScanBuilder&lt;<span 
class="lifetime">'a</span>&gt; {
     table: <span class="kw-2">&amp;</span><span class="lifetime">'a 
</span>Table,
-    <span class="comment">// Empty column names means to select all columns
-    </span>column_names: Vec&lt;String&gt;,
+    <span class="comment">// Defaults to none which means select all columns
+    </span>column_names: <span 
class="prelude-ty">Option</span>&lt;Vec&lt;String&gt;&gt;,
     snapshot_id: <span class="prelude-ty">Option</span>&lt;i64&gt;,
     batch_size: <span class="prelude-ty">Option</span>&lt;usize&gt;,
     case_sensitive: bool,
@@ -1918,7 +1947,7 @@
 
         <span class="self">Self </span>{
             table,
-            column_names: <span class="macro">vec!</span>[],
+            column_names: <span class="prelude-val">None</span>,
             snapshot_id: <span class="prelude-val">None</span>,
             batch_size: <span class="prelude-val">None</span>,
             case_sensitive: <span class="bool-val">true</span>,
@@ -1954,16 +1983,24 @@
 
     <span class="doccomment">/// Select all columns.
     </span><span class="kw">pub fn </span>select_all(<span class="kw-2">mut 
</span><span class="self">self</span>) -&gt; <span class="self">Self </span>{
-        <span class="self">self</span>.column_names.clear();
+        <span class="self">self</span>.column_names = <span 
class="prelude-val">None</span>;
+        <span class="self">self
+    </span>}
+
+    <span class="doccomment">/// Select empty columns.
+    </span><span class="kw">pub fn </span>select_empty(<span class="kw-2">mut 
</span><span class="self">self</span>) -&gt; <span class="self">Self </span>{
+        <span class="self">self</span>.column_names = <span 
class="prelude-val">Some</span>(<span class="macro">vec!</span>[]);
         <span class="self">self
     </span>}
 
     <span class="doccomment">/// Select some columns of the table.
     </span><span class="kw">pub fn </span>select(<span class="kw-2">mut 
</span><span class="self">self</span>, column_names: <span class="kw">impl 
</span>IntoIterator&lt;Item = <span class="kw">impl </span>ToString&gt;) -&gt; 
<span class="self">Self </span>{
-        <span class="self">self</span>.column_names = column_names
-            .into_iter()
-            .map(|item| item.to_string())
-            .collect();
+        <span class="self">self</span>.column_names = <span 
class="prelude-val">Some</span>(
+            column_names
+                .into_iter()
+                .map(|item| item.to_string())
+                .collect(),
+        );
         <span class="self">self
     </span>}
 
@@ -2053,8 +2090,8 @@
         <span class="kw">let </span>schema = snapshot.schema(<span 
class="self">self</span>.table.metadata())<span class="question-mark">?</span>;
 
         <span class="comment">// Check that all column names exist in the 
schema.
-        </span><span class="kw">if </span>!<span 
class="self">self</span>.column_names.is_empty() {
-            <span class="kw">for </span>column_name <span class="kw">in 
</span><span class="kw-2">&amp;</span><span 
class="self">self</span>.column_names {
+        </span><span class="kw">if let </span><span 
class="prelude-val">Some</span>(column_names) = <span 
class="self">self</span>.column_names.as_ref() {
+            <span class="kw">for </span>column_name <span class="kw">in 
</span>column_names {
                 <span class="kw">if 
</span>schema.field_by_name(column_name).is_none() {
                     <span class="kw">return </span><span 
class="prelude-val">Err</span>(Error::new(
                         ErrorKind::DataInvalid,
@@ -2068,7 +2105,16 @@
         }
 
         <span class="kw">let </span><span class="kw-2">mut </span>field_ids = 
<span class="macro">vec!</span>[];
-        <span class="kw">for </span>column_name <span class="kw">in 
</span><span class="kw-2">&amp;</span><span 
class="self">self</span>.column_names {
+        <span class="kw">let </span>column_names = <span 
class="self">self</span>.column_names.clone().unwrap_or_else(|| {
+            schema
+                .as_struct()
+                .fields()
+                .iter()
+                .map(|f| f.name.clone())
+                .collect()
+        });
+
+        <span class="kw">for </span>column_name <span class="kw">in 
</span>column_names.iter() {
             <span class="kw">let </span>field_id = 
schema.field_id_by_name(column_name).ok_or_else(|| {
                 Error::new(
                     ErrorKind::DataInvalid,
@@ -2145,7 +2191,7 @@
     plan_context: PlanContext,
     batch_size: <span class="prelude-ty">Option</span>&lt;usize&gt;,
     file_io: FileIO,
-    column_names: Vec&lt;String&gt;,
+    column_names: <span 
class="prelude-ty">Option</span>&lt;Vec&lt;String&gt;&gt;,
     <span class="doccomment">/// The maximum number of manifest files that 
will be
     /// retrieved from [`FileIO`] concurrently
     </span>concurrency_limit_manifest_files: usize,
@@ -2257,9 +2303,10 @@
     }
 
     <span class="doccomment">/// Returns a reference to the column names of 
the table scan.
-    </span><span class="kw">pub fn </span>column_names(<span 
class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span 
class="kw-2">&amp;</span>[String] {
-        <span class="kw-2">&amp;</span><span 
class="self">self</span>.column_names
+    </span><span class="kw">pub fn </span>column_names(<span 
class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span 
class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>[String]&gt; 
{
+        <span class="self">self</span>.column_names.as_deref()
     }
+
     <span class="doccomment">/// Returns a reference to the snapshot of the 
table scan.
     </span><span class="kw">pub fn </span>snapshot(<span 
class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span 
class="kw-2">&amp;</span>SnapshotRef {
         <span class="kw-2">&amp;</span><span 
class="self">self</span>.plan_context.snapshot
@@ -3084,7 +3131,10 @@
         <span class="kw">let </span>table = TableTestFixture::new().table;
 
         <span class="kw">let </span>table_scan = table.scan().select([<span 
class="string">"x"</span>, <span class="string">"y"</span>]).build().unwrap();
-        <span class="macro">assert_eq!</span>(<span 
class="macro">vec!</span>[<span class="string">"x"</span>, <span 
class="string">"y"</span>], table_scan.column_names);
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Some</span>(<span 
class="macro">vec!</span>[<span class="string">"x"</span>.to_string(), <span 
class="string">"y"</span>.to_string()]),
+            table_scan.column_names
+        );
 
         <span class="kw">let </span>table_scan = table
             .scan()
@@ -3092,7 +3142,7 @@
             .select([<span class="string">"z"</span>])
             .build()
             .unwrap();
-        <span class="macro">assert_eq!</span>(<span 
class="macro">vec!</span>[<span class="string">"z"</span>], 
table_scan.column_names);
+        <span class="macro">assert_eq!</span>(<span 
class="prelude-val">Some</span>(<span class="macro">vec!</span>[<span 
class="string">"z"</span>.to_string()]), table_scan.column_names);
     }
 
     <span class="attr">#[test]
@@ -3100,7 +3150,7 @@
         <span class="kw">let </span>table = TableTestFixture::new().table;
 
         <span class="kw">let </span>table_scan = 
table.scan().select_all().build().unwrap();
-        <span class="macro">assert!</span>(table_scan.column_names.is_empty());
+        <span class="macro">assert!</span>(table_scan.column_names.is_none());
     }
 
     <span class="attr">#[test]
@@ -3272,6 +3322,14 @@
         <span class="kw">let </span>col2 = batches[<span 
class="number">0</span>].column_by_name(<span 
class="string">"z"</span>).unwrap();
         <span class="kw">let </span>int64_arr = 
col2.as_any().downcast_ref::&lt;Int64Array&gt;().unwrap();
         <span class="macro">assert_eq!</span>(int64_arr.value(<span 
class="number">0</span>), <span class="number">3</span>);
+
+        <span class="comment">// test empty scan
+        </span><span class="kw">let </span>table_scan = 
fixture.table.scan().select_empty().build().unwrap();
+        <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span 
class="kw">await</span>.unwrap();
+        <span class="kw">let </span>batches: Vec&lt;<span 
class="kw">_</span>&gt; = batch_stream.try_collect().<span 
class="kw">await</span>.unwrap();
+
+        <span class="macro">assert_eq!</span>(batches[<span 
class="number">0</span>].num_columns(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(batches[<span 
class="number">0</span>].num_rows(), <span class="number">1024</span>);
     }
 
     <span class="attr">#[tokio::test]

Reply via email to