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 3ff87feec5 deploy: 8c495b60021df1e32e1ff0616dec2979fd66b467
3ff87feec5 is described below

commit 3ff87feec59f298a78a94dfd6753cc00cb3bb1d5
Author: tustvold <[email protected]>
AuthorDate: Sun Oct 1 10:12:53 2023 +0000

    deploy: 8c495b60021df1e32e1ff0616dec2979fd66b467
---
 parquet/arrow/fn.arrow_to_parquet_schema.html      |   2 +-
 .../arrow/fn.parquet_to_arrow_field_levels.html    |   2 +-
 parquet/arrow/fn.parquet_to_arrow_schema.html      |   2 +-
 .../fn.parquet_to_arrow_schema_by_columns.html     |   2 +-
 parquet/arrow/struct.FieldLevels.html              |   4 +-
 src/parquet/arrow/schema/complex.rs.html           |  22 +++-
 src/parquet/arrow/schema/mod.rs.html               | 120 ++++++++++++++++++++-
 7 files changed, 143 insertions(+), 11 deletions(-)

diff --git a/parquet/arrow/fn.arrow_to_parquet_schema.html 
b/parquet/arrow/fn.arrow_to_parquet_schema.html
index c2e24e6096..ac5695b7e3 100644
--- a/parquet/arrow/fn.arrow_to_parquet_schema.html
+++ b/parquet/arrow/fn.arrow_to_parquet_schema.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="Convert 
arrow schema to parquet schema"><title>arrow_to_parquet_schema in 
parquet::arrow - 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/woff2" cro [...]
+<!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="Convert 
arrow schema to parquet schema"><title>arrow_to_parquet_schema in 
parquet::arrow - 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/woff2" cro [...]
 </div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/parquet/arrow/fn.parquet_to_arrow_field_levels.html 
b/parquet/arrow/fn.parquet_to_arrow_field_levels.html
index 3956f2f14f..02fa04dd41 100644
--- a/parquet/arrow/fn.parquet_to_arrow_field_levels.html
+++ b/parquet/arrow/fn.parquet_to_arrow_field_levels.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="Convert a 
parquet `SchemaDescriptor` to 
`FieldLevels`"><title>parquet_to_arrow_field_levels in parquet::arrow - 
Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin 
href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link 
rel="preload" as="font"  [...]
+<!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="Convert a 
parquet `SchemaDescriptor` to 
`FieldLevels`"><title>parquet_to_arrow_field_levels in parquet::arrow - 
Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin 
href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link 
rel="preload" as="font"  [...]
     schema: &amp;<a class="struct" 
href="../schema/types/struct.SchemaDescriptor.html" title="struct 
parquet::schema::types::SchemaDescriptor">SchemaDescriptor</a>,
     mask: <a class="struct" href="struct.ProjectionMask.html" title="struct 
parquet::arrow::ProjectionMask">ProjectionMask</a>,
     hint: <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" 
href="../../arrow_schema/fields/struct.Fields.html" title="struct 
arrow_schema::fields::Fields">Fields</a>&gt;
diff --git a/parquet/arrow/fn.parquet_to_arrow_schema.html 
b/parquet/arrow/fn.parquet_to_arrow_schema.html
index c3a81c8cac..b81b3ac5bc 100644
--- a/parquet/arrow/fn.parquet_to_arrow_schema.html
+++ b/parquet/arrow/fn.parquet_to_arrow_schema.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="Convert 
Parquet schema to Arrow schema including optional 
metadata"><title>parquet_to_arrow_schema in parquet::arrow - Rust</title><link 
rel="preload" as="font" type="font/woff2" crossorigin 
href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link 
rel="preload" as= [...]
+<!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="Convert 
Parquet schema to Arrow schema including optional 
metadata"><title>parquet_to_arrow_schema in parquet::arrow - Rust</title><link 
rel="preload" as="font" type="font/woff2" crossorigin 
href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link 
rel="preload" as= [...]
     parquet_schema: &amp;<a class="struct" 
href="../schema/types/struct.SchemaDescriptor.html" title="struct 
parquet::schema::types::SchemaDescriptor">SchemaDescriptor</a>,
     key_value_metadata: <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html"; 
