This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 2c438a67ffa deploy: 883c13ae2177f9b029452df5cc9d9c119fa989d3
2c438a67ffa is described below
commit 2c438a67ffadbf620aaed361647554797a157bd4
Author: tustvold <[email protected]>
AuthorDate: Mon Apr 15 12:00:49 2024 +0000
deploy: 883c13ae2177f9b029452df5cc9d9c119fa989d3
---
arrow/array/trait.RecordBatchReader.html | 12 +-
arrow/array/trait.RecordBatchWriter.html | 6 +-
arrow/datatypes/struct.Field.html | 4 +-
arrow/index.html | 6 +-
arrow/record_batch/trait.RecordBatchReader.html | 12 +-
arrow/record_batch/trait.RecordBatchWriter.html | 6 +-
parquet/arrow/arrow_reader/index.html | 2 +-
src/parquet/arrow/arrow_reader/mod.rs.html | 248 +++++++++++++++++++++++-
8 files changed, 270 insertions(+), 26 deletions(-)
diff --git a/arrow/array/trait.RecordBatchReader.html
b/arrow/array/trait.RecordBatchReader.html
index 635ab05a3d9..d8a2376e5c9 100644
--- a/arrow/array/trait.RecordBatchReader.html
+++ b/arrow/array/trait.RecordBatchReader.html
@@ -11,10 +11,10 @@
reader should have the same schema as returned from this method.</p>
</div></details></div><h2 id="provided-methods"
class="section-header">Provided Methods<a href="#provided-methods"
class="anchor">§</a></h2><div class="methods"><details class="toggle
method-toggle" open><summary><section id="method.next_batch" class="method"><h4
class="code-header">fn <a href="#method.next_batch"
class="fn">next_batch</a>(&mut self) -> <a class="enum"
href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"
title="enum core::result::Result">Result</a [...]
</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-IntoPyArrow-for-Box%3Cdyn+RecordBatchReader+%2B+Send%3E"
class="impl"><a class="src rightside"
href="../../src/arrow/pyarrow.rs.html#448-462">source</a><a
href="#impl-IntoPyArrow-for-Box%3Cdyn+RecordBatchReader+%2B+Send%3E" [...]
-</div><div class="impl-items"><section id="method.into_pyarrow" class="method
trait-impl"><a class="src rightside"
href="../../src/arrow/pyarrow.rs.html#451-461">source</a><a
href="#method.into_pyarrow" class="anchor">§</a><h4 class="code-header">fn <a
href="../pyarrow/trait.IntoPyArrow.html#tymethod.into_pyarrow"
class="fn">into_pyarrow</a>(self, py: Python<'_>) ->
PyResult<PyObject></h4></section></div></details></div><h2
id="foreign-impls" class="section-header">Impleme [...]
- R: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Read.html" title="trait
std::io::Read">Read</a> + <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Seek.html" title="trait
std::io::Seek">Seek</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.schema" class="method trait-impl"><a
class="src rightside"
href="../../src/arrow_ipc/reader.rs.html#1119">source</a><a
href="#method.schema" class="anchor">§</a><h4 class=" [...]
- R: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Read.html" title="trait
std::io::Read">Read</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.schema-1" class="method trait-impl"><a
class="src rightside"
href="../../src/arrow_ipc/reader.rs.html#1351">source</a><a
href="#method.schema-1" class="anchor">§</a><h4 class="code-header">fn <a
href="../../arrow_ipc/foreigntype.reader.html#tymethod.schema"
class="fn">schema</a>(&self) - [...]
- R: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.BufRead.html" title="trait
std::io::BufRead">BufRead</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.schema-2" class="method trait-impl"><a
class="src rightside"
href="../../src/arrow_json/reader/mod.rs.html#349">source</a><a
href="#method.schema-2" class="anchor">§</a><h4 class="code-header">fn <a
href="../../arrow_json/foreigntype.reader.html#tymethod.schema"
class="fn">schema</a [...]
- R: <a class="trait" href="../record_batch/trait.RecordBatchReader.html"
title="trait arrow::record_batch::RecordBatchReader">RecordBatchReader</a> +
?<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"><section id="method.schema-3" class="method trait-impl"><a
href="#method.schema-3" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">schema</ [...]
- R: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.BufRead.html" title="trait
std::io::BufRead">BufRead</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.schema-4" class="method trait-impl"><a
href="#method.schema-4" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">schema</a>(&self) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html"
title="struct alloc::sync::Arc">Arc</a><<a [...]
+</div><div class="impl-items"><section id="method.into_pyarrow" class="method
trait-impl"><a class="src rightside"
href="../../src/arrow/pyarrow.rs.html#451-461">source</a><a
href="#method.into_pyarrow" class="anchor">§</a><h4 class="code-header">fn <a
href="../pyarrow/trait.IntoPyArrow.html#tymethod.into_pyarrow"
class="fn">into_pyarrow</a>(self, py: Python<'_>) ->
PyResult<PyObject></h4></section></div></details></div><h2
id="foreign-impls" class="section-header">Impleme [...]
+ R: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.BufRead.html" title="trait
std::io::BufRead">BufRead</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.schema" class="method trait-impl"><a
class="src rightside"
href="../../src/arrow_json/reader/mod.rs.html#349">source</a><a
href="#method.schema" class="anchor">§</a><h4 class="code-header">fn <a
href="../../arrow_json/foreigntype.reader.html#tymethod.schema"
class="fn">schema</a>(&a [...]
+ R: <a class="trait" href="../record_batch/trait.RecordBatchReader.html"
title="trait arrow::record_batch::RecordBatchReader">RecordBatchReader</a> +
?<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"><section id="method.schema-1" class="method trait-impl"><a
href="#method.schema-1" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">schema</ [...]
+ R: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.BufRead.html" title="trait
std::io::BufRead">BufRead</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.schema-2" class="method trait-impl"><a
href="#method.schema-2" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">schema</a>(&self) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html"
title="struct alloc::sync::Arc">Arc</a><<a [...]
+ R: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Read.html" title="trait
std::io::Read">Read</a> + <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Seek.html" title="trait
std::io::Seek">Seek</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.schema-3" class="method trait-impl"><a
href="#method.schema-3" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">schema</a>(&self) -> <a class="struct" hr [...]
+ R: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Read.html" title="trait
std::io::Read">Read</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.schema-4" class="method trait-impl"><a
href="#method.schema-4" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">schema</a>(&self) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html"
title="struct alloc::sync::Arc">Arc</a><<a class="s [...]
I: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html"
title="trait
core::iter::traits::collect::IntoIterator">IntoIterator</a><Item = <a
class="enum"
href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"
title="enum core::result::Result">Result</a><<a class="struct"
href="../record_batch/struct.RecordBatch.html" title="struct
arrow::record_batch::RecordBatch">RecordBatch</a>, <a class="enum"
href="../error/ [...]
\ No newline at end of file
diff --git a/arrow/array/trait.RecordBatchWriter.html
b/arrow/array/trait.RecordBatchWriter.html
index 6877e63e3ba..b7f045e815d 100644
--- a/arrow/array/trait.RecordBatchWriter.html
+++ b/arrow/array/trait.RecordBatchWriter.html
@@ -5,9 +5,9 @@
}</code></pre><details class="toggle top-doc" open><summary
class="hideme"><span>Expand description</span></summary><div
class="docblock"><p>Trait for types that can write
<code>RecordBatch</code>’s.</p>
</div></details><h2 id="required-methods" class="section-header">Required
Methods<a href="#required-methods" class="anchor">§</a></h2><div
class="methods"><details class="toggle method-toggle" open><summary><section
id="tymethod.write" class="method"><h4 class="code-header">fn <a
href="#tymethod.write" class="fn">write</a>(&mut self, batch: &<a
class="struct" href="../record_batch/struct.RecordBatch.html" title="struct
arrow::record_batch::RecordBatch">RecordBatch</a>) -> <a c [...]
</div></details><details class="toggle method-toggle" open><summary><section
id="tymethod.close" class="method"><h4 class="code-header">fn <a
href="#tymethod.close" class="fn">close</a>(self) -> <a class="enum"
href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"
title="enum core::result::Result">Result</a><<a class="primitive"
href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a
class="enum" href="../error/enum.ArrowError.html" title="enum a [...]
-</div></details></div><h2 id="foreign-impls"
class="section-header">Implementations on Foreign Types<a href="#foreign-impls"
class="anchor">§</a></h2><details class="toggle
implementors-toggle"><summary><section
id="impl-RecordBatchWriter-for-FileWriter%3CW%3E" class="impl"><a class="src
rightside" href="../../src/arrow_ipc/writer.rs.html#898">source</a><a
href="#impl-RecordBatchWriter-for-FileWriter%3CW%3E" class="anchor">§</a><h3
class="code-header">impl<W> <a class="trait" href= [...]
- W: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait
std::io::Write">Write</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.write" class="method trait-impl"><a
class="src rightside"
href="../../src/arrow_ipc/writer.rs.html#899">source</a><a href="#method.write"
class="anchor">§</a><h4 class="code-header">fn <a
href="../../arrow_ipc/foreigntype.writer.html#tymethod.write"
class="fn">write</a>(&mut self, bat [...]
- W: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait
std::io::Write">Write</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.write-1" class="method trait-impl"><a
class="src rightside"
href="../../src/arrow_ipc/writer.rs.html#1044">source</a><a
href="#method.write-1" class="anchor">§</a><h4 class="code-header">fn <a
href="../../arrow_ipc/foreigntype.writer.html#tymethod.write"
class="fn">write</a>(&mut self [...]
+</div></details></div><h2 id="foreign-impls"
class="section-header">Implementations on Foreign Types<a href="#foreign-impls"
class="anchor">§</a></h2><details class="toggle
implementors-toggle"><summary><section
id="impl-RecordBatchWriter-for-FileWriter%3CW%3E" class="impl"><a
href="#impl-RecordBatchWriter-for-FileWriter%3CW%3E" class="anchor">§</a><h3
class="code-header">impl<W> <a class="trait"
href="../record_batch/trait.RecordBatchWriter.html" title="trait
arrow::record_batch:: [...]
+ W: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait
std::io::Write">Write</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.write" class="method trait-impl"><a
href="#method.write" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">write</a>(&mut self, batch: &<a class="struct"
href="../record_batch/struct.RecordBatch.html" title="struct
arrow::record_batch::RecordBatch">RecordBatch</a>) -> [...]
+ W: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait
std::io::Write">Write</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.write-1" class="method trait-impl"><a
href="#method.write-1" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">write</a>(&mut self, batch: &<a class="struct"
href="../record_batch/struct.RecordBatch.html" title="struct
arrow::record_batch::RecordBatch">RecordBatch</a>) [...]
W: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait
std::io::Write">Write</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.write-2" class="method trait-impl"><a
href="#method.write-2" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">write</a>(&mut self, batch: &<a class="struct"
href="../record_batch/struct.RecordBatch.html" title="struct
arrow::record_batch::RecordBatch">RecordBatch</a>) [...]
W: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait
std::io::Write">Write</a>,
F: <a class="trait" href="../../arrow_json/writer/trait.JsonFormat.html"
title="trait
arrow_json::writer::JsonFormat">JsonFormat</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.write-3" class="method trait-impl"><a
class="src rightside"
href="../../src/arrow_json/writer.rs.html#819">source</a><a
href="#method.write-3" class="anchor">§</a><h4 class="code-header">fn <a
href="../../arrow_json/foreigntype.writer.html#tymethod.write"
class="fn">write</a>(&am [...]
\ No newline at end of file
diff --git a/arrow/datatypes/struct.Field.html
b/arrow/datatypes/struct.Field.html
index 8a78c0f2276..b7ca1f7cbe0 100644
--- a/arrow/datatypes/struct.Field.html
+++ b/arrow/datatypes/struct.Field.html
@@ -158,8 +158,8 @@
__deserializer: __D
) -> <a class="enum"
href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"
title="enum core::result::Result">Result</a><<a class="struct"
href="struct.Field.html" title="struct arrow::datatypes::Field">Field</a>,
<__D as <a class="trait"
href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html"
title="trait serde::de::Deserializer">Deserializer</a><'de>>::<a
class="associatedtype"
href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize [...]
__D: <a class="trait"
href="https://docs.rs/serde/1.0.197/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.197/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 [...]
- T: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html"
title="trait
core::iter::traits::collect::IntoIterator">IntoIterator</a><Item = <a
class="struct" href="struct.Field.html" title="struct
arrow::datatypes::Field">Field</a>>,</div></h4></section></summary><div
class='docblock'>Extends a collection with the contents of an iterator. <a
href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymet
[...]
-</div><div class="impl-items"><details class="toggle method-toggle"
open><summary><section id="method.from" class="method trait-impl"><a class="src
rightside" href="../../src/arrow_ipc/convert.rs.html#87">source</a><a
href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a
href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from"
class="fn">from</a>(field: <a class="struct"
href="../../arrow_ipc/gen/Schema/struct.Field.html" title="struct arrow_ipc
[...]
+ T: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html"
title="trait
core::iter::traits::collect::IntoIterator">IntoIterator</a><Item = <a
class="struct" href="struct.Field.html" title="struct
arrow::datatypes::Field">Field</a>>,</div></h4></section></summary><div
class='docblock'>Extends a collection with the contents of an iterator. <a
href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymet
[...]
+</div><div class="impl-items"><details class="toggle method-toggle"
open><summary><section id="method.from" class="method trait-impl"><a
href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a
href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from"
class="fn">from</a>(field: Field<'_>) -> <a class="struct"
href="struct.Field.html" title="struct
arrow::datatypes::Field">Field</a></h4></section></summary><div
class='docblock'>Converts to t [...]
T: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html"
title="trait
core::iter::traits::collect::IntoIterator">IntoIterator</a><Item = <a
class="struct" href="struct.Field.html" title="struct
arrow::datatypes::Field">Field</a>>,</div></h4></section></summary><div
class='docblock'>Creates a value from an iterator. <a
href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter">
[...]
H: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"
title="trait core::hash::Hasher">Hasher</a>,</div></h4></section></summary><div
class='docblock'>Feeds this value into the given <a
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"
title="trait core::hash::Hasher"><code>Hasher</code></a>. <a
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read
more</a></div></details><details class="toggle meth [...]
H: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"
title="trait core::hash::Hasher">Hasher</a>,
diff --git a/arrow/index.html b/arrow/index.html
index 3b3c7b8bbc0..2f35de5ffee 100644
--- a/arrow/index.html
+++ b/arrow/index.html
@@ -146,7 +146,7 @@ and a corresponding list of <a
href="array/type.ArrayRef.html" title="type arrow
<ul>
<li>JSON: <a href="../arrow_json/reader/struct.Reader.html" title="struct
arrow_json::reader::Reader"><code>Reader</code></a> and <a
href="../arrow_json/writer/struct.Writer.html" title="struct
arrow_json::writer::Writer"><code>Writer</code></a></li>
<li>CSV: <a href="csv::reader::Reader"><code>Reader</code></a> and <a
href="csv::writer::Writer"><code>Writer</code></a></li>
-<li>IPC: <a href="../arrow_ipc/reader/struct.StreamReader.html" title="struct
arrow_ipc::reader::StreamReader"><code>Reader</code></a> and <a
href="../arrow_ipc/writer/struct.FileWriter.html" title="struct
arrow_ipc::writer::FileWriter"><code>Writer</code></a></li>
+<li>IPC: <a href="ipc::reader::StreamReader"><code>Reader</code></a> and <a
href="ipc::writer::FileWriter"><code>Writer</code></a></li>
</ul>
<p>Parquet is published as a <a
href="https://crates.io/crates/parquet">separate crate</a></p>
<h2 id="serde-compatibility"><a class="doc-anchor"
href="#serde-compatibility">§</a>Serde Compatibility</h2>
@@ -196,7 +196,7 @@ the sub-crates they need.</p>
<li>[<code>arrow-cast</code>][arrow_cast] - cast kernels for arrow arrays</li>
<li>[<code>arrow-csv</code>][arrow_csv] - read/write CSV to arrow format</li>
<li>[<code>arrow-data</code>][arrow_data] - the underlying data of arrow
arrays</li>
-<li><a href="../arrow_ipc/index.html" title="mod
arrow_ipc"><code>arrow-ipc</code></a> - read/write IPC to arrow format</li>
+<li>[<code>arrow-ipc</code>][arrow_ipc] - read/write IPC to arrow format</li>
<li><a href="../arrow_json/index.html" title="mod
arrow_json"><code>arrow-json</code></a> - read/write JSON to arrow format</li>
<li>[<code>arrow-ord</code>][arrow_ord] - ordering kernels for arrow
arrays</li>
<li>[<code>arrow-row</code>][arrow_row] - comparable row format</li>
@@ -221,7 +221,7 @@ arrow’s use of unsafe, see <a
href="https://github.com/apache/arrow-rs/tree/ma
more sophisticated query processing workloads, consider checking out <a
href="https://github.com/apache/arrow-datafusion">DataFusion</a>. This
orchestrates the primitives exported by this crate into an embeddable query
engine, with
SQL and DataFrame frontends, and heavily influences this crate’s roadmap.</p>
-</div></details><h2 id="reexports" class="section-header">Re-exports<a
href="#reexports" class="anchor">§</a></h2><ul class="item-table"><li><div
class="item-name" id="reexport.csv"><code>pub use arrow_csv as
csv;</code></div></li><li><div class="item-name" id="reexport.ipc"><code>pub
use <a class="mod" href="../arrow_ipc/index.html" title="mod
arrow_ipc">arrow_ipc</a> as ipc;</code></div></li><li><div class="item-name"
id="reexport.json"><code>pub use <a class="mod" href="../arrow_json/ [...]
+</div></details><h2 id="reexports" class="section-header">Re-exports<a
href="#reexports" class="anchor">§</a></h2><ul class="item-table"><li><div
class="item-name" id="reexport.csv"><code>pub use arrow_csv as
csv;</code></div></li><li><div class="item-name" id="reexport.ipc"><code>pub
use arrow_ipc as ipc;</code></div></li><li><div class="item-name"
id="reexport.json"><code>pub use <a class="mod" href="../arrow_json/index.html"
title="mod arrow_json">arrow_json</a> as json;</code></div>< [...]
<a href="https://arrow.apache.org/docs/format/CDataInterface.html">C Data
Interface</a>
and <a href="https://docs.rs/pyo3/latest/pyo3/">pyo3</a>.
For underlying implementation, see the <a href="ffi/index.html" title="mod
arrow::ffi">ffi</a> module.</div></li><li><div class="item-name"><a class="mod"
href="record_batch/index.html" title="mod
arrow::record_batch">record_batch</a></div></li><li><div class="item-name"><a
class="mod" href="temporal_conversions/index.html" title="mod
arrow::temporal_conversions">temporal_conversions</a></div><div class="desc
docblock-short">Conversion methods for dates and times.</div></li><li><div clas
[...]
diff --git a/arrow/record_batch/trait.RecordBatchReader.html
b/arrow/record_batch/trait.RecordBatchReader.html
index b21b347eaff..9e2df918d4f 100644
--- a/arrow/record_batch/trait.RecordBatchReader.html
+++ b/arrow/record_batch/trait.RecordBatchReader.html
@@ -11,10 +11,10 @@
reader should have the same schema as returned from this method.</p>
</div></details></div><h2 id="provided-methods"
class="section-header">Provided Methods<a href="#provided-methods"
class="anchor">§</a></h2><div class="methods"><details class="toggle
method-toggle" open><summary><section id="method.next_batch" class="method"><h4
class="code-header">fn <a href="#method.next_batch"
class="fn">next_batch</a>(&mut self) -> <a class="enum"
href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"
title="enum core::result::Result">Result</a [...]
</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-IntoPyArrow-for-Box%3Cdyn+RecordBatchReader+%2B+Send%3E"
class="impl"><a class="src rightside"
href="../../src/arrow/pyarrow.rs.html#448-462">source</a><a
href="#impl-IntoPyArrow-for-Box%3Cdyn+RecordBatchReader+%2B+Send%3E" [...]
-</div><div class="impl-items"><section id="method.into_pyarrow" class="method
trait-impl"><a class="src rightside"
href="../../src/arrow/pyarrow.rs.html#451-461">source</a><a
href="#method.into_pyarrow" class="anchor">§</a><h4 class="code-header">fn <a
href="../pyarrow/trait.IntoPyArrow.html#tymethod.into_pyarrow"
class="fn">into_pyarrow</a>(self, py: Python<'_>) ->
PyResult<PyObject></h4></section></div></details></div><h2
id="foreign-impls" class="section-header">Impleme [...]
- R: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Read.html" title="trait
std::io::Read">Read</a> + <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Seek.html" title="trait
std::io::Seek">Seek</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.schema" class="method trait-impl"><a
class="src rightside"
href="../../src/arrow_ipc/reader.rs.html#1119">source</a><a
href="#method.schema" class="anchor">§</a><h4 class=" [...]
- R: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Read.html" title="trait
std::io::Read">Read</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.schema-1" class="method trait-impl"><a
class="src rightside"
href="../../src/arrow_ipc/reader.rs.html#1351">source</a><a
href="#method.schema-1" class="anchor">§</a><h4 class="code-header">fn <a
href="../../arrow_ipc/foreigntype.reader.html#tymethod.schema"
class="fn">schema</a>(&self) - [...]
- R: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.BufRead.html" title="trait
std::io::BufRead">BufRead</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.schema-2" class="method trait-impl"><a
class="src rightside"
href="../../src/arrow_json/reader/mod.rs.html#349">source</a><a
href="#method.schema-2" class="anchor">§</a><h4 class="code-header">fn <a
href="../../arrow_json/foreigntype.reader.html#tymethod.schema"
class="fn">schema</a [...]
- R: <a class="trait" href="trait.RecordBatchReader.html" title="trait
arrow::record_batch::RecordBatchReader">RecordBatchReader</a> + ?<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"><section id="method.schema-3" class="method trait-impl"><a
href="#method.schema-3" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">schema</a>(&self) -& [...]
- R: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.BufRead.html" title="trait
std::io::BufRead">BufRead</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.schema-4" class="method trait-impl"><a
href="#method.schema-4" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">schema</a>(&self) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html"
title="struct alloc::sync::Arc">Arc</a><<a [...]
+</div><div class="impl-items"><section id="method.into_pyarrow" class="method
trait-impl"><a class="src rightside"
href="../../src/arrow/pyarrow.rs.html#451-461">source</a><a
href="#method.into_pyarrow" class="anchor">§</a><h4 class="code-header">fn <a
href="../pyarrow/trait.IntoPyArrow.html#tymethod.into_pyarrow"
class="fn">into_pyarrow</a>(self, py: Python<'_>) ->
PyResult<PyObject></h4></section></div></details></div><h2
id="foreign-impls" class="section-header">Impleme [...]
+ R: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.BufRead.html" title="trait
std::io::BufRead">BufRead</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.schema" class="method trait-impl"><a
class="src rightside"
href="../../src/arrow_json/reader/mod.rs.html#349">source</a><a
href="#method.schema" class="anchor">§</a><h4 class="code-header">fn <a
href="../../arrow_json/foreigntype.reader.html#tymethod.schema"
class="fn">schema</a>(&a [...]
+ R: <a class="trait" href="trait.RecordBatchReader.html" title="trait
arrow::record_batch::RecordBatchReader">RecordBatchReader</a> + ?<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"><section id="method.schema-1" class="method trait-impl"><a
href="#method.schema-1" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">schema</a>(&self) -& [...]
+ R: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.BufRead.html" title="trait
std::io::BufRead">BufRead</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.schema-2" class="method trait-impl"><a
href="#method.schema-2" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">schema</a>(&self) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html"
title="struct alloc::sync::Arc">Arc</a><<a [...]
+ R: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Read.html" title="trait
std::io::Read">Read</a> + <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Seek.html" title="trait
std::io::Seek">Seek</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.schema-3" class="method trait-impl"><a
href="#method.schema-3" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">schema</a>(&self) -> <a class="struct" hr [...]
+ R: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Read.html" title="trait
std::io::Read">Read</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.schema-4" class="method trait-impl"><a
href="#method.schema-4" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">schema</a>(&self) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html"
title="struct alloc::sync::Arc">Arc</a><<a class="s [...]
I: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html"
title="trait
core::iter::traits::collect::IntoIterator">IntoIterator</a><Item = <a
class="enum"
href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"
title="enum core::result::Result">Result</a><<a class="struct"
href="struct.RecordBatch.html" title="struct
arrow::record_batch::RecordBatch">RecordBatch</a>, <a class="enum"
href="../error/enum.ArrowError. [...]
\ No newline at end of file
diff --git a/arrow/record_batch/trait.RecordBatchWriter.html
b/arrow/record_batch/trait.RecordBatchWriter.html
index c28a22abd88..c64932ae89c 100644
--- a/arrow/record_batch/trait.RecordBatchWriter.html
+++ b/arrow/record_batch/trait.RecordBatchWriter.html
@@ -5,9 +5,9 @@
}</code></pre><details class="toggle top-doc" open><summary
class="hideme"><span>Expand description</span></summary><div
class="docblock"><p>Trait for types that can write
<code>RecordBatch</code>’s.</p>
</div></details><h2 id="required-methods" class="section-header">Required
Methods<a href="#required-methods" class="anchor">§</a></h2><div
class="methods"><details class="toggle method-toggle" open><summary><section
id="tymethod.write" class="method"><h4 class="code-header">fn <a
href="#tymethod.write" class="fn">write</a>(&mut self, batch: &<a
class="struct" href="struct.RecordBatch.html" title="struct
arrow::record_batch::RecordBatch">RecordBatch</a>) -> <a class="enum" href
[...]
</div></details><details class="toggle method-toggle" open><summary><section
id="tymethod.close" class="method"><h4 class="code-header">fn <a
href="#tymethod.close" class="fn">close</a>(self) -> <a class="enum"
href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"
title="enum core::result::Result">Result</a><<a class="primitive"
href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a
class="enum" href="../error/enum.ArrowError.html" title="enum a [...]
-</div></details></div><h2 id="foreign-impls"
class="section-header">Implementations on Foreign Types<a href="#foreign-impls"
class="anchor">§</a></h2><details class="toggle
implementors-toggle"><summary><section
id="impl-RecordBatchWriter-for-FileWriter%3CW%3E" class="impl"><a class="src
rightside" href="../../src/arrow_ipc/writer.rs.html#898">source</a><a
href="#impl-RecordBatchWriter-for-FileWriter%3CW%3E" class="anchor">§</a><h3
class="code-header">impl<W> <a class="trait" href= [...]
- W: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait
std::io::Write">Write</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.write" class="method trait-impl"><a
class="src rightside"
href="../../src/arrow_ipc/writer.rs.html#899">source</a><a href="#method.write"
class="anchor">§</a><h4 class="code-header">fn <a
href="../../arrow_ipc/foreigntype.writer.html#tymethod.write"
class="fn">write</a>(&mut self, bat [...]
- W: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait
std::io::Write">Write</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.write-1" class="method trait-impl"><a
class="src rightside"
href="../../src/arrow_ipc/writer.rs.html#1044">source</a><a
href="#method.write-1" class="anchor">§</a><h4 class="code-header">fn <a
href="../../arrow_ipc/foreigntype.writer.html#tymethod.write"
class="fn">write</a>(&mut self [...]
+</div></details></div><h2 id="foreign-impls"
class="section-header">Implementations on Foreign Types<a href="#foreign-impls"
class="anchor">§</a></h2><details class="toggle
implementors-toggle"><summary><section
id="impl-RecordBatchWriter-for-FileWriter%3CW%3E" class="impl"><a
href="#impl-RecordBatchWriter-for-FileWriter%3CW%3E" class="anchor">§</a><h3
class="code-header">impl<W> <a class="trait"
href="trait.RecordBatchWriter.html" title="trait
arrow::record_batch::RecordBatchWrite [...]
+ W: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait
std::io::Write">Write</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.write" class="method trait-impl"><a
href="#method.write" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">write</a>(&mut self, batch: &<a class="struct"
href="struct.RecordBatch.html" title="struct
arrow::record_batch::RecordBatch">RecordBatch</a>) -> <a class="enum [...]
+ W: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait
std::io::Write">Write</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.write-1" class="method trait-impl"><a
href="#method.write-1" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">write</a>(&mut self, batch: &<a class="struct"
href="struct.RecordBatch.html" title="struct
arrow::record_batch::RecordBatch">RecordBatch</a>) -> <a class=" [...]
W: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait
std::io::Write">Write</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.write-2" class="method trait-impl"><a
href="#method.write-2" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">write</a>(&mut self, batch: &<a class="struct"
href="struct.RecordBatch.html" title="struct
arrow::record_batch::RecordBatch">RecordBatch</a>) -> <a class=" [...]
W: <a class="trait"
href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait
std::io::Write">Write</a>,
F: <a class="trait" href="../../arrow_json/writer/trait.JsonFormat.html"
title="trait
arrow_json::writer::JsonFormat">JsonFormat</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.write-3" class="method trait-impl"><a
class="src rightside"
href="../../src/arrow_json/writer.rs.html#819">source</a><a
href="#method.write-3" class="anchor">§</a><h4 class="code-header">fn <a
href="../../arrow_json/foreigntype.writer.html#tymethod.write"
class="fn">write</a>(&am [...]
\ No newline at end of file
diff --git a/parquet/arrow/arrow_reader/index.html
b/parquet/arrow/arrow_reader/index.html
index db214776716..f3d69b765e5 100644
--- a/parquet/arrow/arrow_reader/index.html
+++ b/parquet/arrow/arrow_reader/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="Contains
reader which reads parquet data into arrow
`RecordBatch`"><title>parquet::arrow::arrow_reader -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843f
[...]
+<!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="Contains
reader which reads parquet data into arrow
`RecordBatch`"><title>parquet::arrow::arrow_reader -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843f
[...]
</div></details><h2 id="modules" class="section-header">Modules<a
href="#modules" class="anchor">§</a></h2><ul class="item-table"><li><div
class="item-name"><a class="mod" href="filter/index.html" title="mod
parquet::arrow::arrow_reader::filter">filter</a><span title="Restricted
Visibility"> 🔒</span> </div></li><li><div class="item-name"><a class="mod"
href="selection/index.html" title="mod
parquet::arrow::arrow_reader::selection">selection</a><span title="Restricted
Visibility">&nb [...]
to be used directly, instead you should use the specialization for the type of
reader
you wish to use</div></li><li><div class="item-name"><a class="struct"
href="struct.ArrowReaderMetadata.html" title="struct
parquet::arrow::arrow_reader::ArrowReaderMetadata">ArrowReaderMetadata</a></div><div
class="desc docblock-short">The cheaply clone-able metadata necessary to
construct a <a href="struct.ArrowReaderBuilder.html" title="struct
parquet::arrow::arrow_reader::ArrowReaderBuilder"><code>ArrowReaderBuilder</code></a></div></li><li><div
class="item-name"><a class="struct" hr [...]
diff --git a/src/parquet/arrow/arrow_reader/mod.rs.html
b/src/parquet/arrow/arrow_reader/mod.rs.html
index 547427071df..69765d84a7c 100644
--- a/src/parquet/arrow/arrow_reader/mod.rs.html
+++ b/src/parquet/arrow/arrow_reader/mod.rs.html
@@ -3113,6 +3113,128 @@
<a href="#3113" id="3113">3113</a>
<a href="#3114" id="3114">3114</a>
<a href="#3115" id="3115">3115</a>
+<a href="#3116" id="3116">3116</a>
+<a href="#3117" id="3117">3117</a>
+<a href="#3118" id="3118">3118</a>
+<a href="#3119" id="3119">3119</a>
+<a href="#3120" id="3120">3120</a>
+<a href="#3121" id="3121">3121</a>
+<a href="#3122" id="3122">3122</a>
+<a href="#3123" id="3123">3123</a>
+<a href="#3124" id="3124">3124</a>
+<a href="#3125" id="3125">3125</a>
+<a href="#3126" id="3126">3126</a>
+<a href="#3127" id="3127">3127</a>
+<a href="#3128" id="3128">3128</a>
+<a href="#3129" id="3129">3129</a>
+<a href="#3130" id="3130">3130</a>
+<a href="#3131" id="3131">3131</a>
+<a href="#3132" id="3132">3132</a>
+<a href="#3133" id="3133">3133</a>
+<a href="#3134" id="3134">3134</a>
+<a href="#3135" id="3135">3135</a>
+<a href="#3136" id="3136">3136</a>
+<a href="#3137" id="3137">3137</a>
+<a href="#3138" id="3138">3138</a>
+<a href="#3139" id="3139">3139</a>
+<a href="#3140" id="3140">3140</a>
+<a href="#3141" id="3141">3141</a>
+<a href="#3142" id="3142">3142</a>
+<a href="#3143" id="3143">3143</a>
+<a href="#3144" id="3144">3144</a>
+<a href="#3145" id="3145">3145</a>
+<a href="#3146" id="3146">3146</a>
+<a href="#3147" id="3147">3147</a>
+<a href="#3148" id="3148">3148</a>
+<a href="#3149" id="3149">3149</a>
+<a href="#3150" id="3150">3150</a>
+<a href="#3151" id="3151">3151</a>
+<a href="#3152" id="3152">3152</a>
+<a href="#3153" id="3153">3153</a>
+<a href="#3154" id="3154">3154</a>
+<a href="#3155" id="3155">3155</a>
+<a href="#3156" id="3156">3156</a>
+<a href="#3157" id="3157">3157</a>
+<a href="#3158" id="3158">3158</a>
+<a href="#3159" id="3159">3159</a>
+<a href="#3160" id="3160">3160</a>
+<a href="#3161" id="3161">3161</a>
+<a href="#3162" id="3162">3162</a>
+<a href="#3163" id="3163">3163</a>
+<a href="#3164" id="3164">3164</a>
+<a href="#3165" id="3165">3165</a>
+<a href="#3166" id="3166">3166</a>
+<a href="#3167" id="3167">3167</a>
+<a href="#3168" id="3168">3168</a>
+<a href="#3169" id="3169">3169</a>
+<a href="#3170" id="3170">3170</a>
+<a href="#3171" id="3171">3171</a>
+<a href="#3172" id="3172">3172</a>
+<a href="#3173" id="3173">3173</a>
+<a href="#3174" id="3174">3174</a>
+<a href="#3175" id="3175">3175</a>
+<a href="#3176" id="3176">3176</a>
+<a href="#3177" id="3177">3177</a>
+<a href="#3178" id="3178">3178</a>
+<a href="#3179" id="3179">3179</a>
+<a href="#3180" id="3180">3180</a>
+<a href="#3181" id="3181">3181</a>
+<a href="#3182" id="3182">3182</a>
+<a href="#3183" id="3183">3183</a>
+<a href="#3184" id="3184">3184</a>
+<a href="#3185" id="3185">3185</a>
+<a href="#3186" id="3186">3186</a>
+<a href="#3187" id="3187">3187</a>
+<a href="#3188" id="3188">3188</a>
+<a href="#3189" id="3189">3189</a>
+<a href="#3190" id="3190">3190</a>
+<a href="#3191" id="3191">3191</a>
+<a href="#3192" id="3192">3192</a>
+<a href="#3193" id="3193">3193</a>
+<a href="#3194" id="3194">3194</a>
+<a href="#3195" id="3195">3195</a>
+<a href="#3196" id="3196">3196</a>
+<a href="#3197" id="3197">3197</a>
+<a href="#3198" id="3198">3198</a>
+<a href="#3199" id="3199">3199</a>
+<a href="#3200" id="3200">3200</a>
+<a href="#3201" id="3201">3201</a>
+<a href="#3202" id="3202">3202</a>
+<a href="#3203" id="3203">3203</a>
+<a href="#3204" id="3204">3204</a>
+<a href="#3205" id="3205">3205</a>
+<a href="#3206" id="3206">3206</a>
+<a href="#3207" id="3207">3207</a>
+<a href="#3208" id="3208">3208</a>
+<a href="#3209" id="3209">3209</a>
+<a href="#3210" id="3210">3210</a>
+<a href="#3211" id="3211">3211</a>
+<a href="#3212" id="3212">3212</a>
+<a href="#3213" id="3213">3213</a>
+<a href="#3214" id="3214">3214</a>
+<a href="#3215" id="3215">3215</a>
+<a href="#3216" id="3216">3216</a>
+<a href="#3217" id="3217">3217</a>
+<a href="#3218" id="3218">3218</a>
+<a href="#3219" id="3219">3219</a>
+<a href="#3220" id="3220">3220</a>
+<a href="#3221" id="3221">3221</a>
+<a href="#3222" id="3222">3222</a>
+<a href="#3223" id="3223">3223</a>
+<a href="#3224" id="3224">3224</a>
+<a href="#3225" id="3225">3225</a>
+<a href="#3226" id="3226">3226</a>
+<a href="#3227" id="3227">3227</a>
+<a href="#3228" id="3228">3228</a>
+<a href="#3229" id="3229">3229</a>
+<a href="#3230" id="3230">3230</a>
+<a href="#3231" id="3231">3231</a>
+<a href="#3232" id="3232">3232</a>
+<a href="#3233" id="3233">3233</a>
+<a href="#3234" id="3234">3234</a>
+<a href="#3235" id="3235">3235</a>
+<a href="#3236" id="3236">3236</a>
+<a href="#3237" id="3237">3237</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
@@ -3867,11 +3989,11 @@
<span class="kw">use </span>arrow_array::<span class="kw-2">*</span>;
<span class="kw">use </span>arrow_buffer::{i256, ArrowNativeType, Buffer};
<span class="kw">use </span>arrow_data::ArrayDataBuilder;
- <span class="kw">use </span>arrow_schema::{DataType <span class="kw">as
</span>ArrowDataType, Field, Fields, Schema};
+ <span class="kw">use </span>arrow_schema::{ArrowError, DataType <span
class="kw">as </span>ArrowDataType, Field, Fields, Schema};
<span class="kw">use </span>arrow_select::concat::concat_batches;
<span class="kw">use </span><span
class="kw">crate</span>::arrow::arrow_reader::{
- ArrowPredicateFn, ArrowReaderOptions, ParquetRecordBatchReader,
+ ArrowPredicateFn, ArrowReaderBuilder, ArrowReaderOptions,
ParquetRecordBatchReader,
ParquetRecordBatchReaderBuilder, RowFilter, RowSelection, RowSelector,
};
<span class="kw">use </span><span
class="kw">crate</span>::arrow::schema::add_encoded_arrow_schema_to_metadata;
@@ -5284,6 +5406,128 @@
);
}
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_invalid_utf8_string_array() {
+ test_invalid_utf8_string_array_inner::<i32>();
+ }
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_invalid_utf8_large_string_array() {
+ test_invalid_utf8_string_array_inner::<i64>();
+ }
+ <span class="kw">fn </span>test_invalid_utf8_string_array_inner<O:
OffsetSizeTrait>() {
+ <span class="kw">let </span>cases = [
+ (
+ invalid_utf8_first_char::<O>(),
+ <span class="string">"Parquet argument error: Parquet error:
encountered non UTF-8 data"</span>,
+ ),
+ (
+ invalid_utf8_later_char::<O>(),
+ <span class="string">"Parquet argument error: Parquet error:
encountered non UTF-8 data: invalid utf-8 sequence of 1 bytes from index
6"</span>,
+ ),
+ ];
+ <span class="kw">for </span>(array, expected_error) <span
class="kw">in </span>cases {
+ <span class="comment">// data is not valid utf8 we can not
construct a correct StringArray
+ // safely, so purposely create an invalid StringArray
+ </span><span class="kw">let </span>array = <span class="kw">unsafe
</span>{
+ GenericStringArray::<O>::new_unchecked(
+ array.offsets().clone(),
+ array.values().clone(),
+ array.nulls().cloned(),
+ )
+ };
+ <span class="kw">let </span>data_type = array.data_type().clone();
+ <span class="kw">let </span>data =
write_to_parquet(Arc::new(array));
+ <span class="kw">let </span>err =
read_from_parquet(data).unwrap_err();
+ <span class="macro">assert_eq!</span>(err.to_string(),
expected_error, <span class="string">"data type: {data_type:?}"</span>)
+ }
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_invalid_utf8_string_view_array() {
+ <span class="kw">let </span>cases = [
+ (
+ invalid_utf8_first_char::<i32>(),
+ <span class="string">"Parquet argument error: Parquet error:
encountered non UTF-8 data"</span>,
+ ),
+ (
+ invalid_utf8_later_char::<i32>(),
+ <span class="string">"Parquet argument error: Parquet error:
encountered non UTF-8 data: invalid utf-8 sequence of 1 bytes from index
6"</span>,
+ ),
+ ];
+ <span class="kw">for </span>(array, expected_error) <span
class="kw">in </span>cases {
+ <span class="comment">// cast not yet implemented for BinaryView
+ // https://github.com/apache/arrow-rs/issues/5508
+ // so copy directly
+ </span><span class="kw">let </span><span class="kw-2">mut
</span>builder = BinaryViewBuilder::with_capacity(<span
class="number">100</span>);
+ <span class="kw">for </span>v <span class="kw">in
</span>array.iter() {
+ <span class="kw">if let </span><span
class="prelude-val">Some</span>(v) = v {
+ builder.append_value(v);
+ } <span class="kw">else </span>{
+ builder.append_null();
+ }
+ }
+ <span class="kw">let </span>array = builder.finish();
+
+ <span class="comment">// data is not valid utf8 we can not
construct a correct StringArray
+ // safely, so purposely create an invalid StringArray
+ </span><span class="kw">let </span>array = <span class="kw">unsafe
</span>{
+ StringViewArray::new_unchecked(
+ array.views().clone(),
+ array.data_buffers().to_vec(),
+ array.nulls().cloned(),
+ )
+ };
+ <span class="kw">let </span>data_type = array.data_type().clone();
+ <span class="kw">let </span>data =
write_to_parquet(Arc::new(array));
+ <span class="kw">let </span>err =
read_from_parquet(data).unwrap_err();
+ <span class="macro">assert_eq!</span>(err.to_string(),
expected_error, <span class="string">"data type: {data_type:?}"</span>)
+ }
+ }
+
+ <span class="doccomment">/// returns a BinaryArray with invalid UTF8 data
in the first character
+ </span><span class="kw">fn </span>invalid_utf8_first_char<O:
OffsetSizeTrait>() -> GenericBinaryArray<O> {
+ <span class="comment">// invalid sequence in the first character
+ //
https://stackoverflow.com/questions/1301402/example-invalid-utf8-string
+ </span><span class="kw">let </span>valid: <span
class="kw-2">&</span>[u8] = <span class="string">b" "</span>;
+ <span class="kw">let </span>invalid: <span
class="kw-2">&</span>[u8] = <span class="kw-2">&</span>[<span
class="number">0xa0</span>, <span class="number">0xa1</span>, <span
class="number">0x20</span>, <span class="number">0x20</span>];
+ GenericBinaryArray::<O>::from_iter(<span
class="macro">vec!</span>[<span class="prelude-val">None</span>, <span
class="prelude-val">Some</span>(valid), <span class="prelude-val">None</span>,
<span class="prelude-val">Some</span>(invalid)])
+ }
+
+ <span class="doccomment">/// returns a BinaryArray with invalid UTF8 data
in a character other than
+ /// the first (this is checked in a special codepath)
+ </span><span class="kw">fn </span>invalid_utf8_later_char<O:
OffsetSizeTrait>() -> GenericBinaryArray<O> {
+ <span class="comment">// invalid sequence in NOT the first character
+ //
https://stackoverflow.com/questions/1301402/example-invalid-utf8-string
+ </span><span class="kw">let </span>valid: <span
class="kw-2">&</span>[u8] = <span class="string">b" "</span>;
+ <span class="kw">let </span>invalid: <span
class="kw-2">&</span>[u8] = <span class="kw-2">&</span>[<span
class="number">0x20</span>, <span class="number">0x20</span>, <span
class="number">0x20</span>, <span class="number">0xa0</span>, <span
class="number">0xa1</span>, <span class="number">0x20</span>, <span
class="number">0x20</span>];
+ GenericBinaryArray::<O>::from_iter(<span
class="macro">vec!</span>[<span class="prelude-val">None</span>, <span
class="prelude-val">Some</span>(valid), <span class="prelude-val">None</span>,
<span class="prelude-val">Some</span>(invalid)])
+ }
+
+ <span class="comment">// writes the array into a single column parquet file
+ </span><span class="kw">fn </span>write_to_parquet(array: ArrayRef) ->
Vec<u8> {
+ <span class="kw">let </span>batch = RecordBatch::try_from_iter(<span
class="macro">vec!</span>[(<span class="string">"c"</span>, array)]).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>data = <span
class="macro">vec!</span>[];
+ <span class="kw">let </span>schema = batch.schema();
+ <span class="kw">let </span>props = <span
class="prelude-val">None</span>;
+ {
+ <span class="kw">let </span><span class="kw-2">mut </span>writer =
ArrowWriter::try_new(<span class="kw-2">&mut </span>data, schema,
props).unwrap();
+ writer.write(<span class="kw-2">&</span>batch).unwrap();
+ writer.flush().unwrap();
+ writer.close().unwrap();
+ };
+ data
+ }
+
+ <span class="doccomment">/// read the parquet file into a record batch
+ </span><span class="kw">fn </span>read_from_parquet(data: Vec<u8>)
-> <span class="prelude-ty">Result</span><Vec<RecordBatch>,
ArrowError> {
+ <span class="kw">let </span>reader =
ArrowReaderBuilder::try_new(bytes::Bytes::from(data))
+ .unwrap()
+ .build()
+ .unwrap();
+
+ reader.collect()
+ }
+
<span class="attr">#[test]
</span><span class="kw">fn </span>test_dictionary_preservation() {
<span class="kw">let </span>fields = <span
class="macro">vec!</span>[Arc::new(