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><'de>,</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><'de>,</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 > 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><'de>,</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><'de>,</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><'de>,</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<T> <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 > 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">&</span>as_string ==
<span class="string">"a NOT IN (5, 6)" </span>|| <span
class="kw-2">&</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><'de>,</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><'de>,</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><'de>,</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><'de>,</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><'de>,</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<T> <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>(&self) -> &(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>(&self) -> &(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><'de>,</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><'de>,</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>) ->
<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>(&self) -> <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><'de>,</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><'de>,</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><'de>,</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><'de>,</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><'de>,</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><'de>,</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>(&self, id: <a class="primitive"
href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>) ->
<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>(&self, name: &<a class="primitive"
href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) ->
<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>(&self) -> &[<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><'de>,</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><'de>,</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>(&self) -> <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>(&self) -> &<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>(&self) -> &(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">&</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">&</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">&</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">&</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<Storage>,
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>=> <span
class="prelude-val">Ok</span>(Scheme::Memory),
<span class="string">"file" </span>| <span class="string">""
</span>=> <span class="prelude-val">Ok</span>(Scheme::Fs),
<span class="string">"s3" </span>| <span class="string">"s3a"
</span>=> <span class="prelude-val">Ok</span>(Scheme::S3),
- <span class="string">"gs" </span>=> <span
class="prelude-val">Ok</span>(Scheme::Gcs),
+ <span class="string">"gcs" </span>=> <span
class="prelude-val">Ok</span>(Scheme::Gcs),
s => <span
class="prelude-val">Ok</span>(s.parse::<Scheme>()<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<<span class="kw">_</span>> = 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 < 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 >= 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<<span
class="kw">_</span>> = 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::<Float64Array>().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<<span
class="kw">_</span>> = 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::<Int32Array>().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<<span
class="kw">_</span>> = 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::<Int64Array>().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<<span
class="kw">_</span>> = 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::<BooleanArray>().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();