title="struct alloc::vec::Vec">Vec</a>&lt;<a class="type" 
href="../file/metadata/type.KeyValue.html" title="type 
parquet::file::metadata::KeyValue">KeyValue</a>&gt;&gt;
 ) -&gt; <a class="type" href="../errors/type.Result.html" title="type 
parquet::errors::Result">Result</a>&lt;<a class="struct" 
href="../../arrow_schema/schema/struct.Schema.html" title="struct 
arrow_schema::schema::Schema">Schema</a>&gt;</code></pre><details class="toggle 
top-doc" open><summary class="hideme"><span>Expand 
description</span></summary><div class="docblock"><p>Convert Parquet schema to 
Arrow schema including optional metadata</p>
diff --git a/parquet/arrow/fn.parquet_to_arrow_schema_by_columns.html 
b/parquet/arrow/fn.parquet_to_arrow_schema_by_columns.html
index 87e85076ac..87f92128df 100644
--- a/parquet/arrow/fn.parquet_to_arrow_schema_by_columns.html
+++ b/parquet/arrow/fn.parquet_to_arrow_schema_by_columns.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="Convert 
parquet schema to arrow schema including optional metadata, only preserving 
some leaf columns."><title>parquet_to_arrow_schema_by_columns in parquet::arrow 
- Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin 
href="../../static.files/SourceSerif4-Regular-46f9 [...]
+<!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="Convert 
parquet schema to arrow schema including optional metadata, only preserving 
some leaf columns."><title>parquet_to_arrow_schema_by_columns in parquet::arrow 
- Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin 
href="../../static.files/SourceSerif4-Regular-46f9 [...]
     parquet_schema: &amp;<a class="struct" 
href="../schema/types/struct.SchemaDescriptor.html" title="struct 
parquet::schema::types::SchemaDescriptor">SchemaDescriptor</a>,
     mask: <a class="struct" href="struct.ProjectionMask.html" title="struct 
parquet::arrow::ProjectionMask">ProjectionMask</a>,
     key_value_metadata: <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html"; 
title="struct alloc::vec::Vec">Vec</a>&lt;<a class="type" 
href="../file/metadata/type.KeyValue.html" title="type 
parquet::file::metadata::KeyValue">KeyValue</a>&gt;&gt;
diff --git a/parquet/arrow/struct.FieldLevels.html 
b/parquet/arrow/struct.FieldLevels.html
index b7e5ea110c..6791dc511b 100644
--- a/parquet/arrow/struct.FieldLevels.html
+++ b/parquet/arrow/struct.FieldLevels.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="Schema 
information necessary to decode a parquet file as arrow 
`Fields`"><title>FieldLevels in parquet::arrow - Rust</title><link 
rel="preload" as="font" type="font/woff2" crossorigin 
href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link 
rel="preload" as="font"  [...]
+<!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="Schema 
information necessary to decode a parquet file as arrow 
`Fields`"><title>FieldLevels in parquet::arrow - Rust</title><link 
rel="preload" as="font" type="font/woff2" crossorigin 
href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link 
rel="preload" as="font"  [...]
     pub(crate) fields: <a class="struct" 
href="../../arrow_schema/fields/struct.Fields.html" title="struct 
arrow_schema::fields::Fields">Fields</a>,
     pub(crate) levels: <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::option::Option">Option</a>&lt;ParquetField&gt;,
 }</code></pre><details class="toggle top-doc" open><summary 
class="hideme"><span>Expand description</span></summary><div 
class="docblock"><p>Schema information necessary to decode a parquet file as 
arrow <a href="../../arrow_schema/fields/struct.Fields.html" title="struct 
arrow_schema::fields::Fields"><code>Fields</code></a></p>
@@ -6,7 +6,7 @@
 interpret the encoded definition and repetition levels</p>
 <p>Note: this is an opaque container intended to be used with lower-level APIs
 within this crate</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a 
