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 e3dfd4899b deploy: d1fb2c6a0a07d3e28fb41287c0b5e1dc8fc032e5
e3dfd4899b is described below
commit e3dfd4899ba546c12b2e456b70d397f8549c8e34
Author: tustvold <[email protected]>
AuthorDate: Mon Jul 31 13:58:14 2023 +0000
deploy: d1fb2c6a0a07d3e28fb41287c0b5e1dc8fc032e5
---
parquet/file/footer/fn.decode_footer.html | 2 +-
parquet/file/footer/fn.parse_column_orders.html | 2 +-
parquet/file/footer/index.html | 2 +-
src/parquet/file/footer.rs.html | 34 ++++++++++++++++++++++---
src/parquet/file/writer.rs.html | 2 +-
5 files changed, 35 insertions(+), 7 deletions(-)
diff --git a/parquet/file/footer/fn.decode_footer.html
b/parquet/file/footer/fn.decode_footer.html
index d265b72611..c6c36f09da 100644
--- a/parquet/file/footer/fn.decode_footer.html
+++ b/parquet/file/footer/fn.decode_footer.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="Decodes
the footer returning the metadata length in bytes"><title>decode_footer in
parquet::file::footer - Rust</title><link rel="preload" as="font"
type="font/woff2" crossorigin
href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link
rel="preload" as="font" ty [...]
+<!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="Decodes
the footer returning the metadata length in bytes"><title>decode_footer in
parquet::file::footer - Rust</title><link rel="preload" as="font"
type="font/woff2" crossorigin
href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link
rel="preload" as="font" ty [...]
</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/parquet/file/footer/fn.parse_column_orders.html
b/parquet/file/footer/fn.parse_column_orders.html
index 28fda528c2..0807dd32a3 100644
--- a/parquet/file/footer/fn.parse_column_orders.html
+++ b/parquet/file/footer/fn.parse_column_orders.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="Parses
column orders from Thrift definition. If no column orders are defined, returns
`None`."><title>parse_column_orders in parquet::file::footer -
Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin
href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.t [...]
+<!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="Parses
column orders from Thrift definition. If no column orders are defined, returns
`None`."><title>parse_column_orders in parquet::file::footer -
Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin
href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.t [...]
t_column_orders: <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="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html"
title="struct alloc::vec::Vec">Vec</a><<a class="enum"
href="../../format/enum.ColumnOrder.html" title="enum
parquet::format::ColumnOrder">ColumnOrder</a>>>,
schema_descr: &<a class="struct"
href="../../schema/types/struct.SchemaDescriptor.html" title="struct
parquet::schema::types::SchemaDescriptor">SchemaDescriptor</a>
) -> <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="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html"
title="struct alloc::vec::Vec">Vec</a><<a class="enum"
href="../../basic/enum.ColumnOrder.html" title="enum
parquet::basic::ColumnOrder">ColumnOrder</a>>></code></pre><details
class="toggle top-doc" open><summary class="hideme"><span>Expand
description</sp [...]
diff --git a/parquet/file/footer/index.html b/parquet/file/footer/index.html
index fb3395c992..76f1a1988f 100644
--- a/parquet/file/footer/index.html
+++ b/parquet/file/footer/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="API
documentation for the Rust `footer` mod in crate
`parquet`."><title>parquet::file::footer - Rust</title><link rel="preload"
as="font" type="font/woff2" crossorigin
href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link
rel="preload" as="font" type="font/wo [...]
+<!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="API
documentation for the Rust `footer` mod in crate
`parquet`."><title>parquet::file::footer - Rust</title><link rel="preload"
as="font" type="font/woff2" crossorigin
href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link
rel="preload" as="font" type="font/wo [...]
If no column orders are defined, returns <code>None</code>.</div></li><li><div
class="item-name"><a class="fn" href="fn.parse_metadata.html" title="fn
parquet::file::footer::parse_metadata">parse_metadata</a></div><div class="desc
docblock-short">Layout of Parquet file
+—————————+—–+—+
| Rest of file | B | A |
diff --git a/src/parquet/file/footer.rs.html b/src/parquet/file/footer.rs.html
index f67f9f20d7..beb9853e34 100644
--- a/src/parquet/file/footer.rs.html
+++ b/src/parquet/file/footer.rs.html
@@ -231,6 +231,20 @@
<a href="#231" id="231">231</a>
<a href="#232" id="232">232</a>
<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</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
@@ -336,9 +350,13 @@
}
<span class="comment">// get the metadata length from the footer
- </span><span class="kw">let </span>metadata_len =
u32::from_le_bytes(slice[..<span class="number">4</span>].try_into().unwrap());
- <span class="comment">// u32 won't be larger than usize in most cases
- </span><span class="prelude-val">Ok</span>(metadata_len <span
class="kw">as </span>usize)
+ </span><span class="kw">let </span>metadata_len =
i32::from_le_bytes(slice[..<span class="number">4</span>].try_into().unwrap());
+ metadata_len.try_into().map_err(|<span class="kw">_</span>| {
+ <span class="macro">general_err!</span>(
+ <span class="string">"Invalid Parquet file. Metadata length
is less than zero ({})"</span>,
+ metadata_len
+ )
+ })
}
<span class="doccomment">/// Parses column orders from Thrift definition.
@@ -404,6 +422,16 @@
</span>);
}
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_parse_metadata_invalid_length() {
+ <span class="kw">let </span>test_file = Bytes::from(<span
class="macro">vec!</span>[<span class="number">0</span>, <span
class="number">0</span>, <span class="number">0</span>, <span
class="number">255</span>, <span class="string">b'P'</span>, <span
class="string">b'A'</span>, <span class="string">b'R'</span>,
<span class="string">b'1'</span>]);
+ <span class="kw">let </span>reader_result = parse_metadata(<span
class="kw-2">&</span>test_file);
+ <span class="macro">assert_eq!</span>(
+ reader_result.unwrap_err().to_string(),
+ <span class="string">"Parquet error: Invalid Parquet file.
Metadata length is less than zero (-16777216)"
+ </span>);
+ }
+
<span class="attr">#[test]
</span><span class="kw">fn </span>test_parse_metadata_invalid_start() {
<span class="kw">let </span>test_file = Bytes::from(<span
class="macro">vec!</span>[<span class="number">255</span>, <span
class="number">0</span>, <span class="number">0</span>, <span
class="number">0</span>, <span class="string">b'P'</span>, <span
class="string">b'A'</span>, <span class="string">b'R'</span>,
<span class="string">b'1'</span>]);
diff --git a/src/parquet/file/writer.rs.html b/src/parquet/file/writer.rs.html
index a85a6dc1eb..ed9c73ba07 100644
--- a/src/parquet/file/writer.rs.html
+++ b/src/parquet/file/writer.rs.html
@@ -1998,7 +1998,7 @@
<span class="kw">let </span>end_pos = <span
class="self">self</span>.buf.bytes_written();
<span class="comment">// Write footer
- </span><span class="kw">let </span>metadata_len = (end_pos -
start_pos) <span class="kw">as </span>u32;
+ </span><span class="kw">let </span>metadata_len = (end_pos -
start_pos) <span class="kw">as </span>i32;
<span class="self">self</span>.buf.write_all(<span
class="kw-2">&</span>metadata_len.to_le_bytes())<span
class="question-mark">?</span>;
<span class="self">self</span>.buf.write_all(<span
class="kw-2">&</span>PARQUET_MAGIC)<span class="question-mark">?</span>;