You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iceberg.apache.org by gi...@apache.org on 2025/02/10 06:54:22 UTC
(iceberg-rust) branch gh-pages updated: deploy: 63545895d2c35db0f0c550cb1c08acd52a9f5b4c
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 6de69633 deploy: 63545895d2c35db0f0c550cb1c08acd52a9f5b4c
6de69633 is described below
commit 6de69633d9bb60947ce8a333cca0b20b8b1a17b5
Author: Xuanwo <Xu...@users.noreply.github.com>
AuthorDate: Mon Feb 10 06:54:17 2025 +0000
deploy: 63545895d2c35db0f0c550cb1c08acd52a9f5b4c
---
api/iceberg/expr/enum.PredicateOperator.html | 4 +-
api/iceberg/expr/struct.Reference.html | 4 +-
api/iceberg/expr/struct.UnaryExpression.html | 4 +-
api/iceberg/spec/enum.DataFileBuilderError.html | 2 +-
api/iceberg/spec/enum.ManifestContentType.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.NestedField.html | 4 +-
api/iceberg/spec/struct.Schema.html | 6 +-
api/iceberg/spec/struct.SortField.html | 4 +-
api/iceberg/struct.Error.html | 2 +-
.../base_writer/equality_delete_writer/index.html | 2 +-
.../struct.EqualityDeleteFileWriter.html | 8 +-
.../struct.EqualityDeleteFileWriterBuilder.html | 2 +-
.../struct.EqualityDeleteWriterConfig.html | 4 +-
api/iceberg/writer/trait.IcebergWriter.html | 2 +-
api/iceberg/writer/trait.IcebergWriterBuilder.html | 2 +-
api/search-index.js | 2 +-
.../iceberg/arrow/record_batch_projector.rs.html | 14 +-
.../base_writer/equality_delete_writer.rs.html | 214 ++++++++++++++++++++-
22 files changed, 251 insertions(+), 45 deletions(-)
diff --git a/api/iceberg/expr/enum.PredicateOperator.html b/api/iceberg/expr/enum.PredicateOperator.html
index b90d31fb..342f7b88 100644
--- a/api/iceberg/expr/enum.PredicateOperator.html
+++ b/api/iceberg/expr/enum.PredicateOperator.html
@@ -50,8 +50,8 @@
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.217/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.217/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Displ [...]
+</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.217/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.217/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Displ [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class= [...]
sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-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.217/serde/ser/trait.Serialize.html" title="tra [...]
__S: <a class="trait" href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-PredicateOperator" class="impl"><a class="src rightside" href="../../src/ice [...]
diff --git a/api/iceberg/expr/struct.Reference.html b/api/iceberg/expr/struct.Reference.html
index 5a173935..5b7d0fa7 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.217/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.217/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Displ [...]
+</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.217/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.217/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Displ [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class= [...]
sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-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.217/serde/ser/trait.Serialize.html" title="trait serde::ser:: [...]
__S: <a class="trait" href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-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 d6650c51..531df0c5 100644
--- a/api/iceberg/expr/struct.UnaryExpression.html
+++ b/api/iceberg/expr/struct.UnaryExpression.html
@@ -4,9 +4,9 @@
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>iceberg::expr::{PredicateOperator, Reference, UnaryExpression};
UnaryExpression::new(PredicateOperator::IsNull, Reference::new(<span class="string">"c"</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-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 [...]
+</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-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 [...]
T: <a class="trait" href="https://docs.rs/serde/1.0.217/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.217/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.217/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Displ [...]
+ __D: <a class="trait" href="https://docs.rs/serde/1.0.217/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.217/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Displ [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class= [...]
sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-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.217/serde/ser/trait. [...]
T: <a class="trait" href="https://docs.rs/serde/1.0.217/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/spec/enum.DataFileBuilderError.html b/api/iceberg/spec/enum.DataFileBuilderError.html
index 4a83fa15..90b41cf2 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#1217">source</a><a href="#impl-Debug-for-DataFileBuilderError" class="anchor">§</a><h3 class="code-header">impl <a cla [...]
+</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#1217">source</a><a href="#impl-Debug-for-DataFileBuilderError" class="anchor">§</a><h3 class="code-header">impl <a cla [...]
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href [...]
T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + 'static,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.as_error_source" class="method trait-impl"><a href="#method.as_error_source" class="anchor">§</a><h4 class="code-header">fn <a class="fn">as_error_source</a>(&self) -> &(dyn <a class="trait" href="https://doc [...]
to benefit from Rust’s automatic dereferencing of method
diff --git a/api/iceberg/spec/enum.ManifestContentType.html b/api/iceberg/spec/enum.ManifestContentType.html
index bf7e91a4..4d3d4c61 100644
--- a/api/iceberg/spec/enum.ManifestContentType.html
+++ b/api/iceberg/spec/enum.ManifestContentType.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>The type of files tracked by the manifest, either data or delete files; Data(0) for all v1 manifests</p>
</div></details><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Data" class="variant"><a href="#variant.Data" class="anchor">§</a><h3 class="code-header">Data = 0</h3></section><div class="docblock"><p>The manifest content is data.</p>
</div><section id="variant.Deletes" class="variant"><a href="#variant.Deletes" class="anchor">§</a><h3 class="code-header">Deletes = 1</h3></section><div class="docblock"><p>The manifest content is deletes.</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-ManifestContentType" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest_list.rs.html#600">source</a><a href="#impl-Clone-for-ManifestContentType" class="anchor">§</a><h3 class="code-header">impl <a c [...]
+</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-ManifestContentType" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest_list.rs.html#600">source</a><a href="#impl-Clone-for-ManifestContentType" class="anchor">§</a><h3 class="code-header">impl <a c [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class= [...]
sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-TryFrom%3Ci32%3E-for-ManifestContentType" class="impl"><a class="src rightside" href="../../src/iceberg/spec/manifest_list.rs.html#632-648">source</a><a href="#impl-TryFrom%3Ci32%3E-for-ManifestContentType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ [...]
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 [...]
diff --git a/api/iceberg/spec/enum.SortOrderBuilderError.html b/api/iceberg/spec/enum.SortOrderBuilderError.html
index fd0d6c18..2c675d7e 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 f419c064..76dc9460 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.217/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.217/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Display [...]
+</div></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.217/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.217/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Display [...]
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#713-718">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.217/serde/ser/trait.Serialize.html" title="trait se [...]
S: <a class="trait" href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-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 f829e45d..4db308fb 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#155-158">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#162-165">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#169-174">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#82">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.217/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.217/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Display [...]
+</div></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#82">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.217/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.217/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Display [...]
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#271-277">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.217/serde/ser/trait.Serialize.html" title="trait serde::ser:: [...]
S: <a class="trait" href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-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 63604244..ceb2e5e8 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.217/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.217/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Display [...]
+</div></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-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.217/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.217/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Display [...]
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.NestedField.html b/api/iceberg/spec/struct.NestedField.html
index bda991a9..ca02c8ec 100644
--- a/api/iceberg/spec/struct.NestedField.html
+++ b/api/iceberg/spec/struct.NestedField.html
@@ -30,8 +30,8 @@ Fields may have an optional comment or doc string. Fields can have default value
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_doc" class="method"><a class="src rightside" href="../../src/iceberg/spec/datatypes.rs.html#659-662">source</a><h4 class="code-header">pub fn <a href="#method.with_doc" class="fn">with_doc</a>(self, doc: impl <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>) -> Self</h4></section></summary><div class=" [...]
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_initial_default" class="method"><a class="src rightside" href="../../src/iceberg/spec/datatypes.rs.html#665-668">source</a><h4 class="code-header">pub fn <a href="#method.with_initial_default" class="fn">with_initial_default</a>(self, value: <a class="enum" href="enum.Literal.html" title="enum iceberg::spec::Literal">Literal</a>) -> Self</h4></section></summary><div class="docblock"><p>Set the [...]
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_write_default" class="method"><a class="src rightside" href="../../src/iceberg/spec/datatypes.rs.html#671-674">source</a><h4 class="code-header">pub fn <a href="#method.with_write_default" class="fn">with_write_default</a>(self, value: <a class="enum" href="enum.Literal.html" title="enum iceberg::spec::Literal">Literal</a>) -> Self</h4></section></summary><div class="docblock"><p>Set the field [...]
-</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-NestedField" class="impl"><a class="src rightside" href="../../src/iceberg/spec/datatypes.rs.html#516">source</a><a href="#impl-Clone-for-NestedField" class="anchor">§</a><h3 class="code-header">imp [...]
- __D: <a class="trait" href="https://docs.rs/serde/1.0.217/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.217/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Displ [...]
+</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-NestedField" class="impl"><a class="src rightside" href="../../src/iceberg/spec/datatypes.rs.html#516">source</a><a href="#impl-Clone-for-NestedField" class="anchor">§</a><h3 class="code-header">imp [...]
+ __D: <a class="trait" href="https://docs.rs/serde/1.0.217/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.217/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Displ [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class= [...]
sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-NestedField" class="impl"><a class="src rightside" href="../../src/iceberg/spec/datatypes.rs.html#516">source</a><a href="#impl-Serialize-for-NestedField" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serialize.html" title="trait se [...]
__S: <a class="trait" href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-NestedField" class="impl"><a class="src rightside" href="../../src/iceberg/spe [...]
diff --git a/api/iceberg/spec/struct.Schema.html b/api/iceberg/spec/struct.Schema.html
index c3a6c620..0a69a2d2 100644
--- a/api/iceberg/spec/struct.Schema.html
+++ b/api/iceberg/spec/struct.Schema.html
@@ -17,11 +17,11 @@
</div></details><details class="toggle method-toggle" open><summary><section id="method.field_id_by_name" class="method"><a class="src rightside" href="../../src/iceberg/spec/schema.rs.html#370-372">source</a><h4 class="code-header">pub fn <a href="#method.field_id_by_name" class="fn">field_id_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/op [...]
</div></details><details class="toggle method-toggle" open><summary><section id="method.name_by_field_id" class="method"><a class="src rightside" href="../../src/iceberg/spec/schema.rs.html#375-377">source</a><h4 class="code-header">pub fn <a href="#method.name_by_field_id" class="fn">name_by_field_id</a>(&self, field_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/opt [...]
</div></details><details class="toggle method-toggle" open><summary><section id="method.accessor_by_field_id" class="method"><a class="src rightside" href="../../src/iceberg/spec/schema.rs.html#380-382">source</a><h4 class="code-header">pub fn <a href="#method.accessor_by_field_id" class="fn">accessor_by_field_id</a>(&self, field_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/nigh [...]
-</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-Schema" class="impl"><a class="src rightside" href="../../src/iceberg/spec/schema.rs.html#45">source</a><a href="#impl-Clone-for-Schema" class="anchor">§</a><h3 class="code-header">impl <a class="tr [...]
- __D: <a class="trait" href="https://docs.rs/serde/1.0.217/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.217/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Displ [...]
+</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-Schema" class="impl"><a class="src rightside" href="../../src/iceberg/spec/schema.rs.html#45">source</a><a href="#impl-Clone-for-Schema" class="anchor">§</a><h3 class="code-header">impl <a class="tr [...]
+ __D: <a class="trait" href="https://docs.rs/serde/1.0.217/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.217/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Displ [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class= [...]
sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-Schema" class="impl"><a class="src rightside" href="../../src/iceberg/spec/schema.rs.html#45">source</a><a href="#impl-Serialize-for-Schema" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serialize.html" title="trait serde::ser::Seri [...]
- __S: <a class="trait" href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-TryFrom%3C%26Schema%3E-for- [...]
+ __S: <a class="trait" href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-TryFrom%3C%26Schema%3E-for- [...]
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https:/ [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
diff --git a/api/iceberg/spec/struct.SortField.html b/api/iceberg/spec/struct.SortField.html
index 04c66d8a..3822b3d6 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.217/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.217/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Displ [...]
+</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.217/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.217/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Displ [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class= [...]
sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-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.217/serde/ser/trait.Serialize.html" title="trait serde::ser:: [...]
__S: <a class="trait" href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.217/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-SortField" 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 ac636d51..f154fe3d 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/iceberg/writer/base_writer/equality_delete_writer/index.html b/api/iceberg/writer/base_writer/equality_delete_writer/index.html
index 50590102..342629d9 100644
--- a/api/iceberg/writer/base_writer/equality_delete_writer/index.html
+++ b/api/iceberg/writer/base_writer/equality_delete_writer/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="This module provide `EqualityDeleteWriter`."><title>iceberg::writer::base_writer::equality_delete_writer - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf084 [...]
+<!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="This module provide `EqualityDeleteWriter`."><title>iceberg::writer::base_writer::equality_delete_writer - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf084 [...]
</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.EqualityDeleteFileWriter.html" title="struct iceberg::writer::base_writer::equality_delete_writer::EqualityDeleteFileWriter">EqualityDeleteFileWriter</a></div><div class="desc docblock-short">Writer used to write equality delete files.</div></li><li><div class="item-name"><a class="struct" href="struct. [...]
\ No newline at end of file
diff --git a/api/iceberg/writer/base_writer/equality_delete_writer/struct.EqualityDeleteFileWriter.html b/api/iceberg/writer/base_writer/equality_delete_writer/struct.EqualityDeleteFileWriter.html
index 1852e41d..690906cb 100644
--- a/api/iceberg/writer/base_writer/equality_delete_writer/struct.EqualityDeleteFileWriter.html
+++ b/api/iceberg/writer/base_writer/equality_delete_writer/struct.EqualityDeleteFileWriter.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Writer used to write equality delete files."><title>EqualityDeleteFileWriter in iceberg::writer::base_writer::equality_delete_writer - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,F [...]
-</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-Debug-for-EqualityDeleteFileWriter%3CB%3E" class="impl"><a class="src rightside" href="../../../../src/iceberg/writer/base_writer/equality_delete_writer.rs.html#125">source</a><a href="#impl-Debug-for-EqualityDeleteFileWriter%3CB% [...]
- B::<a class="associatedtype" href="../../file_writer/trait.FileWriterBuilder.html#associatedtype.R" title="type iceberg::writer::file_writer::FileWriterBuilder::R">R</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../ [...]
+<!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="Writer used to write equality delete files."><title>EqualityDeleteFileWriter in iceberg::writer::base_writer::equality_delete_writer - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,F [...]
+</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-Debug-for-EqualityDeleteFileWriter%3CB%3E" class="impl"><a class="src rightside" href="../../../../src/iceberg/writer/base_writer/equality_delete_writer.rs.html#124">source</a><a href="#impl-Debug-for-EqualityDeleteFileWriter%3CB% [...]
+ B::<a class="associatedtype" href="../../file_writer/trait.FileWriterBuilder.html#associatedtype.R" title="type iceberg::writer::file_writer::FileWriterBuilder::R">R</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../ [...]
&'life0 mut self,
batch: RecordBatch,
) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a><Output = <a class="type" href="../../../type.Result.html" title="type ic [...]
Self: 'async_trait,
- 'life0: 'async_trait,</div></h4></section></summary><div class='docblock'>Write data to iceberg table.</div></details><details class="toggle method-toggle" open><summary><section id="method.close" class="method trait-impl"><a class="src rightside" href="../../../../src/iceberg/writer/base_writer/equality_delete_writer.rs.html#147-166">source</a><a href="#method.close" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.IcebergWriter.html#tymethod.close" class="fn">clo [...]
+ 'life0: 'async_trait,</div></h4></section></summary><div class='docblock'>Write data to iceberg table.</div></details><details class="toggle method-toggle" open><summary><section id="method.close" class="method trait-impl"><a class="src rightside" href="../../../../src/iceberg/writer/base_writer/equality_delete_writer.rs.html#146-165">source</a><a href="#method.close" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.IcebergWriter.html#tymethod.close" class="fn">clo [...]
&'life0 mut self,
) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a><Output = <a class="type" href="../../../type.Result.html" title="type ic [...]
Self: 'async_trait,
diff --git a/api/iceberg/writer/base_writer/equality_delete_writer/struct.EqualityDeleteFileWriterBuilder.html b/api/iceberg/writer/base_writer/equality_delete_writer/struct.EqualityDeleteFileWriterBuilder.html
index 21f2915c..8b9a3c2f 100644
--- a/api/iceberg/writer/base_writer/equality_delete_writer/struct.EqualityDeleteFileWriterBuilder.html
+++ b/api/iceberg/writer/base_writer/equality_delete_writer/struct.EqualityDeleteFileWriterBuilder.html
@@ -1,6 +1,6 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Builder for `EqualityDeleteWriter`."><title>EqualityDeleteFileWriterBuilder in iceberg::writer::base_writer::equality_delete_writer - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,Fi [...]
</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-EqualityDeleteFileWriterBuilder%3CB%3E" class="impl"><a class="src rightside" href="../../../../src/iceberg/writer/base_writer/equality_delete_writer.rs.html#41-46">source</a><a href="#impl-EqualityDeleteFileWriterBuilder%3CB%3E" class="anchor">§</a><h3 [...]
-</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-EqualityDeleteFileWriterBuilder%3CB%3E" class="impl"><a class="src rightside" href="../../../../src/iceberg/writer/base_writer/equality_delete_writer.rs.html#35">source</a><a href="#impl-Clone-for-E [...]
+</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-EqualityDeleteFileWriterBuilder%3CB%3E" class="impl"><a class="src rightside" href="../../../../src/iceberg/writer/base_writer/equality_delete_writer.rs.html#35">source</a><a href="#impl-Clone-for-E [...]
self,
) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a><Output = <a class="type" href="../../../type.Result.html" title="type ic [...]
Self: 'async_trait,</div></h4></section></summary><div class='docblock'>Build the iceberg writer.</div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-EqualityDeleteFileWriterBuilder%3CB%3E" class="impl"><a href="#impl-Freeze-for-EqualityDeleteFileWriterBuilder%3CB%3E" class="anchor">§</ [...]
diff --git a/api/iceberg/writer/base_writer/equality_delete_writer/struct.EqualityDeleteWriterConfig.html b/api/iceberg/writer/base_writer/equality_delete_writer/struct.EqualityDeleteWriterConfig.html
index 6a62d4e2..b5296554 100644
--- a/api/iceberg/writer/base_writer/equality_delete_writer/struct.EqualityDeleteWriterConfig.html
+++ b/api/iceberg/writer/base_writer/equality_delete_writer/struct.EqualityDeleteWriterConfig.html
@@ -1,10 +1,10 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Config for `EqualityDeleteWriter`."><title>EqualityDeleteWriterConfig in iceberg::writer::base_writer::equality_delete_writer - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans [...]
-</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-EqualityDeleteWriterConfig" class="impl"><a class="src rightside" href="../../../../src/iceberg/writer/base_writer/equality_delete_writer.rs.html#58-108">source</a><a href="#impl-EqualityDeleteWriterConfig" class="anchor">§</a><h3 class="code-header">imp [...]
+</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-EqualityDeleteWriterConfig" class="impl"><a class="src rightside" href="../../../../src/iceberg/writer/base_writer/equality_delete_writer.rs.html#58-107">source</a><a href="#impl-EqualityDeleteWriterConfig" class="anchor">§</a><h3 class="code-header">imp [...]
equality_ids: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>>,
original_schema: <a class="type" href="../../../spec/type.SchemaRef.html" title="type iceberg::spec::SchemaRef">SchemaRef</a>,
partition_value: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../../spec/struct.Struct.html" title="struct iceberg::spec::Struct">Struct</a>>,
) -> <a class="type" href="../../../type.Result.html" title="type iceberg::Result">Result</a><Self></h4></section></summary><div class="docblock"><p>Create a new <code>DataFileWriterConfig</code> with equality ids.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.projected_arrow_schema_ref" class="method"><a class="src rightside" href="../../../../src/iceberg/writer/base_writer/equality_delete_writer.rs.html#105-107">source</a><h4 class="code-header">pub fn <a href="#method.projected_arrow_schema_ref" class="fn">projected_arrow_schema_ref</a>(&self) -> &ArrowSchemaRef</h4></section></summary><div class="docblock"><p>Return projected Schema</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.projected_arrow_schema_ref" class="method"><a class="src rightside" href="../../../../src/iceberg/writer/base_writer/equality_delete_writer.rs.html#104-106">source</a><h4 class="code-header">pub fn <a href="#method.projected_arrow_schema_ref" class="fn">projected_arrow_schema_ref</a>(&self) -> &ArrowSchemaRef</h4></section></summary><div class="docblock"><p>Return projected Schema</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-EqualityDeleteWriterConfig" class="impl"><a class="src rightside" href="../../../../src/iceberg/writer/base_writer/equality_delete_writer.rs.html#49">source</a><a href="#impl-Clone-for-EqualityDelet [...]
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https:/ [...]
diff --git a/api/iceberg/writer/trait.IcebergWriter.html b/api/iceberg/writer/trait.IcebergWriter.html
index 8a57970e..8f2c8126 100644
--- a/api/iceberg/writer/trait.IcebergWriter.html
+++ b/api/iceberg/writer/trait.IcebergWriter.html
@@ -26,4 +26,4 @@
If close failed, the data written before maybe be lost. User may need to recreate the writer and rewrite the data again.</p>
<h5 id="note"><a class="doc-anchor" href="#note">§</a>NOTE</h5>
<p>After close, regardless of success or failure, the writer should never be used again, otherwise the writer will panic.</p>
-</div></details></div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-IcebergWriter-for-DataFileWriter%3CB%3E" class="impl"><a class="src rightside" href="../../src/iceberg/writer/base_writer/data_file_writer.rs.html#65-83">source</a><a href="#impl-IcebergWriter-for-DataFileWriter%3CB%3E" class="anchor">§</a><h3 class="code-header">impl<B: <a class="trait" href="file_writer/trait.Fi [...]
\ No newline at end of file
+</div></details></div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-IcebergWriter-for-DataFileWriter%3CB%3E" class="impl"><a class="src rightside" href="../../src/iceberg/writer/base_writer/data_file_writer.rs.html#65-83">source</a><a href="#impl-IcebergWriter-for-DataFileWriter%3CB%3E" class="anchor">§</a><h3 class="code-header">impl<B: <a class="trait" href="file_writer/trait.Fi [...]
\ No newline at end of file
diff --git a/api/iceberg/writer/trait.IcebergWriterBuilder.html b/api/iceberg/writer/trait.IcebergWriterBuilder.html
index b87b6c2c..99febbaf 100644
--- a/api/iceberg/writer/trait.IcebergWriterBuilder.html
+++ b/api/iceberg/writer/trait.IcebergWriterBuilder.html
@@ -12,4 +12,4 @@
self,
) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a><Output = <a class="type" href="../type.Result.html" title="type iceberg: [...]
Self: 'async_trait,</div></h4></section></summary><div class="docblock"><p>Build the iceberg writer.</p>
-</div></details></div><h2 id="object-safety" class="section-header">Object Safety<a href="#object-safety" class="anchor">§</a></h2><div class="object-safety-info">This trait is <b>not</b> <a href="https://doc.rust-lang.org/nightly/reference/items/traits.html#object-safety">object safe</a>.</div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><details class="toggle implementors-toggle"><summary><section [...]
\ No newline at end of file
+</div></details></div><h2 id="object-safety" class="section-header">Object Safety<a href="#object-safety" class="anchor">§</a></h2><div class="object-safety-info">This trait is <b>not</b> <a href="https://doc.rust-lang.org/nightly/reference/items/traits.html#object-safety">object safe</a>.</div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><details class="toggle implementors-toggle"><summary><section [...]
\ No newline at end of file
diff --git a/api/search-index.js b/api/search-index.js
index e4e3dff3..9eb3cb27 100644
--- a/api/search-index.js
+++ b/api/search-index.js
@@ -1,5 +1,5 @@
var searchIndex = new Map(JSON.parse('[\
-["iceberg",{"t":"PPPPPKPPPPPFGPPPFFPPPPPPPPPIPPPPPPPPFFFGGPPPFNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMQNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNCNNNNNNNNNNNCNMMMOONNNOOONOMNNNNNNONOOMOCOONNNNONCOCMNNNNNNNNNNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNCOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFFKSRRSNNNNNNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNMMMNMHMNNNNNNNHNNNNNNPPPPPPPPFKRGFIPPPPPPPPFPPPPPPPPPGGFPPFPIPPFNNMNNNNNNNNNNNNNNNNNNNNNNN [...]
+["iceberg",{"t":"PPPPPKPPPPPFGPPPFFPPPPPPPPPIPPPPPPPPFFFGGPPPFNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMQNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNCNNNNNNNNNNNCNMMMOONNNOOONOMNNNNNNONOOMOCOONNNNONCOCMNNNNNNNNNNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNCOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFFKSRRSNNNNNNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNMMMNMHMNNNNNNNHNNNNNNPPPPPPPPFKRGFIPPPPPPPPFPPPPPPPPPGGFPPFPIPPFNNMNNNNNNNNNNNNNNNNNNNNNNN [...]
["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/arrow/record_batch_projector.rs.html b/api/src/iceberg/arrow/record_batch_projector.rs.html
index e7c0460e..acf721a0 100644
--- a/api/src/iceberg/arrow/record_batch_projector.rs.html
+++ b/api/src/iceberg/arrow/record_batch_projector.rs.html
@@ -289,6 +289,11 @@
<a href="#289" id="289">289</a>
<a href="#290" id="290">290</a>
<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</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
@@ -308,7 +313,8 @@
</span><span class="kw">use </span>std::sync::Arc;
-<span class="kw">use </span>arrow_array::{ArrayRef, RecordBatch, StructArray};
+<span class="kw">use </span>arrow_array::{make_array, ArrayRef, RecordBatch, StructArray};
+<span class="kw">use </span>arrow_buffer::NullBuffer;
<span class="kw">use </span>arrow_schema::{DataType, Field, FieldRef, Fields, Schema, SchemaRef};
<span class="kw">use </span><span class="kw">crate</span>::error::Result;
@@ -429,6 +435,7 @@
<span class="kw">fn </span>get_column_by_field_index(batch: <span class="kw-2">&</span>[ArrayRef], field_index: <span class="kw-2">&</span>[usize]) -> <span class="prelude-ty">Result</span><ArrayRef> {
<span class="kw">let </span><span class="kw-2">mut </span>rev_iterator = field_index.iter().rev();
<span class="kw">let </span><span class="kw-2">mut </span>array = batch[<span class="kw-2">*</span>rev_iterator.next().unwrap()].clone();
+ <span class="kw">let </span><span class="kw-2">mut </span>null_buffer = array.logical_nulls();
<span class="kw">for </span>idx <span class="kw">in </span>rev_iterator {
array = array
.as_any()
@@ -439,8 +446,11 @@
))<span class="question-mark">?
</span>.column(<span class="kw-2">*</span>idx)
.clone();
+ null_buffer = NullBuffer::union(null_buffer.as_ref(), array.logical_nulls().as_ref());
}
- <span class="prelude-val">Ok</span>(array)
+ <span class="prelude-val">Ok</span>(make_array(
+ array.to_data().into_builder().nulls(null_buffer).build()<span class="question-mark">?</span>,
+ ))
}
}
diff --git a/api/src/iceberg/writer/base_writer/equality_delete_writer.rs.html b/api/src/iceberg/writer/base_writer/equality_delete_writer.rs.html
index 8fe69057..e8ba5e6e 100644
--- a/api/src/iceberg/writer/base_writer/equality_delete_writer.rs.html
+++ b/api/src/iceberg/writer/base_writer/equality_delete_writer.rs.html
@@ -658,6 +658,104 @@
<a href="#658" id="658">658</a>
<a href="#659" id="659">659</a>
<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</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
@@ -727,13 +825,12 @@
original_arrow_schema,
<span class="kw-2">&</span>equality_ids,
<span class="comment">// The following rule comes from https://iceberg.apache.org/spec/#identifier-field-ids
+ // and https://iceberg.apache.org/spec/#equality-delete-files
// - The identifier field ids must be used for primitive types.
// - The identifier field ids must not be used for floating point types or nullable fields.
- // - The identifier field ids can be nested field of struct but not nested field of nullable struct.
</span>|field| {
<span class="comment">// Only primitive type is allowed to be used for identifier field ids
- </span><span class="kw">if </span>field.is_nullable()
- || field.data_type().is_nested()
+ </span><span class="kw">if </span>field.data_type().is_nested()
|| <span class="macro">matches!</span>(
field.data_type(),
DataType::Float16 | DataType::Float32 | DataType::Float64
@@ -752,7 +849,7 @@
.map_err(|e| Error::new(ErrorKind::Unexpected, e.to_string()))<span class="question-mark">?</span>,
))
},
- |field: <span class="kw-2">&</span>Field| !field.is_nullable(),
+ |_field: <span class="kw-2">&</span>Field| <span class="bool-val">true</span>,
)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(<span class="self">Self </span>{
equality_ids,
@@ -828,14 +925,17 @@
<span class="attr">#[cfg(test)]
</span><span class="kw">mod </span>test {
+ <span class="kw">use </span>std::collections::HashMap;
<span class="kw">use </span>std::sync::Arc;
<span class="kw">use </span>arrow_array::types::Int32Type;
<span class="kw">use </span>arrow_array::{ArrayRef, BooleanArray, Int32Array, Int64Array, RecordBatch, StructArray};
- <span class="kw">use </span>arrow_schema::DataType;
+ <span class="kw">use </span>arrow_buffer::NullBuffer;
+ <span class="kw">use </span>arrow_schema::{DataType, Field, Fields};
<span class="kw">use </span>arrow_select::concat::concat_batches;
<span class="kw">use </span>itertools::Itertools;
<span class="kw">use </span>parquet::arrow::arrow_reader::ParquetRecordBatchReaderBuilder;
+ <span class="kw">use </span>parquet::arrow::PARQUET_FIELD_ID_META_KEY;
<span class="kw">use </span>parquet::file::properties::WriterProperties;
<span class="kw">use </span>tempfile::TempDir;
<span class="kw">use </span>uuid::Uuid;
@@ -1144,14 +1244,10 @@
<span class="comment">// Float and Double are not allowed to be used for equality delete
</span><span class="macro">assert!</span>(EqualityDeleteWriterConfig::new(<span class="macro">vec!</span>[<span class="number">0</span>], schema.clone(), <span class="prelude-val">None</span>).is_err());
<span class="macro">assert!</span>(EqualityDeleteWriterConfig::new(<span class="macro">vec!</span>[<span class="number">1</span>], schema.clone(), <span class="prelude-val">None</span>).is_err());
- <span class="comment">// Int is nullable, not allowed to be used for equality delete
- </span><span class="macro">assert!</span>(EqualityDeleteWriterConfig::new(<span class="macro">vec!</span>[<span class="number">2</span>], schema.clone(), <span class="prelude-val">None</span>).is_err());
<span class="comment">// Struct is not allowed to be used for equality delete
</span><span class="macro">assert!</span>(EqualityDeleteWriterConfig::new(<span class="macro">vec!</span>[<span class="number">3</span>], schema.clone(), <span class="prelude-val">None</span>).is_err());
<span class="comment">// Nested field of struct is allowed to be used for equality delete
</span><span class="macro">assert!</span>(EqualityDeleteWriterConfig::new(<span class="macro">vec!</span>[<span class="number">4</span>], schema.clone(), <span class="prelude-val">None</span>).is_ok());
- <span class="comment">// Nested field of optional struct is not allowed to be used for equality delete
- </span><span class="macro">assert!</span>(EqualityDeleteWriterConfig::new(<span class="macro">vec!</span>[<span class="number">6</span>], schema.clone(), <span class="prelude-val">None</span>).is_err());
<span class="comment">// Nested field of map is not allowed to be used for equality delete
</span><span class="macro">assert!</span>(EqualityDeleteWriterConfig::new(<span class="macro">vec!</span>[<span class="number">7</span>], schema.clone(), <span class="prelude-val">None</span>).is_err());
<span class="macro">assert!</span>(EqualityDeleteWriterConfig::new(<span class="macro">vec!</span>[<span class="number">8</span>], schema.clone(), <span class="prelude-val">None</span>).is_err());
@@ -1317,5 +1413,105 @@
<span class="prelude-val">Ok</span>(())
}
+
+ <span class="attr">#[tokio::test]
+ </span><span class="kw">async fn </span>test_equality_delete_with_nullable_field() -> <span class="prelude-ty">Result</span><(), anyhow::Error> {
+ <span class="comment">// prepare data
+ // Int, Struct(Int), Struct(Struct(Int))
+ </span><span class="kw">let </span>schema = Schema::builder()
+ .with_schema_id(<span class="number">1</span>)
+ .with_fields(<span class="macro">vec!</span>[
+ NestedField::optional(<span class="number">0</span>, <span class="string">"col0"</span>, Type::Primitive(PrimitiveType::Int)).into(),
+ NestedField::optional(
+ <span class="number">1</span>,
+ <span class="string">"col1"</span>,
+ Type::Struct(StructType::new(<span class="macro">vec!</span>[NestedField::optional(
+ <span class="number">2</span>,
+ <span class="string">"sub_col"</span>,
+ Type::Primitive(PrimitiveType::Int),
+ )
+ .into()])),
+ )
+ .into(),
+ NestedField::optional(
+ <span class="number">3</span>,
+ <span class="string">"col2"</span>,
+ Type::Struct(StructType::new(<span class="macro">vec!</span>[NestedField::optional(
+ <span class="number">4</span>,
+ <span class="string">"sub_struct_col"</span>,
+ Type::Struct(StructType::new(<span class="macro">vec!</span>[NestedField::optional(
+ <span class="number">5</span>,
+ <span class="string">"sub_sub_col"</span>,
+ Type::Primitive(PrimitiveType::Int),
+ )
+ .into()])),
+ )
+ .into()])),
+ )
+ .into(),
+ ])
+ .build()
+ .unwrap();
+ <span class="kw">let </span>arrow_schema = Arc::new(schema_to_arrow_schema(<span class="kw-2">&</span>schema).unwrap());
+ <span class="comment">// null 1 null(struct)
+ // 2 null(struct) null(sub_struct_col)
+ // 3 null(field) null(sub_sub_col)
+ </span><span class="kw">let </span>col0 = Arc::new(Int32Array::from(<span class="macro">vec!</span>[<span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(<span class="number">2</span>), <span class="prelude-val">Some</span>(<span class="number">3</span>)])) <span class="kw">as </span>ArrayRef;
+ <span class="kw">let </span>col1 = {
+ <span class="kw">let </span>nulls = NullBuffer::from(<span class="macro">vec!</span>[<span class="bool-val">true</span>, <span class="bool-val">false</span>, <span class="bool-val">true</span>]);
+ Arc::new(StructArray::new(
+ <span class="kw">if let </span>DataType::Struct(fields) = arrow_schema.fields.get(<span class="number">1</span>).unwrap().data_type() {
+ fields.clone()
+ } <span class="kw">else </span>{
+ <span class="macro">unreachable!</span>()
+ },
+ <span class="macro">vec!</span>[Arc::new(Int32Array::from(<span class="macro">vec!</span>[<span class="prelude-val">Some</span>(<span class="number">1</span>), <span class="prelude-val">Some</span>(<span class="number">2</span>), <span class="prelude-val">None</span>]))],
+ <span class="prelude-val">Some</span>(nulls),
+ ))
+ };
+ <span class="kw">let </span>col2 = {
+ <span class="kw">let </span>inner_col = {
+ <span class="kw">let </span>nulls = NullBuffer::from(<span class="macro">vec!</span>[<span class="bool-val">true</span>, <span class="bool-val">false</span>, <span class="bool-val">true</span>]);
+ Arc::new(StructArray::new(
+ Fields::from(<span class="macro">vec!</span>[Field::new(<span class="string">"sub_sub_col"</span>, DataType::Int32, <span class="bool-val">true</span>)
+ .with_metadata(HashMap::from([(
+ PARQUET_FIELD_ID_META_KEY.to_string(),
+ <span class="string">"5"</span>.to_string(),
+ )]))]),
+ <span class="macro">vec!</span>[Arc::new(Int32Array::from(<span class="macro">vec!</span>[<span class="prelude-val">Some</span>(<span class="number">1</span>), <span class="prelude-val">Some</span>(<span class="number">2</span>), <span class="prelude-val">None</span>]))],
+ <span class="prelude-val">Some</span>(nulls),
+ ))
+ };
+ <span class="kw">let </span>nulls = NullBuffer::from(<span class="macro">vec!</span>[<span class="bool-val">false</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>]);
+ Arc::new(StructArray::new(
+ <span class="kw">if let </span>DataType::Struct(fields) = arrow_schema.fields.get(<span class="number">2</span>).unwrap().data_type() {
+ fields.clone()
+ } <span class="kw">else </span>{
+ <span class="macro">unreachable!</span>()
+ },
+ <span class="macro">vec!</span>[inner_col],
+ <span class="prelude-val">Some</span>(nulls),
+ ))
+ };
+ <span class="kw">let </span>columns = <span class="macro">vec!</span>[col0, col1, col2];
+
+ <span class="kw">let </span>to_write = RecordBatch::try_new(arrow_schema.clone(), columns).unwrap();
+ <span class="kw">let </span>equality_ids = <span class="macro">vec!</span>[<span class="number">0_i32</span>, <span class="number">2</span>, <span class="number">5</span>];
+ <span class="kw">let </span>equality_config =
+ EqualityDeleteWriterConfig::new(equality_ids, Arc::new(schema), <span class="prelude-val">None</span>).unwrap();
+ <span class="kw">let </span>projector = equality_config.projector.clone();
+
+ <span class="comment">// check
+ </span><span class="kw">let </span>to_write_projected = projector.project_batch(to_write)<span class="question-mark">?</span>;
+ <span class="kw">let </span>expect_batch =
+ RecordBatch::try_new(equality_config.projected_arrow_schema_ref().clone(), <span class="macro">vec!</span>[
+ Arc::new(Int32Array::from(<span class="macro">vec!</span>[<span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(<span class="number">2</span>), <span class="prelude-val">Some</span>(<span class="number">3</span>)])) <span class="kw">as </span>ArrayRef,
+ Arc::new(Int32Array::from(<span class="macro">vec!</span>[<span class="prelude-val">Some</span>(<span class="number">1</span>), <span class="prelude-val">None</span>, <span class="prelude-val">None</span>])) <span class="kw">as </span>ArrayRef,
+ Arc::new(Int32Array::from(<span class="macro">vec!</span>[<span class="prelude-val">None</span>, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>])) <span class="kw">as </span>ArrayRef,
+ ])
+ .unwrap();
+ <span class="macro">assert_eq!</span>(to_write_projected, expect_batch);
+ <span class="prelude-val">Ok</span>(())
+ }
}
</code></pre></div></section></main></body></html>
\ No newline at end of file