href="#fields" class="anchor">§</a></h2><span id="structfield.fields" 
class="structfield small-section-header"><a href="#structfield.fields" 
class="anchor field">§</a><code>fields: <a class="struct" 
href="../../arrow_schema/fields/struct.Fields.html" title="struct 
arrow_schema::fields::Fields">Fields</a></code></span><span 
id="structfield.levels" class="structfield small-section-header"><a 
href="#structfield.lev [...]
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a 
href="#fields" class="anchor">§</a></h2><span id="structfield.fields" 
class="structfield small-section-header"><a href="#structfield.fields" 
class="anchor field">§</a><code>fields: <a class="struct" 
href="../../arrow_schema/fields/struct.Fields.html" title="struct 
arrow_schema::fields::Fields">Fields</a></code></span><span 
id="structfield.levels" class="structfield small-section-header"><a 
href="#structfield.lev [...]
     T: 'static + ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait 
core::marker::Sized">Sized</a>,</span></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#136";>source</a><a 
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a hre 
[...]
     T: ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait 
core::marker::Sized">Sized</a>,</span></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>,</span></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/src/parquet/arrow/schema/complex.rs.html 
b/src/parquet/arrow/schema/complex.rs.html
index a61ef1ef53..c6e9b28e72 100644
--- a/src/parquet/arrow/schema/complex.rs.html
+++ b/src/parquet/arrow/schema/complex.rs.html
@@ -593,6 +593,15 @@
 <a href="#593" id="593">593</a>
 <a href="#594" id="594">594</a>
 <a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</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
@@ -614,7 +623,7 @@
 <span class="kw">use </span>std::sync::Arc;
 
 <span class="kw">use </span><span 
class="kw">crate</span>::arrow::schema::primitive::convert_primitive;
-<span class="kw">use </span><span 
class="kw">crate</span>::arrow::ProjectionMask;
+<span class="kw">use </span><span 
class="kw">crate</span>::arrow::{ProjectionMask, PARQUET_FIELD_ID_META_KEY};
 <span class="kw">use </span><span 
class="kw">crate</span>::basic::{ConvertedType, Repetition};
 <span class="kw">use </span><span 
class="kw">crate</span>::errors::ParquetError;
 <span class="kw">use </span><span class="kw">crate</span>::errors::Result;
@@ -1145,7 +1154,16 @@
 
             field.with_metadata(hint.metadata().clone())
         }
-        <span class="prelude-val">None </span>=&gt; Field::new(name, 
data_type, nullable),
+        <span class="prelude-val">None </span>=&gt; {
+            <span class="kw">let </span><span class="kw-2">mut </span>ret = 
Field::new(name, data_type, nullable);
+            <span class="kw">let </span>basic_info = 
parquet_type.get_basic_info();
+            <span class="kw">if </span>basic_info.has_id() {
+                <span class="kw">let </span><span class="kw-2">mut </span>meta 
= HashMap::with_capacity(<span class="number">1</span>);
+                meta.insert(PARQUET_FIELD_ID_META_KEY.to_string(), 
basic_info.id().to_string());
+                ret.set_metadata(meta);
+            }
+            ret
+        },
     }
 }
 
diff --git a/src/parquet/arrow/schema/mod.rs.html 
b/src/parquet/arrow/schema/mod.rs.html
index 50d4421615..8019c50a6d 100644
--- a/src/parquet/arrow/schema/mod.rs.html
+++ b/src/parquet/arrow/schema/mod.rs.html
@@ -1875,6 +1875,63 @@
 <a href="#1875" id="1875">1875</a>
 <a href="#1876" id="1876">1876</a>
 <a href="#1877" id="1877">1877</a>
