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 8a24de7b deploy: cda4a0c595af2606e2f4076e9ef81d79d4428f4b
8a24de7b is described below

commit 8a24de7b7a361366ac764517cb8fada490f49d8f
Author: liurenjie1024 <[email protected]>
AuthorDate: Mon Sep 30 03:10:34 2024 +0000

    deploy: cda4a0c595af2606e2f4076e9ef81d79d4428f4b
---
 api/iceberg/expr/enum.PredicateOperator.html       |   4 +-
 api/iceberg/expr/struct.BinaryExpression.html      |   4 +-
 api/iceberg/expr/struct.Reference.html             |   4 +-
 api/iceberg/expr/struct.UnaryExpression.html       |   4 +-
 api/iceberg/io/struct.FileIO.html                  |   2 +-
 api/iceberg/scan/index.html                        |   2 +-
 api/iceberg/spec/enum.DataFileBuilderError.html    |   2 +-
 api/iceberg/spec/enum.SortOrderBuilderError.html   |   2 +-
 api/iceberg/spec/enum.Transform.html               |   4 +-
 api/iceberg/spec/enum.Type.html                    |   4 +-
 api/iceberg/spec/enum.ViewFormatVersion.html       |   4 +-
 api/iceberg/spec/struct.SortField.html             |   4 +-
 api/iceberg/spec/struct.StructType.html            |   4 +-
 api/iceberg/struct.Error.html                      |   2 +-
 api/search-index.js                                |   2 +-
 .../expr/visitors/page_index_evaluator.rs.html     |  16 +-
 api/src/iceberg/io/file_io.rs.html                 |   2 +-
 api/src/iceberg/io/storage.rs.html                 |   2 +-
 api/src/iceberg/scan.rs.html                       | 418 ++++++++++++++++++++-
 19 files changed, 433 insertions(+), 53 deletions(-)

diff --git a/api/iceberg/expr/enum.PredicateOperator.html 
b/api/iceberg/expr/enum.PredicateOperator.html
index 4c31fae0..43ae7cdf 100644
--- a/api/iceberg/expr/enum.PredicateOperator.html
+++ b/api/iceberg/expr/enum.PredicateOperator.html
@@ -38,8 +38,8 @@
 <span class="macro">assert!</span>(PredicateOperator::Eq.negate() == 
PredicateOperator::NotEq);
 <span class="macro">assert!</span>(PredicateOperator::In.negate() == 
PredicateOperator::NotIn);
 <span class="macro">assert!</span>(PredicateOperator::StartsWith.negate() == 
PredicateOperator::NotStartsWith);</code></pre></div>
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-PredicateOperator" class="impl"><a class="src rightside" 
href="../../src/iceberg/expr/mod.rs.html#37">source</a><a 
href="#impl-Clone-for-PredicateOperator" class="anchor">§</a><h3 
class="code-header [...]
-    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-PredicateOperator" class="impl"><a class="src rightside" 
href="../../src/iceberg/expr/mod.rs.html#37">source</a><a 
href="#impl-Clone-for-PredicateOperator" class="anchor">§</a><h3 
class="code-header [...]
+    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
 sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section 
id="impl-Serialize-for-PredicateOperator" class="impl"><a class="src rightside" 
href="../../src/iceberg/expr/mod.rs.html#37">source</a><a 
href="#impl-Serialize-for-PredicateOperator" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.210/serde/ser/trait.Serialize.html"; title="tra 
[...]
     __S: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/ser/trait.Serialize.html#tymethod.serialize";>Read
 more</a></div></details></div></details><section 
id="impl-Copy-for-PredicateOperator" class="impl"><a class="src rightside" 
href="../../src/ice [...]
diff --git a/api/iceberg/expr/struct.BinaryExpression.html 
b/api/iceberg/expr/struct.BinaryExpression.html
index b19c116a..790051b4 100644
--- a/api/iceberg/expr/struct.BinaryExpression.html
+++ b/api/iceberg/expr/struct.BinaryExpression.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="Binary 
predicate, for example, `a &gt; 10`."><title>BinaryExpression in iceberg::expr 
- 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans
 [...]
-</div></details><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Bind-for-BinaryExpression%3CT%3E" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/expr/predicate.rs.html#200-211">source</a><a 
href="#impl-Bind-for-BinaryExpression%3CT%3E" class="anchor">§</a><h3 
class="code-header" [...]
+</div></details><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Bind-for-BinaryExpression%3CT%3E" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/expr/predicate.rs.html#200-211">source</a><a 
href="#impl-Bind-for-BinaryExpression%3CT%3E" class="anchor">§</a><h3 
class="code-header" [...]
     T: <a class="trait" 
href="https://docs.rs/serde/1.0.210/serde/de/trait.Deserialize.html"; 
title="trait 
serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></summary><div
 class="impl-items"><details class="toggle method-toggle" 
open><summary><section id="method.deserialize" class="method trait-impl"><a 
class="src rightside" 
href="../../src/iceberg/expr/predicate.rs.html#152">source</a><a 
href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a hr 
[...]
-    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
+    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
 sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section 
id="impl-Serialize-for-BinaryExpression%3CT%3E" class="impl"><a class="src 
rightside" href="../../src/iceberg/expr/predicate.rs.html#152">source</a><a 
href="#impl-Serialize-for-BinaryExpression%3CT%3E" class="anchor">§</a><h3 
class="code-header">impl&lt;T&gt; <a class="trait" 
href="https://docs.rs/serde/1.0.210/serde/ser/trai [...]
     T: <a class="trait" 
href="https://docs.rs/serde/1.0.210/serde/ser/trait.Serialize.html"; 
title="trait 
serde::ser::Serialize">Serialize</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.serialize" class="method trait-impl"><a class="src rightside" 
href="../../src/iceberg/expr/predicate.rs.html#152">source</a><a 
href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://docs.rs [...]
diff --git a/api/iceberg/expr/struct.Reference.html 
b/api/iceberg/expr/struct.Reference.html
index 70a77fe6..d8ece61e 100644
--- a/api/iceberg/expr/struct.Reference.html
+++ b/api/iceberg/expr/struct.Reference.html
@@ -105,8 +105,8 @@ For example, <code>a</code> in <code>a &gt; 10</code>.</p>
 
 <span class="kw">let </span>as_string = <span 
class="macro">format!</span>(<span class="string">"{expr}"</span>);
 <span class="macro">assert!</span>(<span class="kw-2">&amp;</span>as_string == 
<span class="string">"a NOT IN (5, 6)" </span>|| <span 
class="kw-2">&amp;</span>as_string == <span class="string">"a NOT IN (6, 
5)"</span>);</code></pre></div>
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Bind-for-Reference" class="impl"><a class="src rightside" 
href="../../src/iceberg/expr/term.rs.html#309-339">source</a><a 
href="#impl-Bind-for-Reference" class="anchor">§</a><h3 
class="code-header">impl <a cl [...]
-    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Bind-for-Reference" class="impl"><a class="src rightside" 
href="../../src/iceberg/expr/term.rs.html#309-339">source</a><a 
href="#impl-Bind-for-Reference" class="anchor">§</a><h3 
class="code-header">impl <a cl [...]
+    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
 sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Serialize-for-Reference" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/expr/term.rs.html#37">source</a><a 
href="#impl-Serialize-for-Reference" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.210/serde/ser/trait.Serialize.html"; 
title="trait serde::ser:: [...]
     __S: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/ser/trait.Serialize.html#tymethod.serialize";>Read
 more</a></div></details></div></details><section 
id="impl-StructuralPartialEq-for-Reference" class="impl"><a class="src 
rightside" href="../../ [...]
diff --git a/api/iceberg/expr/struct.UnaryExpression.html 
b/api/iceberg/expr/struct.UnaryExpression.html
index fb84b98a..e9faf0f7 100644
--- a/api/iceberg/expr/struct.UnaryExpression.html
+++ b/api/iceberg/expr/struct.UnaryExpression.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="Unary 
predicate, for example, `a IS NULL`."><title>UnaryExpression in iceberg::expr - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-M
 [...]
