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: &<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><&<a class="struct"
href="../../arrow_schema/fields/struct.Fields.html" title="struct
arrow_schema::fields::Fields">Fields</a>>
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: &<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><&<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html"
title="struct alloc::vec::Vec">Vec</a><<a class="type"
href="../file/metadata/type.KeyValue.html" title="type
parquet::file::metadata::KeyValue">KeyValue</a>>>
) -> <a class="type" href="../errors/type.Result.html" title="type
parquet::errors::Result">Result</a><<a class="struct"
href="../../arrow_schema/schema/struct.Schema.html" title="struct
arrow_schema::schema::Schema">Schema</a>></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: &<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><&<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html"
title="struct alloc::vec::Vec">Vec</a><<a class="type"
href="../file/metadata/type.KeyValue.html" title="type
parquet::file::metadata::KeyValue">KeyValue</a>>>
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><ParquetField>,
}</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>=> Field::new(name,
data_type, nullable),
+ <span class="prelude-val">None </span>=> {
+ <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">&</span>ColumnDescriptor) -> <span
class="prelude-ty">Result</span><Field> {
<span class="kw">let </span>field = complex::convert_type(<span
class="kw-2">&</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)
-> 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() ->
<span class="prelude-ty">Result</span><()> {
+ <span class="kw">let </span>meta = |a: <span
class="kw-2">&</span>[(<span class="kw-2">&</span>str, <span
class="kw-2">&</span>str)]| -> HashMap<String, String> {
+ 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">"c1"</span>,
DataType::Utf8, <span class="bool-val">true</span>).with_metadata(meta(<span
class="kw-2">&</span>[
+ (PARQUET_FIELD_ID_META_KEY, <span
class="string">"1"</span>),
+ ])),
+ Field::new(<span class="string">"c2"</span>,
DataType::Utf8, <span class="bool-val">true</span>).with_metadata(meta(<span
class="kw-2">&</span>[
+ (PARQUET_FIELD_ID_META_KEY, <span
class="string">"2"</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'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">&</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">&</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()
-> <span class="prelude-ty">Result</span><()> {
<span class="kw">let </span>metadata: HashMap<String, String> =