+<a href="#1878" id="1878">1878</a>
+<a href="#1879" id="1879">1879</a>
+<a href="#1880" id="1880">1880</a>
+<a href="#1881" id="1881">1881</a>
+<a href="#1882" id="1882">1882</a>
+<a href="#1883" id="1883">1883</a>
+<a href="#1884" id="1884">1884</a>
+<a href="#1885" id="1885">1885</a>
+<a href="#1886" id="1886">1886</a>
+<a href="#1887" id="1887">1887</a>
+<a href="#1888" id="1888">1888</a>
+<a href="#1889" id="1889">1889</a>
+<a href="#1890" id="1890">1890</a>
+<a href="#1891" id="1891">1891</a>
+<a href="#1892" id="1892">1892</a>
+<a href="#1893" id="1893">1893</a>
+<a href="#1894" id="1894">1894</a>
+<a href="#1895" id="1895">1895</a>
+<a href="#1896" id="1896">1896</a>
+<a href="#1897" id="1897">1897</a>
+<a href="#1898" id="1898">1898</a>
+<a href="#1899" id="1899">1899</a>
+<a href="#1900" id="1900">1900</a>
+<a href="#1901" id="1901">1901</a>
+<a href="#1902" id="1902">1902</a>
+<a href="#1903" id="1903">1903</a>
+<a href="#1904" id="1904">1904</a>
+<a href="#1905" id="1905">1905</a>
+<a href="#1906" id="1906">1906</a>
+<a href="#1907" id="1907">1907</a>
+<a href="#1908" id="1908">1908</a>
+<a href="#1909" id="1909">1909</a>
+<a href="#1910" id="1910">1910</a>
+<a href="#1911" id="1911">1911</a>
+<a href="#1912" id="1912">1912</a>
+<a href="#1913" id="1913">1913</a>
+<a href="#1914" id="1914">1914</a>
+<a href="#1915" id="1915">1915</a>
+<a href="#1916" id="1916">1916</a>
+<a href="#1917" id="1917">1917</a>
+<a href="#1918" id="1918">1918</a>
+<a href="#1919" id="1919">1919</a>
+<a href="#1920" id="1920">1920</a>
+<a href="#1921" id="1921">1921</a>
+<a href="#1922" id="1922">1922</a>
+<a href="#1923" id="1923">1923</a>
+<a href="#1924" id="1924">1924</a>
+<a href="#1925" id="1925">1925</a>
+<a href="#1926" id="1926">1926</a>
+<a href="#1927" id="1927">1927</a>
+<a href="#1928" id="1928">1928</a>
+<a href="#1929" id="1929">1929</a>
+<a href="#1930" id="1930">1930</a>
+<a href="#1931" id="1931">1931</a>
+<a href="#1932" id="1932">1932</a>
+<a href="#1933" id="1933">1933</a>
+<a href="#1934" id="1934">1934</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
@@ -1922,6 +1979,8 @@
 <span class="kw">use </span><span 
class="kw">crate</span>::arrow::ProjectionMask;
 <span class="kw">pub</span>(<span class="kw">crate</span>) <span 
class="kw">use </span>complex::{ParquetField, ParquetFieldType};
 
+<span class="kw">use </span><span 
class="kw">super</span>::PARQUET_FIELD_ID_META_KEY;
+
 <span class="doccomment">/// Convert Parquet schema to Arrow schema including 
optional metadata
 ///
 /// Attempts to decode any existing Arrow schema metadata, falling back
@@ -2145,12 +2204,20 @@
 <span class="doccomment">/// Convert parquet column schema to arrow field.
 </span><span class="kw">pub fn </span>parquet_to_arrow_field(parquet_column: 
<span class="kw-2">&amp;</span>ColumnDescriptor) -&gt; <span 
class="prelude-ty">Result</span>&lt;Field&gt; {
     <span class="kw">let </span>field = complex::convert_type(<span 
class="kw-2">&amp;</span>parquet_column.self_type_ptr())<span 
class="question-mark">?</span>;
-
-    <span class="prelude-val">Ok</span>(Field::new(
+    <span class="kw">let </span><span class="kw-2">mut </span>ret = Field::new(
         parquet_column.name(),
         field.arrow_type,
         field.nullable,
-    ))
+    );
+
+    <span class="kw">let </span>basic_info = 
parquet_column.self_type().get_basic_info();
+    <span class="kw">if </span>basic_info.has_id() {
+        <span class="kw">let </span><span class="kw-2">mut </span>meta = 
HashMap::with_capacity(<span class="number">1</span>);
+        meta.insert(PARQUET_FIELD_ID_META_KEY.to_string(), 
basic_info.id().to_string());
+        ret.set_metadata(meta);
+    }
+
+    <span class="prelude-val">Ok</span>(ret)
 }
 
 <span class="kw">pub fn </span>decimal_length_from_precision(precision: u8) 