-</div></details><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Bind-for-UnaryExpression%3CT%3E" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/expr/predicate.rs.html#125-132">source</a><a 
href="#impl-Bind-for-UnaryExpression%3CT%3E" class="anchor">§</a><h3 
class="code-header">i [...]
+</div></details><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Bind-for-UnaryExpression%3CT%3E" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/expr/predicate.rs.html#125-132">source</a><a 
href="#impl-Bind-for-UnaryExpression%3CT%3E" class="anchor">§</a><h3 
class="code-header">i [...]
     T: <a class="trait" 
href="https://docs.rs/serde/1.0.210/serde/de/trait.Deserialize.html"; 
title="trait 
serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></summary><div
 class="impl-items"><details class="toggle method-toggle" 
open><summary><section id="method.deserialize" class="method trait-impl"><a 
class="src rightside" 
href="../../src/iceberg/expr/predicate.rs.html#101">source</a><a 
href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a hr 
[...]
-    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
+    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
 sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section 
id="impl-Serialize-for-UnaryExpression%3CT%3E" class="impl"><a class="src 
rightside" href="../../src/iceberg/expr/predicate.rs.html#101">source</a><a 
href="#impl-Serialize-for-UnaryExpression%3CT%3E" class="anchor">§</a><h3 
class="code-header">impl&lt;T&gt; <a class="trait" 
href="https://docs.rs/serde/1.0.210/serde/ser/trait. [...]
     T: <a class="trait" 
href="https://docs.rs/serde/1.0.210/serde/ser/trait.Serialize.html"; 
title="trait 
serde::ser::Serialize">Serialize</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.serialize" class="method trait-impl"><a class="src rightside" 
href="../../src/iceberg/expr/predicate.rs.html#101">source</a><a 
href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://docs.rs [...]
diff --git a/api/iceberg/io/struct.FileIO.html 
b/api/iceberg/io/struct.FileIO.html
index 419b381f..158365b7 100644
--- a/api/iceberg/io/struct.FileIO.html
+++ b/api/iceberg/io/struct.FileIO.html
@@ -7,7 +7,7 @@ For example, if you construct <code>FileIO</code> with 
<code>s3a</code> scheme,
 <tr><td>Local file 
system</td><td><code>storage-fs</code></td><td><code>file</code></td></tr>
 
<tr><td>Memory</td><td><code>storage-memory</code></td><td><code>memory</code></td></tr>
 <tr><td>S3</td><td><code>storage-s3</code></td><td><code>s3</code>, 
<code>s3a</code></td></tr>
-<tr><td>GCS</td><td><code>storage-gcs</code></td><td><code>gs</code></td></tr>
+<tr><td>GCS</td><td><code>storage-gcs</code></td><td><code>gcs</code></td></tr>
 </tbody></table>
 </div></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-FileIO" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/io/file_io.rs.html#49-134">source</a><a 
href="#impl-FileIO" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.FileIO.html" title="struct iceberg::io [...]
 <ul>
diff --git a/api/iceberg/scan/index.html b/api/iceberg/scan/index.html
index 89a3f883..5a0b6bdf 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/spec/enum.DataFileBuilderError.html 
b/api/iceberg/spec/enum.DataFileBuilderError.html
index cf1d16c5..8267c2a0 100644
--- a/api/iceberg/spec/enum.DataFileBuilderError.html
+++ b/api/iceberg/spec/enum.DataFileBuilderError.html
@@ -4,7 +4,7 @@
 }</code></pre><details class="toggle top-doc" open><summary 
class="hideme"><span>Expand description</span></summary><div 
class="docblock"><p>Error type for DataFileBuilder</p>
 </div></details><h2 id="variants" class="variants section-header">Variants 
(Non-exhaustive)<a href="#variants" class="anchor">§</a></h2><details 
class="toggle non-exhaustive"><summary class="hideme"><span>This enum is marked 
as non-exhaustive</span></summary><div class="docblock">Non-exhaustive enums 
could have additional variants added in future. Therefore, when matching 
against variants of non-exhaustive enums, an extra wildcard arm must be added 
to account for any future variants.</di [...]
 </div><section id="variant.ValidationError" class="variant"><a 
href="#variant.ValidationError" class="anchor">§</a><h3 
class="code-header">ValidationError(<a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a>)</h3></section><div 
class="docblock"><p>Custom validation error</p>
-</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Debug-for-DataFileBuilderError" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/manifest.rs.html#947">source</a><a 
href="#impl-Debug-for-DataFileBuilderError" class="anchor">§</a><h3 
class="code-header">impl <a clas [...]
+</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Debug-for-DataFileBuilderError" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/manifest.rs.html#947">source</a><a 
href="#impl-Debug-for-DataFileBuilderError" class="anchor">§</a><h3 
class="code-header">impl <a clas [...]
     T: 'static + ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.type_id" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141";>source</a><a 
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href 
[...]
     T: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html"; 
title="trait core::error::Error">Error</a> + 
'static,</div></h3></section></summary><div class="impl-items"><details 
class="toggle method-toggle" open><summary><section id="method.as_error_source" 
class="method trait-impl"><a href="#method.as_error_source" 
class="anchor">§</a><h4 class="code-header">fn <a 
class="fn">as_error_source</a>(&amp;self) -&gt; &amp;(dyn <a class="trait" 
href="https://doc [...]
 to benefit from Rust’s automatic dereferencing of method
diff --git a/api/iceberg/spec/enum.SortOrderBuilderError.html 
b/api/iceberg/spec/enum.SortOrderBuilderError.html
index 0ca83947..297efdae 100644
--- a/api/iceberg/spec/enum.SortOrderBuilderError.html
+++ b/api/iceberg/spec/enum.SortOrderBuilderError.html
@@ -4,7 +4,7 @@
 }</code></pre><details class="toggle top-doc" open><summary 
class="hideme"><span>Expand description</span></summary><div 
class="docblock"><p>Error type for SortOrderBuilder</p>
 </div></details><h2 id="variants" class="variants section-header">Variants 
(Non-exhaustive)<a href="#variants" class="anchor">§</a></h2><details 
class="toggle non-exhaustive"><summary class="hideme"><span>This enum is marked 
as non-exhaustive</span></summary><div class="docblock">Non-exhaustive enums 
could have additional variants added in future. Therefore, when matching 
against variants of non-exhaustive enums, an extra wildcard arm must be added 
to account for any future variants.</di [...]
 </div><section id="variant.ValidationError" class="variant"><a 
href="#variant.ValidationError" class="anchor">§</a><h3 
class="code-header">ValidationError(<a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a>)</h3></section><div 
class="docblock"><p>Custom validation error</p>
-</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Debug-for-SortOrderBuilderError" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/sort.rs.html#99">source</a><a 
href="#impl-Debug-for-SortOrderBuilderError" class="anchor">§</a><h3 
class="code-header">impl <a class=" [...]
+</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Debug-for-SortOrderBuilderError" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/sort.rs.html#99">source</a><a 
href="#impl-Debug-for-SortOrderBuilderError" class="anchor">§</a><h3 
class="code-header">impl <a class=" [...]
     T: 'static + ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.type_id" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141";>source</a><a 
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href 
[...]
     T: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html"; 
title="trait core::error::Error">Error</a> + 
'static,</div></h3></section></summary><div class="impl-items"><details 
class="toggle method-toggle" open><summary><section id="method.as_error_source" 
class="method trait-impl"><a href="#method.as_error_source" 
class="anchor">§</a><h4 class="code-header">fn <a 
class="fn">as_error_source</a>(&amp;self) -&gt; &amp;(dyn <a class="trait" 
href="https://doc [...]
 to benefit from Rust’s automatic dereferencing of method
diff --git a/api/iceberg/spec/enum.Transform.html 
b/api/iceberg/spec/enum.Transform.html
index 7a2cd218..eaba5058 100644
--- a/api/iceberg/spec/enum.Transform.html
+++ b/api/iceberg/spec/enum.Transform.html
@@ -125,8 +125,8 @@ and filtering based on the original, untransformed data.</p>
 <code>bucket(a, 37) as bs</code>, if one row matches <code>a = 10</code>, then 
its partition
 value should match <code>bucket(10, 37) as bs</code>, and we project <code>a = 
10</code> to
 <code>bs = bucket(10, 37)</code></p>
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-Transform" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/transform.rs.html#48">source</a><a 
href="#impl-Clone-for-Transform" class="anchor">§</a><h3 
class="code-header">impl <a  [...]
-    D: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Display [...]
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-Transform" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/transform.rs.html#48">source</a><a 
href="#impl-Clone-for-Transform" class="anchor">§</a><h3 
class="code-header">impl <a  [...]
+    D: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Display [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
 sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Serialize-for-Transform" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/transform.rs.html#677-682">source</a><a 
href="#impl-Serialize-for-Transform" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.210/serde/ser/trait.Serialize.html"; 
title="trait se [...]
     S: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/ser/trait.Serialize.html#tymethod.serialize";>Read
 more</a></div></details></div></details><section id="impl-Copy-for-Transform" 
class="impl"><a class="src rightside" href="../../src/iceberg/spec/ [...]
diff --git a/api/iceberg/spec/enum.Type.html b/api/iceberg/spec/enum.Type.html
index e76d839d..e71231f5 100644
--- a/api/iceberg/spec/enum.Type.html
+++ b/api/iceberg/spec/enum.Type.html
@@ -17,8 +17,8 @@
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.decimal_required_bytes" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#153-156">source</a><h4 
class="code-header">pub fn <a href="#method.decimal_required_bytes" 
class="fn">decimal_required_bytes</a>(precision: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.u32.html";>u32</a>) -&gt; 
<a class="type" href="../type.Result.html" title="typ [...]
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.decimal" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#160-163">source</a><h4 
class="code-header">pub fn <a href="#method.decimal" 
class="fn">decimal</a>(precision: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.u32.html";>u32</a>, scale: 
<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.u32.html";>u32</a>) -&g 
[...]
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.is_floating_type" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#167-172">source</a><h4 
class="code-header">pub fn <a href="#method.is_floating_type" 
class="fn">is_floating_type</a>(&amp;self) -&gt; <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.bool.html";>bool</a></h4></section></summary><div
 class="docblock"><p>Check if it’s float o [...]
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-Type" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#80">source</a><a 
href="#impl-Clone-for-Type" class="anchor">§</a><h3 class="code-header">impl <a 
class="tra [...]
-    D: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Display [...]
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-Type" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#80">source</a><a 
href="#impl-Clone-for-Type" class="anchor">§</a><h3 class="code-header">impl <a 
class="tra [...]
+    D: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Display [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
 sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Serialize-for-Type" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#267-273">source</a><a 
href="#impl-Serialize-for-Type" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.210/serde/ser/trait.Serialize.html"; 
title="trait serde::ser:: [...]
     S: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/ser/trait.Serialize.html#tymethod.serialize";>Read
 more</a></div></details></div></details><section id="impl-Eq-for-Type" 
class="impl"><a class="src rightside" href="../../src/iceberg/spec/datatyp [...]
diff --git a/api/iceberg/spec/enum.ViewFormatVersion.html 
b/api/iceberg/spec/enum.ViewFormatVersion.html
index 4d8658bb..1b301707 100644
--- a/api/iceberg/spec/enum.ViewFormatVersion.html
+++ b/api/iceberg/spec/enum.ViewFormatVersion.html
@@ -2,8 +2,8 @@
     V1 = 1,
 }</code></pre><details class="toggle top-doc" open><summary 
class="hideme"><span>Expand description</span></summary><div 
class="docblock"><p>Iceberg format version</p>
 </div></details><h2 id="variants" class="variants section-header">Variants<a 
href="#variants" class="anchor">§</a></h2><div class="variants"><section 
id="variant.V1" class="variant"><a href="#variant.V1" class="anchor">§</a><h3 
class="code-header">V1 = 1</h3></section><div class="docblock"><p>Iceberg view 
spec version 1</p>
-</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Clone-for-ViewFormatVersion" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/view_metadata.rs.html#397">source</a><a 
href="#impl-Clone-for-ViewFormatVersion" class="anchor">§</a><h3 
class="code-header">impl <a class [...]
-    D: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Display [...]
+</div></div><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Clone-for-ViewFormatVersion" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/view_metadata.rs.html#397">source</a><a 
href="#impl-Clone-for-ViewFormatVersion" class="anchor">§</a><h3 
class="code-header">impl <a class [...]
+    D: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Display [...]
     Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div 
class='docblock'>Compares and returns the maximum of two values. <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max";>Read
 more</a></div></details><details class="toggle method-toggle" 
open><summary><section id="method.min" class="method trait-impl"><span 
class="rightside"><span class="si [...]
     Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div 
class='docblock'>Compares and returns the minimum of two values. <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min";>Read
 more</a></div></details><details class="toggle method-toggle" 
open><summary><section id="method.clamp" class="method trait-impl"><span 
class="rightside"><span class=" [...]
     Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a> + <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html"; 
title="trait 
core::cmp::PartialOrd">PartialOrd</a>,</div></h4></section></summary><div 
class='docblock'>Restrict a value to a certain interval. <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp";>Read
 more</a></div></details></div> [...]
diff --git a/api/iceberg/spec/struct.SortField.html 
b/api/iceberg/spec/struct.SortField.html
index fd9083a3..47da34c4 100644
--- a/api/iceberg/spec/struct.SortField.html
+++ b/api/iceberg/spec/struct.SortField.html
@@ -11,8 +11,8 @@
 </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-SortField" class="impl"><a class="src 
rightside" href="../../src/iceberg/spec/sort.rs.html#75">source</a><a 
href="#impl-SortField" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.SortField.html" title="struct 
iceberg::spec::SortFiel [...]
 On the builder, call <code>.source_id(...)</code>, 
<code>.transform(...)</code>, <code>.direction(...)</code>, 
<code>.null_order(...)</code> to set the values of the fields.
 Finally, call <code>.build()</code> to create the instance of 
<code>SortField</code>.</p>
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-SortField" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/sort.rs.html#75">source</a><a 
href="#impl-Clone-for-SortField" class="anchor">§</a><h3 
class="code-header">impl <a class [...]
-    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-SortField" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/sort.rs.html#75">source</a><a 
href="#impl-Clone-for-SortField" class="anchor">§</a><h3 
class="code-header">impl <a class [...]
+    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Displ [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
 sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Serialize-for-SortField" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/sort.rs.html#75">source</a><a 
href="#impl-Serialize-for-SortField" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.210/serde/ser/trait.Serialize.html"; 
title="trait serde::ser:: [...]
     __S: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/ser/trait.Serialize.html#tymethod.serialize";>Read
 more</a></div></details></div></details><section id="impl-Eq-for-SortField" 
class="impl"><a class="src rightside" href="../../src/iceberg/spec/ [...]
diff --git a/api/iceberg/spec/struct.StructType.html 
b/api/iceberg/spec/struct.StructType.html
index 0a8830f8..2103ad1a 100644
--- a/api/iceberg/spec/struct.StructType.html
+++ b/api/iceberg/spec/struct.StructType.html
@@ -3,8 +3,8 @@
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.field_by_id" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#448-450">source</a><h4 
class="code-header">pub fn <a href="#method.field_by_id" 
class="fn">field_by_id</a>(&amp;self, id: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i32.html";>i32</a>) -&gt; 
<a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.ht [...]
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.field_by_name" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#462-464">source</a><h4 
class="code-header">pub fn <a href="#method.field_by_name" 
class="fn">field_by_name</a>(&amp;self, name: &amp;<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.str.html";>str</a>) -&gt; 
<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/e [...]
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.fields" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#481-483">source</a><h4 
class="code-header">pub fn <a href="#method.fields" 
class="fn">fields</a>(&amp;self) -&gt; &amp;[<a class="type" 
href="type.NestedFieldRef.html" title="type 
iceberg::spec::NestedFieldRef">NestedFieldRef</a>]</h4></section></summary><div 
class="docblock"><p>Get fields.</p>
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-StructType" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#380">source</a><a 
href="#impl-Clone-for-StructType" class="anchor">§</a><h3 
class="code-header">impl  [...]
-    D: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Display [...]
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-StructType" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#380">source</a><a 
href="#impl-Clone-for-StructType" class="anchor">§</a><h3 
class="code-header">impl  [...]
+    D: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Display [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
 sufficient, and should not be overridden without very good 
reason.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Serialize-for-StructType" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/datatypes.rs.html#380">source</a><a 
href="#impl-Serialize-for-StructType" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://docs.rs/serde/1.0.210/serde/ser/trait.Serialize.html"; 
title="trait serd [...]
     __S: <a class="trait" 
href="https://docs.rs/serde/1.0.210/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.210/serde/ser/trait.Serialize.html#tymethod.serialize";>Read
 more</a></div></details></div></details><section id="impl-Eq-for-StructType" 
class="impl"><a class="src rightside" href="../../src/iceberg/spec [...]
diff --git a/api/iceberg/struct.Error.html b/api/iceberg/struct.Error.html
index 04a15a9d..74ba7ff7 100644
--- a/api/iceberg/struct.Error.html
+++ b/api/iceberg/struct.Error.html
@@ -35,7 +35,7 @@ Backtrace:
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.kind" class="method"><a class="src rightside" 
href="../src/iceberg/error.rs.html#241-243">source</a><h4 
class="code-header">pub fn <a href="#method.kind" 
class="fn">kind</a>(&amp;self) -&gt; <a class="enum" href="enum.ErrorKind.html" 
title="enum iceberg::ErrorKind">ErrorKind</a></h4></section></summary><div 
class="docblock"><p>Return error’s kind.</p>
 <p>Users can use this method to check error’s kind and take actions.</p>
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.message" class="method"><a class="src rightside" 
href="../src/iceberg/error.rs.html#247-249">source</a><h4 
class="code-header">pub fn <a href="#method.message" 
class="fn">message</a>(&amp;self) -&gt; &amp;<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.str.html";>str</a></h4></section></summary><div
 class="docblock"><p>Return error’s message.</p>
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Debug-for-Error" class="impl"><a class="src rightside" 
href="../src/iceberg/error.rs.html#148-187">source</a><a 
href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl 
<a class="trait" h [...]
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Debug-for-Error" class="impl"><a class="src rightside" 
href="../src/iceberg/error.rs.html#148-187">source</a><a 
href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl 
<a class="trait" h [...]
     T: 'static + ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.type_id" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141";>source</a><a 
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href 
[...]
     T: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html"; 
title="trait core::error::Error">Error</a> + 
'static,</div></h3></section></summary><div class="impl-items"><details 
class="toggle method-toggle" open><summary><section id="method.as_error_source" 
class="method trait-impl"><a href="#method.as_error_source" 
class="anchor">§</a><h4 class="code-header">fn <a 
class="fn">as_error_source</a>(&amp;self) -&gt; &amp;(dyn <a class="trait" 
href="https://doc [...]
 to benefit from Rust’s automatic dereferencing of method
diff --git a/api/search-index.js b/api/search-index.js
index efbe6956..28cbc1c6 100644
--- a/api/search-index.js
+++ b/api/search-index.js
@@ -1,5 +1,5 @@
 var searchIndex = new Map(JSON.parse('[\
-["iceberg",{"t":"PPPPPKPPPPPFGPPPFFPPPPPPIPPPPPPFFFGGPPPFNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMQNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNCNMMMOONNNOOONOMNNNNNNONOOMOCOONNNNONCOCMNNNNNNNNNNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNCOOOOOOOOOOOOOOOOOOOOOOOOOFFKRRNNNNNNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNMMMNMHMNNNNNNNHNNNNNNPPPPPPPPFKRGFIPPPPPPPPFPPPPPPPPPGGFPPFPIPPFNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
 [...]
+["iceberg",{"t":"PPPPPKPPPPPFGPPPFFPPPPPPIPPPPPPFFFGGPPPFNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMQNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNCNMMMOONNNOOONOMNNNNNNONOOMOCOONNNNONCOCMNNNNNNNNNNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNCOOOOOOOOOOOOOOOOOOOOOOOOOFFKRRNNNNNNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNMMMNMHMNNNNNNNHNNNNNNPPPPPPPPFKRGFIPPPPPPPPFPPPPPPPPPGGFPPFPIPPFNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
 [...]
 
["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/src/iceberg/expr/visitors/page_index_evaluator.rs.html 
b/api/src/iceberg/expr/visitors/page_index_evaluator.rs.html
index ba513151..be589acf 100644
--- a/api/src/iceberg/expr/visitors/page_index_evaluator.rs.html
+++ b/api/src/iceberg/expr/visitors/page_index_evaluator.rs.html
@@ -1770,10 +1770,10 @@
                 .zip(row_counts.iter())
                 .map(|(item, <span class="kw-2">&amp;</span>row_count)| {
                     predicate(
-                        item.max.map(|val| {
+                        item.min.map(|val| {
                             Datum::new(field_type.clone(), 
PrimitiveLiteral::Boolean(val))
                         }),
-                        item.min.map(|val| {
+                        item.max.map(|val| {
                             Datum::new(field_type.clone(), 
PrimitiveLiteral::Boolean(val))
                         }),
                         PageNullCount::from_row_and_null_counts(row_count, 
item.null_count),
@@ -1786,10 +1786,10 @@
                 .zip(row_counts.iter())
                 .map(|(item, <span class="kw-2">&amp;</span>row_count)| {
                     predicate(
-                        item.max
-                            .map(|val| Datum::new(field_type.clone(), 
PrimitiveLiteral::Int(val))),
                         item.min
                             .map(|val| Datum::new(field_type.clone(), 
PrimitiveLiteral::Int(val))),
+                        item.max
+                            .map(|val| Datum::new(field_type.clone(), 
PrimitiveLiteral::Int(val))),
                         PageNullCount::from_row_and_null_counts(row_count, 
item.null_count),
                     )
                 })
@@ -1800,10 +1800,10 @@
                 .zip(row_counts.iter())
                 .map(|(item, <span class="kw-2">&amp;</span>row_count)| {
                     predicate(
-                        item.max
-                            .map(|val| Datum::new(field_type.clone(), 
PrimitiveLiteral::Long(val))),
                         item.min
                             .map(|val| Datum::new(field_type.clone(), 
PrimitiveLiteral::Long(val))),
+                        item.max
+                            .map(|val| Datum::new(field_type.clone(), 
PrimitiveLiteral::Long(val))),
                         PageNullCount::from_row_and_null_counts(row_count, 
item.null_count),
                     )
                 })
@@ -1836,13 +1836,13 @@
                 .zip(row_counts.iter())
                 .map(|(item, <span class="kw-2">&amp;</span>row_count)| {
                     predicate(
-                        item.max.map(|val| {
+                        item.min.map(|val| {
                             Datum::new(
                                 field_type.clone(),
                                 
PrimitiveLiteral::Double(OrderedFloat::from(val)),
                             )
                         }),
-                        item.min.map(|val| {
+                        item.max.map(|val| {
                             Datum::new(
                                 field_type.clone(),
                                 
PrimitiveLiteral::Double(OrderedFloat::from(val)),
diff --git a/api/src/iceberg/io/file_io.rs.html 
b/api/src/iceberg/io/file_io.rs.html
index 9a335ce9..5d2f819a 100644
--- a/api/src/iceberg/io/file_io.rs.html
+++ b/api/src/iceberg/io/file_io.rs.html
@@ -552,7 +552,7 @@
 /// | Local file system  | `storage-fs`      | `file`     |
 /// | Memory             | `storage-memory`  | `memory`   |
 /// | S3                 | `storage-s3`      | `s3`, `s3a`|
-/// | GCS                | `storage-gcs`     | `gs`       |
+/// | GCS                | `storage-gcs`     | `gcs`       |
 </span><span class="attr">#[derive(Clone, Debug)]
 </span><span class="kw">pub struct </span>FileIO {
     inner: Arc&lt;Storage&gt;,
diff --git a/api/src/iceberg/io/storage.rs.html 
b/api/src/iceberg/io/storage.rs.html
index 01610156..7666ce54 100644
--- a/api/src/iceberg/io/storage.rs.html
+++ b/api/src/iceberg/io/storage.rs.html
@@ -335,7 +335,7 @@
             <span class="string">"memory" </span>=&gt; <span 
class="prelude-val">Ok</span>(Scheme::Memory),
             <span class="string">"file" </span>| <span class="string">"" 
</span>=&gt; <span class="prelude-val">Ok</span>(Scheme::Fs),
             <span class="string">"s3" </span>| <span class="string">"s3a" 
</span>=&gt; <span class="prelude-val">Ok</span>(Scheme::S3),
-            <span class="string">"gs" </span>=&gt; <span 
class="prelude-val">Ok</span>(Scheme::Gcs),
+            <span class="string">"gcs" </span>=&gt; <span 
class="prelude-val">Ok</span>(Scheme::Gcs),
             s =&gt; <span 
class="prelude-val">Ok</span>(s.parse::&lt;Scheme&gt;()<span 
class="question-mark">?</span>),
         }
     }
diff --git a/api/src/iceberg/scan.rs.html b/api/src/iceberg/scan.rs.html
index 88cc146c..da8f4588 100644
--- a/api/src/iceberg/scan.rs.html
+++ b/api/src/iceberg/scan.rs.html
@@ -1629,6 +1629,196 @@
 <a href="#1629" id="1629">1629</a>
 <a href="#1630" id="1630">1630</a>
 <a href="#1631" id="1631">1631</a>
+<a href="#1632" id="1632">1632</a>
+<a href="#1633" id="1633">1633</a>
+<a href="#1634" id="1634">1634</a>
+<a href="#1635" id="1635">1635</a>
+<a href="#1636" id="1636">1636</a>
+<a href="#1637" id="1637">1637</a>
+<a href="#1638" id="1638">1638</a>
+<a href="#1639" id="1639">1639</a>
+<a href="#1640" id="1640">1640</a>
+<a href="#1641" id="1641">1641</a>
+<a href="#1642" id="1642">1642</a>
+<a href="#1643" id="1643">1643</a>
+<a href="#1644" id="1644">1644</a>
+<a href="#1645" id="1645">1645</a>
+<a href="#1646" id="1646">1646</a>
+<a href="#1647" id="1647">1647</a>
+<a href="#1648" id="1648">1648</a>
+<a href="#1649" id="1649">1649</a>
+<a href="#1650" id="1650">1650</a>
+<a href="#1651" id="1651">1651</a>
+<a href="#1652" id="1652">1652</a>
+<a href="#1653" id="1653">1653</a>
+<a href="#1654" id="1654">1654</a>
+<a href="#1655" id="1655">1655</a>
+<a href="#1656" id="1656">1656</a>
+<a href="#1657" id="1657">1657</a>
+<a href="#1658" id="1658">1658</a>
+<a href="#1659" id="1659">1659</a>
+<a href="#1660" id="1660">1660</a>
+<a href="#1661" id="1661">1661</a>
+<a href="#1662" id="1662">1662</a>
+<a href="#1663" id="1663">1663</a>
+<a href="#1664" id="1664">1664</a>
+<a href="#1665" id="1665">1665</a>
+<a href="#1666" id="1666">1666</a>
+<a href="#1667" id="1667">1667</a>
+<a href="#1668" id="1668">1668</a>
+<a href="#1669" id="1669">1669</a>
+<a href="#1670" id="1670">1670</a>
+<a href="#1671" id="1671">1671</a>
+<a href="#1672" id="1672">1672</a>
+<a href="#1673" id="1673">1673</a>
+<a href="#1674" id="1674">1674</a>
+<a href="#1675" id="1675">1675</a>
+<a href="#1676" id="1676">1676</a>
+<a href="#1677" id="1677">1677</a>
+<a href="#1678" id="1678">1678</a>
+<a href="#1679" id="1679">1679</a>
+<a href="#1680" id="1680">1680</a>
+<a href="#1681" id="1681">1681</a>
+<a href="#1682" id="1682">1682</a>
+<a href="#1683" id="1683">1683</a>
+<a href="#1684" id="1684">1684</a>
+<a href="#1685" id="1685">1685</a>
+<a href="#1686" id="1686">1686</a>
+<a href="#1687" id="1687">1687</a>
+<a href="#1688" id="1688">1688</a>
+<a href="#1689" id="1689">1689</a>
+<a href="#1690" id="1690">1690</a>
+<a href="#1691" id="1691">1691</a>
+<a href="#1692" id="1692">1692</a>
+<a href="#1693" id="1693">1693</a>
+<a href="#1694" id="1694">1694</a>
+<a href="#1695" id="1695">1695</a>
+<a href="#1696" id="1696">1696</a>
+<a href="#1697" id="1697">1697</a>
+<a href="#1698" id="1698">1698</a>
+<a href="#1699" id="1699">1699</a>
+<a href="#1700" id="1700">1700</a>
+<a href="#1701" id="1701">1701</a>
+<a href="#1702" id="1702">1702</a>
+<a href="#1703" id="1703">1703</a>
+<a href="#1704" id="1704">1704</a>
+<a href="#1705" id="1705">1705</a>
+<a href="#1706" id="1706">1706</a>
+<a href="#1707" id="1707">1707</a>
+<a href="#1708" id="1708">1708</a>
+<a href="#1709" id="1709">1709</a>
+<a href="#1710" id="1710">1710</a>
+<a href="#1711" id="1711">1711</a>
+<a href="#1712" id="1712">1712</a>
+<a href="#1713" id="1713">1713</a>
+<a href="#1714" id="1714">1714</a>
+<a href="#1715" id="1715">1715</a>
+<a href="#1716" id="1716">1716</a>
+<a href="#1717" id="1717">1717</a>
+<a href="#1718" id="1718">1718</a>
+<a href="#1719" id="1719">1719</a>
+<a href="#1720" id="1720">1720</a>
+<a href="#1721" id="1721">1721</a>
+<a href="#1722" id="1722">1722</a>
+<a href="#1723" id="1723">1723</a>
+<a href="#1724" id="1724">1724</a>
+<a href="#1725" id="1725">1725</a>
+<a href="#1726" id="1726">1726</a>
+<a href="#1727" id="1727">1727</a>
+<a href="#1728" id="1728">1728</a>
+<a href="#1729" id="1729">1729</a>
+<a href="#1730" id="1730">1730</a>
+<a href="#1731" id="1731">1731</a>
+<a href="#1732" id="1732">1732</a>
+<a href="#1733" id="1733">1733</a>
+<a href="#1734" id="1734">1734</a>
+<a href="#1735" id="1735">1735</a>
+<a href="#1736" id="1736">1736</a>
+<a href="#1737" id="1737">1737</a>
+<a href="#1738" id="1738">1738</a>
+<a href="#1739" id="1739">1739</a>
+<a href="#1740" id="1740">1740</a>
+<a href="#1741" id="1741">1741</a>
+<a href="#1742" id="1742">1742</a>
+<a href="#1743" id="1743">1743</a>
+<a href="#1744" id="1744">1744</a>
+<a href="#1745" id="1745">1745</a>
+<a href="#1746" id="1746">1746</a>
+<a href="#1747" id="1747">1747</a>
+<a href="#1748" id="1748">1748</a>
+<a href="#1749" id="1749">1749</a>
+<a href="#1750" id="1750">1750</a>
+<a href="#1751" id="1751">1751</a>
+<a href="#1752" id="1752">1752</a>
+<a href="#1753" id="1753">1753</a>
+<a href="#1754" id="1754">1754</a>
+<a href="#1755" id="1755">1755</a>
+<a href="#1756" id="1756">1756</a>
+<a href="#1757" id="1757">1757</a>
+<a href="#1758" id="1758">1758</a>
+<a href="#1759" id="1759">1759</a>
+<a href="#1760" id="1760">1760</a>
+<a href="#1761" id="1761">1761</a>
+<a href="#1762" id="1762">1762</a>
+<a href="#1763" id="1763">1763</a>
+<a href="#1764" id="1764">1764</a>
+<a href="#1765" id="1765">1765</a>
+<a href="#1766" id="1766">1766</a>
+<a href="#1767" id="1767">1767</a>
+<a href="#1768" id="1768">1768</a>
+<a href="#1769" id="1769">1769</a>
+<a href="#1770" id="1770">1770</a>
+<a href="#1771" id="1771">1771</a>
+<a href="#1772" id="1772">1772</a>
+<a href="#1773" id="1773">1773</a>
+<a href="#1774" id="1774">1774</a>
+<a href="#1775" id="1775">1775</a>
+<a href="#1776" id="1776">1776</a>
+<a href="#1777" id="1777">1777</a>
+<a href="#1778" id="1778">1778</a>
+<a href="#1779" id="1779">1779</a>
+<a href="#1780" id="1780">1780</a>
+<a href="#1781" id="1781">1781</a>
+<a href="#1782" id="1782">1782</a>
+<a href="#1783" id="1783">1783</a>
+<a href="#1784" id="1784">1784</a>
+<a href="#1785" id="1785">1785</a>
+<a href="#1786" id="1786">1786</a>
+<a href="#1787" id="1787">1787</a>
+<a href="#1788" id="1788">1788</a>
+<a href="#1789" id="1789">1789</a>
+<a href="#1790" id="1790">1790</a>
+<a href="#1791" id="1791">1791</a>
+<a href="#1792" id="1792">1792</a>
+<a href="#1793" id="1793">1793</a>
+<a href="#1794" id="1794">1794</a>
+<a href="#1795" id="1795">1795</a>
+<a href="#1796" id="1796">1796</a>
+<a href="#1797" id="1797">1797</a>
+<a href="#1798" id="1798">1798</a>
+<a href="#1799" id="1799">1799</a>
+<a href="#1800" id="1800">1800</a>
+<a href="#1801" id="1801">1801</a>
+<a href="#1802" id="1802">1802</a>
+<a href="#1803" id="1803">1803</a>
+<a href="#1804" id="1804">1804</a>
+<a href="#1805" id="1805">1805</a>
+<a href="#1806" id="1806">1806</a>
+<a href="#1807" id="1807">1807</a>
+<a href="#1808" id="1808">1808</a>
+<a href="#1809" id="1809">1809</a>
+<a href="#1810" id="1810">1810</a>
+<a href="#1811" id="1811">1811</a>
+<a href="#1812" id="1812">1812</a>
+<a href="#1813" id="1813">1813</a>
+<a href="#1814" id="1814">1814</a>
+<a href="#1815" id="1815">1815</a>
+<a href="#1816" id="1816">1816</a>
+<a href="#1817" id="1817">1817</a>
+<a href="#1818" id="1818">1818</a>
+<a href="#1819" id="1819">1819</a>
+<a href="#1820" id="1820">1820</a>
+<a href="#1821" id="1821">1821</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
@@ -2544,7 +2734,9 @@
     <span class="kw">use </span>std::fs::File;
     <span class="kw">use </span>std::sync::Arc;
 
-    <span class="kw">use </span>arrow_array::{ArrayRef, Int64Array, 
RecordBatch, StringArray};
+    <span class="kw">use </span>arrow_array::{
+        ArrayRef, BooleanArray, Float64Array, Int32Array, Int64Array, 
RecordBatch, StringArray,
+    };
     <span class="kw">use </span>futures::{stream, TryStreamExt};
     <span class="kw">use </span>parquet::arrow::{ArrowWriter, 
PARQUET_FIELD_ID_META_KEY};
     <span class="kw">use </span>parquet::basic::Compression;
@@ -2741,11 +2933,30 @@
                             PARQUET_FIELD_ID_META_KEY.to_string(),
                             <span class="string">"4"</span>.to_string(),
                         )])),
+                    arrow_schema::Field::new(<span 
class="string">"dbl"</span>, arrow_schema::DataType::Float64, <span 
class="bool-val">false</span>)
+                        .with_metadata(HashMap::from([(
+                            PARQUET_FIELD_ID_META_KEY.to_string(),
+                            <span class="string">"5"</span>.to_string(),
+                        )])),
+                    arrow_schema::Field::new(<span 
class="string">"i32"</span>, arrow_schema::DataType::Int32, <span 
class="bool-val">false</span>)
+                        .with_metadata(HashMap::from([(
+                            PARQUET_FIELD_ID_META_KEY.to_string(),
+                            <span class="string">"6"</span>.to_string(),
+                        )])),
+                    arrow_schema::Field::new(<span 
class="string">"i64"</span>, arrow_schema::DataType::Int64, <span 
class="bool-val">false</span>)
+                        .with_metadata(HashMap::from([(
+                            PARQUET_FIELD_ID_META_KEY.to_string(),
+                            <span class="string">"7"</span>.to_string(),
+                        )])),
+                    arrow_schema::Field::new(<span 
class="string">"bool"</span>, arrow_schema::DataType::Boolean, <span 
class="bool-val">false</span>)
+                        .with_metadata(HashMap::from([(
+                            PARQUET_FIELD_ID_META_KEY.to_string(),
+                            <span class="string">"8"</span>.to_string(),
+                        )])),
                 ];
                 Arc::new(arrow_schema::Schema::new(fields))
             };
-            <span class="comment">// 4 columns:
-            // x: [1, 1, 1, 1, ...]
+            <span class="comment">// x: [1, 1, 1, 1, ...]
             </span><span class="kw">let </span>col1 = 
Arc::new(Int64Array::from_iter_values(<span class="macro">vec!</span>[<span 
class="number">1</span>; <span class="number">1024</span>])) <span 
class="kw">as </span>ArrayRef;
 
             <span class="kw">let </span><span class="kw-2">mut </span>values = 
<span class="macro">vec!</span>[<span class="number">2</span>; <span 
class="number">512</span>];
@@ -2767,8 +2978,34 @@
             values.append(<span class="macro">vec!</span>[<span 
class="string">"Iceberg"</span>; <span class="number">512</span>].as_mut());
             <span class="kw">let </span>col4 = 
Arc::new(StringArray::from_iter_values(values)) <span class="kw">as 
</span>ArrayRef;
 
-            <span class="kw">let </span>to_write =
-                RecordBatch::try_new(schema.clone(), <span 
class="macro">vec!</span>[col1, col2, col3, col4]).unwrap();
+            <span class="comment">// dbl:
+            </span><span class="kw">let </span><span class="kw-2">mut 
</span>values = <span class="macro">vec!</span>[<span 
class="number">100.0f64</span>; <span class="number">512</span>];
+            values.append(<span class="macro">vec!</span>[<span 
class="number">150.0f64</span>; <span class="number">12</span>].as_mut());
+            values.append(<span class="macro">vec!</span>[<span 
class="number">200.0f64</span>; <span class="number">500</span>].as_mut());
+            <span class="kw">let </span>col5 = 
Arc::new(Float64Array::from_iter_values(values)) <span class="kw">as 
</span>ArrayRef;
+
+            <span class="comment">// i32:
+            </span><span class="kw">let </span><span class="kw-2">mut 
</span>values = <span class="macro">vec!</span>[<span 
class="number">100i32</span>; <span class="number">512</span>];
+            values.append(<span class="macro">vec!</span>[<span 
class="number">150i32</span>; <span class="number">12</span>].as_mut());
+            values.append(<span class="macro">vec!</span>[<span 
class="number">200i32</span>; <span class="number">500</span>].as_mut());
+            <span class="kw">let </span>col6 = 
Arc::new(Int32Array::from_iter_values(values)) <span class="kw">as 
</span>ArrayRef;
+
+            <span class="comment">// i64:
+            </span><span class="kw">let </span><span class="kw-2">mut 
</span>values = <span class="macro">vec!</span>[<span 
class="number">100i64</span>; <span class="number">512</span>];
+            values.append(<span class="macro">vec!</span>[<span 
class="number">150i64</span>; <span class="number">12</span>].as_mut());
+            values.append(<span class="macro">vec!</span>[<span 
class="number">200i64</span>; <span class="number">500</span>].as_mut());
+            <span class="kw">let </span>col7 = 
Arc::new(Int64Array::from_iter_values(values)) <span class="kw">as 
</span>ArrayRef;
+
+            <span class="comment">// bool:
+            </span><span class="kw">let </span><span class="kw-2">mut 
</span>values = <span class="macro">vec!</span>[<span 
class="bool-val">false</span>; <span class="number">512</span>];
+            values.append(<span class="macro">vec!</span>[<span 
class="bool-val">true</span>; <span class="number">512</span>].as_mut());
+            <span class="kw">let </span>values: BooleanArray = values.into();
+            <span class="kw">let </span>col8 = Arc::new(values) <span 
class="kw">as </span>ArrayRef;
+
+            <span class="kw">let </span>to_write = 
RecordBatch::try_new(schema.clone(), <span class="macro">vec!</span>[
+                col1, col2, col3, col4, col5, col6, col7, col8,
+            ])
+            .unwrap();
 
             <span class="comment">// Write the Parquet files
             </span><span class="kw">let </span>props = 
WriterProperties::builder()
@@ -2846,6 +3083,7 @@
         <span class="kw">let </span>table_scan = table
             .scan()
             .snapshot_id(<span class="number">3051729675574597004</span>)
+            .with_row_selection_enabled(<span class="bool-val">true</span>)
             .build()
             .unwrap();
         <span 
class="macro">assert_eq!</span>(table_scan.snapshot().snapshot_id(), <span 
class="number">3051729675574597004</span>);
@@ -2857,7 +3095,13 @@
         fixture.setup_manifest_files().<span class="kw">await</span>;
 
         <span class="comment">// Create table scan for current snapshot and 
plan files
-        </span><span class="kw">let </span>table_scan = 
fixture.table.scan().build().unwrap();
+        </span><span class="kw">let </span>table_scan = fixture
+            .table
+            .scan()
+            .with_row_selection_enabled(<span class="bool-val">true</span>)
+            .build()
+            .unwrap();
+
         <span class="kw">let </span><span class="kw-2">mut </span>tasks = 
table_scan
             .plan_files()
             .<span class="kw">await
@@ -2892,7 +3136,12 @@
         fixture.setup_manifest_files().<span class="kw">await</span>;
 
         <span class="comment">// Create table scan for current snapshot and 
plan files
-        </span><span class="kw">let </span>table_scan = 
fixture.table.scan().build().unwrap();
+        </span><span class="kw">let </span>table_scan = fixture
+            .table
+            .scan()
+            .with_row_selection_enabled(<span class="bool-val">true</span>)
+            .build()
+            .unwrap();
 
         <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span 
class="kw">await</span>.unwrap();
 
@@ -2910,7 +3159,12 @@
         fixture.setup_manifest_files().<span class="kw">await</span>;
 
         <span class="comment">// Create table scan for current snapshot and 
plan files
-        </span><span class="kw">let </span>table_scan = 
fixture.table.scan().build().unwrap();
+        </span><span class="kw">let </span>table_scan = fixture
+            .table
+            .scan()
+            .with_row_selection_enabled(<span class="bool-val">true</span>)
+            .build()
+            .unwrap();
 
         <span class="kw">let </span><span class="kw-2">mut </span>plan_task: 
Vec&lt;<span class="kw">_</span>&gt; = table_scan
             .plan_files()
@@ -2943,7 +3197,13 @@
         fixture.setup_manifest_files().<span class="kw">await</span>;
 
         <span class="comment">// Create table scan for current snapshot and 
plan files
-        </span><span class="kw">let </span>table_scan = 
fixture.table.scan().select([<span class="string">"x"</span>, <span 
class="string">"z"</span>]).build().unwrap();
+        </span><span class="kw">let </span>table_scan = fixture
+            .table
+            .scan()
+            .select([<span class="string">"x"</span>, <span 
class="string">"z"</span>])
+            .with_row_selection_enabled(<span class="bool-val">true</span>)
+            .build()
+            .unwrap();
 
         <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span 
class="kw">await</span>.unwrap();
 
@@ -2968,7 +3228,9 @@
         <span class="comment">// Filter: y &lt; 3
         </span><span class="kw">let </span><span class="kw-2">mut 
</span>builder = fixture.table.scan();
         <span class="kw">let </span>predicate = Reference::new(<span 
class="string">"y"</span>).less_than(Datum::long(<span 
class="number">3</span>));
-        builder = builder.with_filter(predicate);
+        builder = builder
+            .with_filter(predicate)
+            .with_row_selection_enabled(<span class="bool-val">true</span>);
         <span class="kw">let </span>table_scan = builder.build().unwrap();
 
         <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span 
class="kw">await</span>.unwrap();
@@ -2994,7 +3256,9 @@
         <span class="comment">// Filter: y &gt;= 5
         </span><span class="kw">let </span><span class="kw-2">mut 
</span>builder = fixture.table.scan();
         <span class="kw">let </span>predicate = Reference::new(<span 
class="string">"y"</span>).greater_than_or_equal_to(Datum::long(<span 
class="number">5</span>));
-        builder = builder.with_filter(predicate);
+        builder = builder
+            .with_filter(predicate)
+            .with_row_selection_enabled(<span class="bool-val">true</span>);
         <span class="kw">let </span>table_scan = builder.build().unwrap();
 
         <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span 
class="kw">await</span>.unwrap();
@@ -3012,6 +3276,106 @@
         <span class="macro">assert_eq!</span>(int64_arr.value(<span 
class="number">0</span>), <span class="number">5</span>);
     }
 
+    <span class="attr">#[tokio::test]
+    </span><span class="kw">async fn </span>test_filter_double_eq() {
+        <span class="kw">let </span><span class="kw-2">mut </span>fixture = 
TableTestFixture::new();
+        fixture.setup_manifest_files().<span class="kw">await</span>;
+
+        <span class="comment">// Filter: dbl == 150.0
+        </span><span class="kw">let </span><span class="kw-2">mut 
</span>builder = fixture.table.scan();
+        <span class="kw">let </span>predicate = Reference::new(<span 
class="string">"dbl"</span>).equal_to(Datum::double(<span 
class="number">150.0f64</span>));
+        builder = builder
+            .with_filter(predicate)
+            .with_row_selection_enabled(<span class="bool-val">true</span>);
+        <span class="kw">let </span>table_scan = builder.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.len(), <span 
class="number">2</span>);
+        <span class="macro">assert_eq!</span>(batches[<span 
class="number">0</span>].num_rows(), <span class="number">12</span>);
+
+        <span class="kw">let </span>col = batches[<span 
class="number">0</span>].column_by_name(<span 
class="string">"dbl"</span>).unwrap();
+        <span class="kw">let </span>f64_arr = 
col.as_any().downcast_ref::&lt;Float64Array&gt;().unwrap();
+        <span class="macro">assert_eq!</span>(f64_arr.value(<span 
class="number">1</span>), <span class="number">150.0f64</span>);
+    }
+
+    <span class="attr">#[tokio::test]
+    </span><span class="kw">async fn </span>test_filter_int_eq() {
+        <span class="kw">let </span><span class="kw-2">mut </span>fixture = 
TableTestFixture::new();
+        fixture.setup_manifest_files().<span class="kw">await</span>;
+
+        <span class="comment">// Filter: i32 == 150
+        </span><span class="kw">let </span><span class="kw-2">mut 
</span>builder = fixture.table.scan();
+        <span class="kw">let </span>predicate = Reference::new(<span 
class="string">"i32"</span>).equal_to(Datum::int(<span 
class="number">150i32</span>));
+        builder = builder
+            .with_filter(predicate)
+            .with_row_selection_enabled(<span class="bool-val">true</span>);
+        <span class="kw">let </span>table_scan = builder.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.len(), <span 
class="number">2</span>);
+        <span class="macro">assert_eq!</span>(batches[<span 
class="number">0</span>].num_rows(), <span class="number">12</span>);
+
+        <span class="kw">let </span>col = batches[<span 
class="number">0</span>].column_by_name(<span 
class="string">"i32"</span>).unwrap();
+        <span class="kw">let </span>i32_arr = 
col.as_any().downcast_ref::&lt;Int32Array&gt;().unwrap();
+        <span class="macro">assert_eq!</span>(i32_arr.value(<span 
class="number">1</span>), <span class="number">150i32</span>);
+    }
+
+    <span class="attr">#[tokio::test]
+    </span><span class="kw">async fn </span>test_filter_long_eq() {
+        <span class="kw">let </span><span class="kw-2">mut </span>fixture = 
TableTestFixture::new();
+        fixture.setup_manifest_files().<span class="kw">await</span>;
+
+        <span class="comment">// Filter: i64 == 150
+        </span><span class="kw">let </span><span class="kw-2">mut 
</span>builder = fixture.table.scan();
+        <span class="kw">let </span>predicate = Reference::new(<span 
class="string">"i64"</span>).equal_to(Datum::long(<span 
class="number">150i64</span>));
+        builder = builder
+            .with_filter(predicate)
+            .with_row_selection_enabled(<span class="bool-val">true</span>);
+        <span class="kw">let </span>table_scan = builder.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.len(), <span 
class="number">2</span>);
+        <span class="macro">assert_eq!</span>(batches[<span 
class="number">0</span>].num_rows(), <span class="number">12</span>);
+
+        <span class="kw">let </span>col = batches[<span 
class="number">0</span>].column_by_name(<span 
class="string">"i64"</span>).unwrap();
+        <span class="kw">let </span>i64_arr = 
col.as_any().downcast_ref::&lt;Int64Array&gt;().unwrap();
+        <span class="macro">assert_eq!</span>(i64_arr.value(<span 
class="number">1</span>), <span class="number">150i64</span>);
+    }
+
+    <span class="attr">#[tokio::test]
+    </span><span class="kw">async fn </span>test_filter_bool_eq() {
+        <span class="kw">let </span><span class="kw-2">mut </span>fixture = 
TableTestFixture::new();
+        fixture.setup_manifest_files().<span class="kw">await</span>;
+
+        <span class="comment">// Filter: bool == true
+        </span><span class="kw">let </span><span class="kw-2">mut 
</span>builder = fixture.table.scan();
+        <span class="kw">let </span>predicate = Reference::new(<span 
class="string">"bool"</span>).equal_to(Datum::bool(<span 
class="bool-val">true</span>));
+        builder = builder
+            .with_filter(predicate)
+            .with_row_selection_enabled(<span class="bool-val">true</span>);
+        <span class="kw">let </span>table_scan = builder.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.len(), <span 
class="number">2</span>);
+        <span class="macro">assert_eq!</span>(batches[<span 
class="number">0</span>].num_rows(), <span class="number">512</span>);
+
+        <span class="kw">let </span>col = batches[<span 
class="number">0</span>].column_by_name(<span 
class="string">"bool"</span>).unwrap();
+        <span class="kw">let </span>bool_arr = 
col.as_any().downcast_ref::&lt;BooleanArray&gt;().unwrap();
+        <span class="macro">assert!</span>(bool_arr.value(<span 
class="number">1</span>));
+    }
+
     <span class="attr">#[tokio::test]
     </span><span class="kw">async fn </span>test_filter_on_arrow_is_null() {
         <span class="kw">let </span><span class="kw-2">mut </span>fixture = 
TableTestFixture::new();
@@ -3020,7 +3384,9 @@
         <span class="comment">// Filter: y is null
         </span><span class="kw">let </span><span class="kw-2">mut 
</span>builder = fixture.table.scan();
         <span class="kw">let </span>predicate = Reference::new(<span 
class="string">"y"</span>).is_null();
-        builder = builder.with_filter(predicate);
+        builder = builder
+            .with_filter(predicate)
+            .with_row_selection_enabled(<span class="bool-val">true</span>);
         <span class="kw">let </span>table_scan = builder.build().unwrap();
 
         <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span 
class="kw">await</span>.unwrap();
@@ -3037,7 +3403,9 @@
         <span class="comment">// Filter: y is not null
         </span><span class="kw">let </span><span class="kw-2">mut 
</span>builder = fixture.table.scan();
         <span class="kw">let </span>predicate = Reference::new(<span 
class="string">"y"</span>).is_not_null();
-        builder = builder.with_filter(predicate);
+        builder = builder
+            .with_filter(predicate)
+            .with_row_selection_enabled(<span class="bool-val">true</span>);
         <span class="kw">let </span>table_scan = builder.build().unwrap();
 
         <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span 
class="kw">await</span>.unwrap();
@@ -3056,7 +3424,9 @@
         <span class="kw">let </span>predicate = Reference::new(<span 
class="string">"y"</span>)
             .less_than(Datum::long(<span class="number">5</span>))
             .and(Reference::new(<span 
class="string">"z"</span>).greater_than_or_equal_to(Datum::long(<span 
class="number">4</span>)));
-        builder = builder.with_filter(predicate);
+        builder = builder
+            .with_filter(predicate)
+            .with_row_selection_enabled(<span class="bool-val">true</span>);
         <span class="kw">let </span>table_scan = builder.build().unwrap();
 
         <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span 
class="kw">await</span>.unwrap();
@@ -3090,7 +3460,9 @@
         <span class="kw">let </span>predicate = Reference::new(<span 
class="string">"y"</span>)
             .less_than(Datum::long(<span class="number">5</span>))
             .or(Reference::new(<span 
class="string">"z"</span>).greater_than_or_equal_to(Datum::long(<span 
class="number">4</span>)));
-        builder = builder.with_filter(predicate);
+        builder = builder
+            .with_filter(predicate)
+            .with_row_selection_enabled(<span class="bool-val">true</span>);
         <span class="kw">let </span>table_scan = builder.build().unwrap();
 
         <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span 
class="kw">await</span>.unwrap();
@@ -3125,7 +3497,9 @@
         <span class="comment">// Filter: a STARTSWITH "Ice"
         </span><span class="kw">let </span><span class="kw-2">mut 
</span>builder = fixture.table.scan();
         <span class="kw">let </span>predicate = Reference::new(<span 
class="string">"a"</span>).starts_with(Datum::string(<span 
class="string">"Ice"</span>));
-        builder = builder.with_filter(predicate);
+        builder = builder
+            .with_filter(predicate)
+            .with_row_selection_enabled(<span class="bool-val">true</span>);
         <span class="kw">let </span>table_scan = builder.build().unwrap();
 
         <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span 
class="kw">await</span>.unwrap();
@@ -3147,7 +3521,9 @@
         <span class="comment">// Filter: a NOT STARTSWITH "Ice"
         </span><span class="kw">let </span><span class="kw-2">mut 
</span>builder = fixture.table.scan();
         <span class="kw">let </span>predicate = Reference::new(<span 
class="string">"a"</span>).not_starts_with(Datum::string(<span 
class="string">"Ice"</span>));
-        builder = builder.with_filter(predicate);
+        builder = builder
+            .with_filter(predicate)
+            .with_row_selection_enabled(<span class="bool-val">true</span>);
         <span class="kw">let </span>table_scan = builder.build().unwrap();
 
         <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span 
class="kw">await</span>.unwrap();
@@ -3170,7 +3546,9 @@
         </span><span class="kw">let </span><span class="kw-2">mut 
</span>builder = fixture.table.scan();
         <span class="kw">let </span>predicate =
             Reference::new(<span 
class="string">"a"</span>).is_in([Datum::string(<span 
class="string">"Sioux"</span>), Datum::string(<span 
class="string">"Iceberg"</span>)]);
-        builder = builder.with_filter(predicate);
+        builder = builder
+            .with_filter(predicate)
+            .with_row_selection_enabled(<span class="bool-val">true</span>);
         <span class="kw">let </span>table_scan = builder.build().unwrap();
 
         <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span 
class="kw">await</span>.unwrap();
@@ -3193,7 +3571,9 @@
         </span><span class="kw">let </span><span class="kw-2">mut 
</span>builder = fixture.table.scan();
         <span class="kw">let </span>predicate =
             Reference::new(<span 
class="string">"a"</span>).is_not_in([Datum::string(<span 
class="string">"Sioux"</span>), Datum::string(<span 
class="string">"Iceberg"</span>)]);
-        builder = builder.with_filter(predicate);
+        builder = builder
+            .with_filter(predicate)
+            .with_row_selection_enabled(<span class="bool-val">true</span>);
         <span class="kw">let </span>table_scan = builder.build().unwrap();
 
         <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span 
class="kw">await</span>.unwrap();


Reply via email to