-&gt; usize {
@@ -2455,6 +2522,7 @@
 
     <span class="kw">use </span><span 
class="kw">crate</span>::arrow::PARQUET_FIELD_ID_META_KEY;
     <span class="kw">use </span><span 
class="kw">crate</span>::file::metadata::KeyValue;
+    <span class="kw">use </span><span 
class="kw">crate</span>::file::reader::FileReader;
     <span class="kw">use crate</span>::{
         arrow::{arrow_reader::ParquetRecordBatchReaderBuilder, ArrowWriter},
         schema::{parser::parse_message_type, types::SchemaDescriptor},
@@ -3688,6 +3756,52 @@
         <span class="prelude-val">Ok</span>(())
     }
 
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_read_parquet_field_ids_raw() -&gt; 
<span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>meta = |a: <span 
class="kw-2">&amp;</span>[(<span class="kw-2">&amp;</span>str, <span 
class="kw-2">&amp;</span>str)]| -&gt; HashMap&lt;String, String&gt; {
+            a.iter()
+                .map(|(a, b)| (a.to_string(), b.to_string()))
+                .collect()
+        };
+        <span class="kw">let </span>schema = Schema::new_with_metadata(
+            <span class="macro">vec!</span>[
+                Field::new(<span class="string">&quot;c1&quot;</span>, 
DataType::Utf8, <span class="bool-val">true</span>).with_metadata(meta(<span 
class="kw-2">&amp;</span>[
+                    (PARQUET_FIELD_ID_META_KEY, <span 
class="string">&quot;1&quot;</span>),
+                ])),
+                Field::new(<span class="string">&quot;c2&quot;</span>, 
DataType::Utf8, <span class="bool-val">true</span>).with_metadata(meta(<span 
class="kw-2">&amp;</span>[
+                    (PARQUET_FIELD_ID_META_KEY, <span 
class="string">&quot;2&quot;</span>),
+                ])),
+            ],
+            HashMap::new(),
+        );
+
+        <span class="kw">let </span>writer = ArrowWriter::try_new(
+            <span class="macro">vec!</span>[],
+            Arc::new(schema.clone()),
+            <span class="prelude-val">None</span>,
+        )<span class="question-mark">?</span>;
+        <span class="kw">let </span>parquet_bytes = writer.into_inner()<span 
class="question-mark">?</span>;
+
+        <span class="kw">let </span>reader = <span 
class="kw">crate</span>::file::reader::SerializedFileReader::new(
+            bytes::Bytes::from(parquet_bytes),
+        )<span class="question-mark">?</span>;
+        <span class="kw">let </span>schema_descriptor = 
reader.metadata().file_metadata().schema_descr_ptr();
+
+        <span class="comment">// don&#39;t pass metadata so field ids are read 
from Parquet and not from serialized Arrow schema
+        </span><span class="kw">let </span>arrow_schema = <span 
class="kw">crate</span>::arrow::parquet_to_arrow_schema(
+            <span class="kw-2">&amp;</span>schema_descriptor,
+            <span class="prelude-val">None</span>,
+        )<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>parq_schema_descr = <span 
class="kw">crate</span>::arrow::arrow_to_parquet_schema(<span 
class="kw-2">&amp;</span>arrow_schema)<span class="question-mark">?</span>;
+        <span class="kw">let </span>parq_fields = 
parq_schema_descr.root_schema().get_fields();
+        <span class="macro">assert_eq!</span>(parq_fields.len(), <span 
class="number">2</span>);
+        <span class="macro">assert_eq!</span>(parq_fields[<span 
class="number">0</span>].get_basic_info().id(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(parq_fields[<span 
class="number">1</span>].get_basic_info().id(), <span class="number">2</span>);
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
     <span class="attr">#[test]
     </span><span class="kw">fn </span>test_arrow_schema_roundtrip_lists() 
-&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
         <span class="kw">let </span>metadata: HashMap&lt;String, String&gt; =

Reply via email to