You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by gi...@apache.org on 2023/11/28 11:21:39 UTC
(arrow-rs) branch asf-site updated: deploy: 34a816d4fc2a9e0e097b1c41df788612dd5c8e61
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 8ec5903c40 deploy: 34a816d4fc2a9e0e097b1c41df788612dd5c8e61
8ec5903c40 is described below
commit 8ec5903c4055edcd1fe6021452f2b261c63bc4b5
Author: tustvold <tu...@users.noreply.github.com>
AuthorDate: Tue Nov 28 11:21:33 2023 +0000
deploy: 34a816d4fc2a9e0e097b1c41df788612dd5c8e61
---
help.html | 2 +-
index.html | 2 +-
parquet/column/writer/fn.compare_greater.html | 2 +-
.../fn.compare_greater_byte_array_decimals.html | 2 +-
parquet/column/writer/fn.fallback_encoding.html | 2 +-
.../column/writer/fn.has_dictionary_support.html | 2 +-
parquet/column/writer/fn.increment.html | 2 +-
parquet/column/writer/fn.increment_utf8.html | 2 +-
parquet/column/writer/fn.is_nan.html | 2 +-
parquet/column/writer/fn.truncate_utf8.html | 2 +-
parquet/column/writer/fn.update_max.html | 2 +-
parquet/column/writer/fn.update_min.html | 2 +-
parquet/column/writer/fn.update_stat.html | 2 +-
parquet/column/writer/index.html | 2 +-
.../column/writer/struct.GenericColumnWriter.html | 57 +--
.../column/writer/trait.EncodingWriteSupport.html | 4 +-
parquet/column/writer/type.ColumnWriterImpl.html | 10 +-
parquet/file/metadata/index.html | 2 +-
.../file/metadata/struct.ColumnIndexBuilder.html | 10 +-
.../file/metadata/struct.OffsetIndexBuilder.html | 6 +-
search-index.js | 2 +-
settings.html | 2 +-
src/parquet/column/writer/mod.rs.html | 432 +++++++++++++++++++--
src/parquet/file/metadata.rs.html | 12 +-
.../column/writer/struct.GenericColumnWriter.js | 2 +-
25 files changed, 485 insertions(+), 82 deletions(-)
diff --git a/help.html b/help.html
index ecbca0edd6..143757f09c 100644
--- a/help.html
+++ b/help.html
@@ -1 +1 @@
-<!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="Documentation for Rustdoc"><title>Help</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" crossorigin href="./static.files/FiraSans-Regular-018c141bf0843f [...]
\ No newline at end of file
+<!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="Documentation for Rustdoc"><title>Help</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" crossorigin href="./static.files/FiraSans-Regular-018c141bf0843f [...]
\ No newline at end of file
diff --git a/index.html b/index.html
index 3f73df8ad0..c03d999568 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-<!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="List of crates"><title>Index of crates</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" crossorigin href="./static.files/FiraSans-Regular-018c141bf0843f [...]
\ No newline at end of file
+<!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="List of crates"><title>Index of crates</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" crossorigin href="./static.files/FiraSans-Regular-018c141bf0843f [...]
\ No newline at end of file
diff --git a/parquet/column/writer/fn.compare_greater.html b/parquet/column/writer/fn.compare_greater.html
index b31e2f5d67..355c95c005 100644
--- a/parquet/column/writer/fn.compare_greater.html
+++ b/parquet/column/writer/fn.compare_greater.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="Evaluate `a > b` according to underlying logical type."><title>compare_greater in parquet::column::writer - 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="Evaluate `a > b` according to underlying logical type."><title>compare_greater in parquet::column::writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font [...]
descr: &<a class="struct" href="../../schema/types/struct.ColumnDescriptor.html" title="struct parquet::schema::types::ColumnDescriptor">ColumnDescriptor</a>,
a: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&T</a>,
b: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&T</a>
diff --git a/parquet/column/writer/fn.compare_greater_byte_array_decimals.html b/parquet/column/writer/fn.compare_greater_byte_array_decimals.html
index 43b7498c92..5d6061f45e 100644
--- a/parquet/column/writer/fn.compare_greater_byte_array_decimals.html
+++ b/parquet/column/writer/fn.compare_greater_byte_array_decimals.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="Signed comparison of bytes arrays"><title>compare_greater_byte_array_decimals in parquet::column::writer - 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="Signed comparison of bytes arrays"><title>compare_greater_byte_array_decimals in parquet::column::writer - 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/column/writer/fn.fallback_encoding.html b/parquet/column/writer/fn.fallback_encoding.html
index 34a42231c7..81b39af846 100644
--- a/parquet/column/writer/fn.fallback_encoding.html
+++ b/parquet/column/writer/fn.fallback_encoding.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="Returns encoding for a column when no other encoding is provided in writer properties."><title>fallback_encoding in parquet::column::writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff [...]
+<!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="Returns encoding for a column when no other encoding is provided in writer properties."><title>fallback_encoding in parquet::column::writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff [...]
</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/parquet/column/writer/fn.has_dictionary_support.html b/parquet/column/writer/fn.has_dictionary_support.html
index c23ca0b1dc..ddade991f4 100644
--- a/parquet/column/writer/fn.has_dictionary_support.html
+++ b/parquet/column/writer/fn.has_dictionary_support.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="Returns true if dictionary is supported for column writer, false otherwise."><title>has_dictionary_support in parquet::column::writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><li [...]
+<!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="Returns true if dictionary is supported for column writer, false otherwise."><title>has_dictionary_support in parquet::column::writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><li [...]
</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/parquet/column/writer/fn.increment.html b/parquet/column/writer/fn.increment.html
index c8b6bf5ad6..1c48ddc216 100644
--- a/parquet/column/writer/fn.increment.html
+++ b/parquet/column/writer/fn.increment.html
@@ -1,3 +1,3 @@
-<!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="Try and increment the bytes from right to left."><title>increment in parquet::column::writer - 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/wof [...]
+<!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="Try and increment the bytes from right to left."><title>increment in parquet::column::writer - 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/wof [...]
<p>Returns <code>None</code> if all bytes are set to <code>u8::MAX</code>.</p>
</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/parquet/column/writer/fn.increment_utf8.html b/parquet/column/writer/fn.increment_utf8.html
index 5bab74606e..93ae7a81cf 100644
--- a/parquet/column/writer/fn.increment_utf8.html
+++ b/parquet/column/writer/fn.increment_utf8.html
@@ -1,3 +1,3 @@
-<!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="Try and increment the the string’s bytes from right to left, returning when the result is a valid UTF8 string. Returns `None` when it can’t increment any byte."><title>increment_utf8 in parquet::column::writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Try and increment the the string’s bytes from right to left, returning when the result is a valid UTF8 string. Returns `None` when it can’t increment any byte."><title>increment_utf8 in parquet::column::writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href [...]
is a valid UTF8 string. Returns <code>None</code> when it can’t increment any byte.</p>
</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/parquet/column/writer/fn.is_nan.html b/parquet/column/writer/fn.is_nan.html
index 7cd6454aef..eedb49e7da 100644
--- a/parquet/column/writer/fn.is_nan.html
+++ b/parquet/column/writer/fn.is_nan.html
@@ -1 +1 @@
-<!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 `is_nan` fn in crate `parquet`."><title>is_nan in parquet::column::writer - 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 [...]
\ No newline at end of file
+<!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 `is_nan` fn in crate `parquet`."><title>is_nan in parquet::column::writer - 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 [...]
\ No newline at end of file
diff --git a/parquet/column/writer/fn.truncate_utf8.html b/parquet/column/writer/fn.truncate_utf8.html
index 0e220b26e9..2b748cebbc 100644
--- a/parquet/column/writer/fn.truncate_utf8.html
+++ b/parquet/column/writer/fn.truncate_utf8.html
@@ -1,3 +1,3 @@
-<!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="Truncate a UTF8 slice to the longest prefix that is still a valid UTF8 string, while being less than `length` bytes and non-empty"><title>truncate_utf8 in parquet::column::writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceS [...]
+<!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="Truncate a UTF8 slice to the longest prefix that is still a valid UTF8 string, while being less than `length` bytes and non-empty"><title>truncate_utf8 in parquet::column::writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceS [...]
while being less than <code>length</code> bytes and non-empty</p>
</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/parquet/column/writer/fn.update_max.html b/parquet/column/writer/fn.update_max.html
index b523b0d969..f923388a7e 100644
--- a/parquet/column/writer/fn.update_max.html
+++ b/parquet/column/writer/fn.update_max.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 `update_max` fn in crate `parquet`."><title>update_max in parquet::column::writer - 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="API documentation for the Rust `update_max` fn in crate `parquet`."><title>update_max in parquet::column::writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as=" [...]
descr: &<a class="struct" href="../../schema/types/struct.ColumnDescriptor.html" title="struct parquet::schema::types::ColumnDescriptor">ColumnDescriptor</a>,
val: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&T</a>,
max: &mut <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><T>
diff --git a/parquet/column/writer/fn.update_min.html b/parquet/column/writer/fn.update_min.html
index b4e7d4bdfb..8531916fc8 100644
--- a/parquet/column/writer/fn.update_min.html
+++ b/parquet/column/writer/fn.update_min.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 `update_min` fn in crate `parquet`."><title>update_min in parquet::column::writer - 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="API documentation for the Rust `update_min` fn in crate `parquet`."><title>update_min in parquet::column::writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as=" [...]
descr: &<a class="struct" href="../../schema/types/struct.ColumnDescriptor.html" title="struct parquet::schema::types::ColumnDescriptor">ColumnDescriptor</a>,
val: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&T</a>,
min: &mut <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><T>
diff --git a/parquet/column/writer/fn.update_stat.html b/parquet/column/writer/fn.update_stat.html
index 06237cc488..520b87f6d0 100644
--- a/parquet/column/writer/fn.update_stat.html
+++ b/parquet/column/writer/fn.update_stat.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="Perform a conditional update of `cur`, skipping any NaN values"><title>update_stat in parquet::column::writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="fon [...]
+<!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="Perform a conditional update of `cur`, skipping any NaN values"><title>update_stat in parquet::column::writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="fon [...]
descr: &<a class="struct" href="../../schema/types/struct.ColumnDescriptor.html" title="struct parquet::schema::types::ColumnDescriptor">ColumnDescriptor</a>,
val: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&T</a>,
cur: &mut <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><T>,
diff --git a/parquet/column/writer/index.html b/parquet/column/writer/index.html
index 2290cbf0e6..1d2582575b 100644
--- a/parquet/column/writer/index.html
+++ b/parquet/column/writer/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 column writer API."><title>parquet::column::writer - 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" crossorigin href="../../../st [...]
+<!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 column writer API."><title>parquet::column::writer - 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" crossorigin href="../../../st [...]
</div></details><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2><ul class="item-table"><li><div class="item-name"><a class="mod" href="encoder/index.html" title="mod parquet::column::writer::encoder">encoder</a><span title="Restricted Visibility"> 🔒</span> </div></li></ul><h2 id="macros" class="small-section-header"><a href="#macros">Macros</a></h2><ul class="item-table"><li><div class="item-name"><a class="macro" href="macro.downcast_writer.html" ti [...]
supports dictionary encoding.</div></li></ul><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2><ul class="item-table"><li><div class="item-name"><a class="fn" href="fn.compare_greater.html" title="fn parquet::column::writer::compare_greater">compare_greater</a><span title="Restricted Visibility"> 🔒</span> </div><div class="desc docblock-short">Evaluate <code>a > b</code> according to underlying logical type.</div></li><li><div class="item-name [...]
non-generic type to a generic column writer type <code>ColumnWriterImpl</code>.</div></li><li><div class="item-name"><a class="fn" href="fn.get_typed_column_writer_mut.html" title="fn parquet::column::writer::get_typed_column_writer_mut">get_typed_column_writer_mut</a></div><div class="desc docblock-short">Similar to <code>get_typed_column_writer</code> but returns a reference.</div></li><li><div class="item-name"><a class="fn" href="fn.get_typed_column_writer_ref.html" title="fn parquet [...]
diff --git a/parquet/column/writer/struct.GenericColumnWriter.html b/parquet/column/writer/struct.GenericColumnWriter.html
index 6fb8ee7891..3038c4060b 100644
--- a/parquet/column/writer/struct.GenericColumnWriter.html
+++ b/parquet/column/writer/struct.GenericColumnWriter.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 `GenericColumnWriter` struct in crate `parquet`."><title>GenericColumnWriter in parquet::column::writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><l [...]
+<!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 `GenericColumnWriter` struct in crate `parquet`."><title>GenericColumnWriter in parquet::column::writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><l [...]
descr: <a class="type" href="../../schema/types/type.ColumnDescPtr.html" title="type parquet::schema::types::ColumnDescPtr">ColumnDescPtr</a>,
props: <a class="type" href="../../file/properties/type.WriterPropertiesPtr.html" title="type parquet::file::properties::WriterPropertiesPtr">WriterPropertiesPtr</a>,
statistics_enabled: <a class="enum" href="../../file/properties/enum.EnabledStatistics.html" title="enum parquet::file::properties::EnabledStatistics">EnabledStatistics</a>,
@@ -14,13 +14,17 @@
data_pages: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/collections/vec_deque/struct.VecDeque.html" title="struct alloc::collections::vec_deque::VecDeque">VecDeque</a><<a class="struct" href="../page/struct.CompressedPage.html" title="struct parquet::column::page::CompressedPage">CompressedPage</a>>,
column_index_builder: <a class="struct" href="../../file/metadata/struct.ColumnIndexBuilder.html" title="struct parquet::file::metadata::ColumnIndexBuilder">ColumnIndexBuilder</a>,
offset_index_builder: <a class="struct" href="../../file/metadata/struct.OffsetIndexBuilder.html" title="struct parquet::file::metadata::OffsetIndexBuilder">OffsetIndexBuilder</a>,
+ data_page_boundary_ascending: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+ data_page_boundary_descending: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+ last_non_null_data_page_min_max: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(E::<a class="associatedtype" href="encoder/trait.ColumnValueEncoder.html#associatedtype.T" title="type parquet::column::writer::encoder::ColumnValueEncoder::T">T</a>, E::<a class="associatedtype" href="encoder/trait.ColumnValueEncoder.html#associatedtype.T" title="type parquet::column::writer::encoder::ColumnValueEncod [...]
</details>}</code></pre><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.descr" class="structfield small-section-header"><a href="#structfield.descr" class="anchor field">§</a><code>descr: <a class="type" href="../../schema/types/type.ColumnDescPtr.html" title="type parquet::schema::types::ColumnDescPtr">ColumnDescPtr</a></code></span><span id="structfield.props" class="structfield small-section-header"><a href="#s [...]
but we use a BTreeSet so that the output is deterministic</p>
-</div><span id="structfield.def_levels_sink" class="structfield small-section-header"><a href="#structfield.def_levels_sink" class="anchor field">§</a><code>def_levels_sink: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i16.html">i16</a>></code></span><span id="structfield.rep_levels_sink" class="structfield small-section-header">< [...]
+</div><span id="structfield.def_levels_sink" class="structfield small-section-header"><a href="#structfield.def_levels_sink" class="anchor field">§</a><code>def_levels_sink: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i16.html">i16</a>></code></span><span id="structfield.rep_levels_sink" class="structfield small-section-header">< [...]
+</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-GenericColumnWriter%3C'a,+E%3E" class="impl"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#240-1068">source</a><a href="#impl-GenericColumnWriter%3C'a,+E%3E" class="anchor">§</a><h3 class="code-header">impl<'a, E: <a class= [...]
descr: <a class="type" href="../../schema/types/type.ColumnDescPtr.html" title="type parquet::schema::types::ColumnDescPtr">ColumnDescPtr</a>,
props: <a class="type" href="../../file/properties/type.WriterPropertiesPtr.html" title="type parquet::file::properties::WriterPropertiesPtr">WriterPropertiesPtr</a>,
page_writer: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../page/trait.PageWriter.html" title="trait parquet::column::page::PageWriter">PageWriter</a> + 'a>
-) -> Self</h4></section><section id="method.write_batch_internal" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#286-376">source</a><h4 class="code-header">pub(crate) fn <a href="#method.write_batch_internal" class="fn">write_batch_internal</a>(
+) -> Self</h4></section><section id="method.write_batch_internal" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#296-386">source</a><h4 class="code-header">pub(crate) fn <a href="#method.write_batch_internal" class="fn">write_batch_internal</a>(
&mut self,
values: &E::<a class="associatedtype" href="encoder/trait.ColumnValueEncoder.html#associatedtype.Values" title="type parquet::column::writer::encoder::ColumnValueEncoder::Values">Values</a>,
value_indices: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>]>,
@@ -29,7 +33,7 @@ but we use a BTreeSet so that the output is deterministic</p>
min: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&E::<a class="associatedtype" href="encoder/trait.ColumnValueEncoder.html#associatedtype.T" title="type parquet::column::writer::encoder::ColumnValueEncoder::T">T</a>>,
max: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&E::<a class="associatedtype" href="encoder/trait.ColumnValueEncoder.html#associatedtype.T" title="type parquet::column::writer::encoder::ColumnValueEncoder::T">T</a>>,
distinct_count: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>>
-) -> <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>></h4></section><details class="toggle method-toggle" open><summary><section id="method.write_batch" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#390-397">source</a><h4 class="code-header">pub fn <a href="#method.write_batch" class=" [...]
+) -> <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>></h4></section><details class="toggle method-toggle" open><summary><section id="method.write_batch" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#400-407">source</a><h4 class="code-header">pub fn <a href="#method.write_batch" class=" [...]
&mut self,
values: &E::<a class="associatedtype" href="encoder/trait.ColumnValueEncoder.html#associatedtype.Values" title="type parquet::column::writer::encoder::ColumnValueEncoder::Values">Values</a>,
def_levels: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i16.html">i16</a>]>,
@@ -43,7 +47,7 @@ actual written values may be smaller than provided values.</p>
of the values buffer is returned.</p>
<p>Definition and/or repetition levels can be omitted, if values are
non-nullable and/or non-repeated.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.write_batch_with_statistics" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#406-424">source</a><h4 class="code-header">pub fn <a href="#method.write_batch_with_statistics" class="fn">write_batch_with_statistics</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.write_batch_with_statistics" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#416-434">source</a><h4 class="code-header">pub fn <a href="#method.write_batch_with_statistics" class="fn">write_batch_with_statistics</a>(
&mut self,
values: &E::<a class="associatedtype" href="encoder/trait.ColumnValueEncoder.html#associatedtype.Values" title="type parquet::column::writer::encoder::ColumnValueEncoder::Values">Values</a>,
def_levels: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i16.html">i16</a>]>,
@@ -57,19 +61,19 @@ chunk-level statistics</p>
for these statistics to take effect. If <a href="../../file/properties/enum.EnabledStatistics.html#variant.None" title="variant parquet::file::properties::EnabledStatistics::None"><code>EnabledStatistics::None</code></a> they will be ignored,
and if <a href="../../file/properties/enum.EnabledStatistics.html#variant.Page" title="variant parquet::file::properties::EnabledStatistics::Page"><code>EnabledStatistics::Page</code></a> the chunk statistics will instead be computed from the
computed page statistics</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.get_total_bytes_written" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#431-433">source</a><h4 class="code-header">pub fn <a href="#method.get_total_bytes_written" class="fn">get_total_bytes_written</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock" [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_total_bytes_written" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#441-443">source</a><h4 class="code-header">pub fn <a href="#method.get_total_bytes_written" class="fn">get_total_bytes_written</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock" [...]
This value is also returned when column writer is closed.</p>
<p>Note: this value does not include any buffered data that has not
yet been flushed to a page.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.get_estimated_total_bytes" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#440-444">source</a><h4 class="code-header">pub(crate) fn <a href="#method.get_estimated_total_bytes" class="fn">get_estimated_total_bytes</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div cla [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_estimated_total_bytes" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#450-454">source</a><h4 class="code-header">pub(crate) fn <a href="#method.get_estimated_total_bytes" class="fn">get_estimated_total_bytes</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div cla [...]
<p>Unlike <a href="struct.GenericColumnWriter.html#method.get_total_bytes_written" title="method parquet::column::writer::GenericColumnWriter::get_total_bytes_written"><code>Self::get_total_bytes_written</code></a> this includes an estimate
of any data that has not yet been flushed to a page</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.get_total_rows_written" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#448-450">source</a><h4 class="code-header">pub fn <a href="#method.get_total_rows_written" class="fn">get_total_rows_written</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_total_rows_written" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#458-460">source</a><h4 class="code-header">pub fn <a href="#method.get_total_rows_written" class="fn">get_total_rows_written</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p [...]
This value is also returned when column writer is closed.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.get_descriptor" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#453-455">source</a><h4 class="code-header">pub fn <a href="#method.get_descriptor" class="fn">get_descriptor</a>(&self) -> &<a class="type" href="../../schema/types/type.ColumnDescPtr.html" title="type parquet::schema::types::ColumnDescPtr">ColumnDescPtr</a></h4></section></summary>< [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.close" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#459-484">source</a><h4 class="code-header">pub fn <a href="#method.close" class="fn">close</a>(self) -> <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a><<a class="struct" href="struct.ColumnCloseResult.html" title="struct parquet::column::writer: [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_descriptor" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#463-465">source</a><h4 class="code-header">pub fn <a href="#method.get_descriptor" class="fn">get_descriptor</a>(&self) -> &<a class="type" href="../../schema/types/type.ColumnDescPtr.html" title="type parquet::schema::types::ColumnDescPtr">ColumnDescPtr</a></h4></section></summary>< [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.close" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#469-506">source</a><h4 class="code-header">pub fn <a href="#method.close" class="fn">close</a>(self) -> <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a><<a class="struct" href="struct.ColumnCloseResult.html" title="struct parquet::column::writer: [...]
Returns total bytes written, total rows written and column chunk metadata.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.write_mini_batch" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#489-571">source</a><h4 class="code-header">fn <a href="#method.write_mini_batch" class="fn">write_mini_batch</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.write_mini_batch" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#511-593">source</a><h4 class="code-header">fn <a href="#method.write_mini_batch" class="fn">write_mini_batch</a>(
&mut self,
values: &E::<a class="associatedtype" href="encoder/trait.ColumnValueEncoder.html#associatedtype.Values" title="type parquet::column::writer::encoder::ColumnValueEncoder::Values">Values</a>,
values_offset: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
@@ -80,37 +84,40 @@ Returns total bytes written, total rows written and column chunk metadata.</p>
) -> <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>></h4></section></summary><div class="docblock"><p>Writes mini batch of values, definition and repetition levels.
This allows fine-grained processing of values and maintaining a reasonable
page size.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.should_dict_fallback" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#578-583">source</a><h4 class="code-header">fn <a href="#method.should_dict_fallback" class="fn">should_dict_fallback</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.should_dict_fallback" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#600-605">source</a><h4 class="code-header">fn <a href="#method.should_dict_fallback" class="fn">should_dict_fallback</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns [...]
<p>We can only fall back if dictionary encoder is set and we have exceeded dictionary
size.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.should_add_data_page" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#587-598">source</a><h4 class="code-header">fn <a href="#method.should_add_data_page" class="fn">should_add_data_page</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.dict_fallback" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#602-610">source</a><h4 class="code-header">fn <a href="#method.dict_fallback" class="fn">dict_fallback</a>(&mut self) -> <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.should_add_data_page" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#609-620">source</a><h4 class="code-header">fn <a href="#method.should_add_data_page" class="fn">should_add_data_page</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.dict_fallback" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#624-632">source</a><h4 class="code-header">fn <a href="#method.dict_fallback" class="fn">dict_fallback</a>(&mut self) -> <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std [...]
Prepares and writes dictionary and all data pages into page writer.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.update_column_offset_index" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#613-667">source</a><h4 class="code-header">fn <a href="#method.update_column_offset_index" class="fn">update_column_offset_index</a>(&mut self, page_statistics: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option [...]
-</div></details><section id="method.truncate_min_value" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#669-678">source</a><h4 class="code-header">fn <a href="#method.truncate_min_value" class="fn">truncate_min_value</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.update_column_offset_index" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#635-713">source</a><h4 class="code-header">fn <a href="#method.update_column_offset_index" class="fn">update_column_offset_index</a>(
+ &mut self,
+ page_statistics: <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="../../file/statistics/struct.ValueStatistics.html" title="struct parquet::file::statistics::ValueStatistics">ValueStatistics</a><E::<a class="associatedtype" href="encoder/trait.ColumnValueEncoder.html#associatedtype.T" title="type parquet::column::writer::encoder::ColumnValueEncoder::T">T</a>>>
+)</h4></section></summary><div class="docblock"><p>Update the column index and offset index when adding the data page</p>
+</div></details><section id="method.truncate_min_value" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#715-724">source</a><h4 class="code-header">fn <a href="#method.truncate_min_value" class="fn">truncate_min_value</a>(
&self,
truncation_length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>>,
data: &[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</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="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>)</h4></section><section id="method.truncate_max_value" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#680-689">source</ [...]
+) -> (<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>)</h4></section><section id="method.truncate_max_value" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#726-735">source</ [...]
&self,
truncation_length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>>,
data: &[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</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="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>)</h4></section><details class="toggle method-toggle" open><summary><section id="method.add_data_page" class="method"><a class="src rightside" href="../../../src/parq [...]
+) -> (<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>)</h4></section><details class="toggle method-toggle" open><summary><section id="method.add_data_page" class="method"><a class="src rightside" href="../../../src/parq [...]
Data page is either buffered in case of dictionary encoding or written directly.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.flush_data_pages" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#829-840">source</a><h4 class="code-header">fn <a href="#method.flush_data_pages" class="fn">flush_data_pages</a>(&mut self) -> <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/ni [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.flush_data_pages" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#876-887">source</a><h4 class="code-header">fn <a href="#method.flush_data_pages" class="fn">flush_data_pages</a>(&mut self) -> <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/ni [...]
dictionary encoding into underlying sink.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.write_column_metadata" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#843-932">source</a><h4 class="code-header">fn <a href="#method.write_column_metadata" class="fn">write_column_metadata</a>(&mut self) -> <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a><<a class="struct" href="../../file/metad [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.encode_levels_v1" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#936-940">source</a><h4 class="code-header">fn <a href="#method.encode_levels_v1" class="fn">encode_levels_v1</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.write_column_metadata" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#890-979">source</a><h4 class="code-header">fn <a href="#method.write_column_metadata" class="fn">write_column_metadata</a>(&mut self) -> <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a><<a class="struct" href="../../file/metad [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.encode_levels_v1" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#983-987">source</a><h4 class="code-header">fn <a href="#method.encode_levels_v1" class="fn">encode_levels_v1</a>(
&self,
encoding: <a class="enum" href="../../basic/enum.Encoding.html" title="enum parquet::basic::Encoding">Encoding</a>,
levels: &[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i16.html">i16</a>],
max_level: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i16.html">i16</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="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>> <a href="#" class="tooltip" data-notable-ty="Vec<u8>">ⓘ</a></h4></section></summary><div class="docblock"><p>Encodes definition or repetition levels for Data Page v1.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.encode_levels_v2" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#945-949">source</a><h4 class="code-header">fn <a href="#method.encode_levels_v2" class="fn">encode_levels_v2</a>(&self, levels: &[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i16.html">i16</a>], max_level: <a class="primitive" href="https://doc.rust-lang. [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.encode_levels_v2" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#992-996">source</a><h4 class="code-header">fn <a href="#method.encode_levels_v2" class="fn">encode_levels_v2</a>(&self, levels: &[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i16.html">i16</a>], max_level: <a class="primitive" href="https://doc.rust-lang. [...]
Encoding is always RLE.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.write_data_page" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#953-962">source</a><h4 class="code-header">fn <a href="#method.write_data_page" class="fn">write_data_page</a>(&mut self, page: <a class="struct" href="../page/struct.CompressedPage.html" title="struct parquet::column::page::CompressedPage">CompressedPage</a>) -> <a class="type" href=". [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.write_dictionary_page" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#966-995">source</a><h4 class="code-header">fn <a href="#method.write_dictionary_page" class="fn">write_dictionary_page</a>(&mut self) -> <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a><<a class="primitive" href="https://doc.r [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.update_metrics_for_page" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#999-1020">source</a><h4 class="code-header">fn <a href="#method.update_metrics_for_page" class="fn">update_metrics_for_page</a>(&mut self, page_spec: <a class="struct" href="../page/struct.PageWriteSpec.html" title="struct parquet::column::page::PageWriteSpec">PageWriteSpec</a>)</h [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.write_data_page" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#1000-1009">source</a><h4 class="code-header">fn <a href="#method.write_data_page" class="fn">write_data_page</a>(&mut self, page: <a class="struct" href="../page/struct.CompressedPage.html" title="struct parquet::column::page::CompressedPage">CompressedPage</a>) -> <a class="type" href= [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.write_dictionary_page" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#1013-1042">source</a><h4 class="code-header">fn <a href="#method.write_dictionary_page" class="fn">write_dictionary_page</a>(&mut self) -> <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a><<a class="primitive" href="https://doc [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.update_metrics_for_page" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#1046-1067">source</a><h4 class="code-header">fn <a href="#method.update_metrics_for_page" class="fn">update_metrics_for_page</a>(&mut self, page_spec: <a class="struct" href="../page/struct.PageWriteSpec.html" title="struct parquet::column::page::PageWriteSpec">PageWriteSpec</a>)</ [...]
</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-GenericColumnWriter%3C'a,+E%3E" class="impl"><a href="#impl-RefUnwindSafe-for-GenericColumnWriter%3C'a,+E%3E" class="anchor">§</a><h3 class="code-header">impl<'a, E> !<a class="trait" href="https://doc.rust-lang.org/nig [...]
E: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Sync-for-GenericColumnWriter%3C'a,+E%3E" class="impl"><a href="#impl-Sync-for-GenericColumnWriter%3C'a,+E%3E" class="anchor">§</a><h3 class="code-header">impl<'a, E> !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="st [...]
E: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,
diff --git a/parquet/column/writer/trait.EncodingWriteSupport.html b/parquet/column/writer/trait.EncodingWriteSupport.html
index 95fa4721fb..d150c3fc07 100644
--- a/parquet/column/writer/trait.EncodingWriteSupport.html
+++ b/parquet/column/writer/trait.EncodingWriteSupport.html
@@ -1,7 +1,7 @@
-<!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="Trait to define default encoding for types, including whether or not the type supports dictionary encoding."><title>EncodingWriteSupport in parquet::column::writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-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="Trait to define default encoding for types, including whether or not the type supports dictionary encoding."><title>EncodingWriteSupport in parquet::column::writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-4 [...]
// Required method
fn <a href="#tymethod.has_dictionary_support" class="fn">has_dictionary_support</a>(props: &<a class="struct" href="../../file/properties/struct.WriterProperties.html" title="struct parquet::file::properties::WriterProperties">WriterProperties</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>;
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait to define default encoding for types, including whether or not the type
supports dictionary encoding.</p>
-</div></details><h2 id="required-methods" class="small-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.has_dictionary_support" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#1125">source</a><h4 class="code-header">fn <a href="#tymethod.has_dictionary_support" class="fn">has_dictionary_support</a>(props: &<a c [...]
+</div></details><h2 id="required-methods" class="small-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.has_dictionary_support" class="method"><a class="src rightside" href="../../../src/parquet/column/writer/mod.rs.html#1172">source</a><h4 class="code-header">fn <a href="#tymethod.has_dictionary_support" class="fn">has_dictionary_support</a>(props: &<a c [...]
</div></details></div><h2 id="object-safety" class="small-section-header">Object Safety<a href="#object-safety" class="anchor">§</a></h2><div class="object-safety-info">This trait is <b>not</b> <a href="https://doc.rust-lang.org/nightly/reference/items/traits.html#object-safety">object safe</a>.</div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"></div><script src="../../../trait.impl/parquet/col [...]
\ No newline at end of file
diff --git a/parquet/column/writer/type.ColumnWriterImpl.html b/parquet/column/writer/type.ColumnWriterImpl.html
index 170da2a32c..9ed20d02ac 100644
--- a/parquet/column/writer/type.ColumnWriterImpl.html
+++ b/parquet/column/writer/type.ColumnWriterImpl.html
@@ -1,5 +1,5 @@
-<!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="Typed column writer for a primitive column."><title>ColumnWriterImpl in parquet::column::writer - 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/ [...]
-</div></details><h2 id="aliased-type" class="small-section-header">Aliased Type<a href="#aliased-type" class="anchor">§</a></h2><pre class="rust item-decl"><code>struct ColumnWriterImpl<'a, T> {<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 15 fields</span></summary>
+<!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="Typed column writer for a primitive column."><title>ColumnWriterImpl in parquet::column::writer - 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/ [...]
+</div></details><h2 id="aliased-type" class="small-section-header">Aliased Type<a href="#aliased-type" class="anchor">§</a></h2><pre class="rust item-decl"><code>struct ColumnWriterImpl<'a, T> {<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 18 fields</span></summary>
descr: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><<a class="struct" href="../../schema/types/struct.ColumnDescriptor.html" title="struct parquet::schema::types::ColumnDescriptor">ColumnDescriptor</a>>,
props: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><<a class="struct" href="../../file/properties/struct.WriterProperties.html" title="struct parquet::file::properties::WriterProperties">WriterProperties</a>>,
statistics_enabled: <a class="enum" href="../../file/properties/enum.EnabledStatistics.html" title="enum parquet::file::properties::EnabledStatistics">EnabledStatistics</a>,
@@ -15,6 +15,10 @@
data_pages: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/collections/vec_deque/struct.VecDeque.html" title="struct alloc::collections::vec_deque::VecDeque">VecDeque</a><<a class="struct" href="../page/struct.CompressedPage.html" title="struct parquet::column::page::CompressedPage">CompressedPage</a>>,
column_index_builder: <a class="struct" href="../../file/metadata/struct.ColumnIndexBuilder.html" title="struct parquet::file::metadata::ColumnIndexBuilder">ColumnIndexBuilder</a>,
offset_index_builder: <a class="struct" href="../../file/metadata/struct.OffsetIndexBuilder.html" title="struct parquet::file::metadata::OffsetIndexBuilder">OffsetIndexBuilder</a>,
+ data_page_boundary_ascending: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+ data_page_boundary_descending: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+ last_non_null_data_page_min_max: <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="encoder/struct.ColumnValueEncoderImpl.html" title="struct parquet::column::writer::encoder::ColumnValueEncoderImpl">ColumnValueEncoderImpl</a><T> as <a class="trait" href="encoder/trait.ColumnValueEncoder.html" title="trait parquet::column::writer::encoder::ColumnValueEncoder">ColumnVa [...]
</details>}</code></pre><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.descr" class="structfield small-section-header"><a href="#structfield.descr" class="anchor field">§</a><code>descr: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><<a class="struct" href="../../schema/types/struct.ColumnDescriptor.html" title="struct parquet::sche [...]
but we use a BTreeSet so that the output is deterministic</p>
-</div><span id="structfield.def_levels_sink" class="structfield small-section-header"><a href="#structfield.def_levels_sink" class="anchor field">§</a><code>def_levels_sink: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i16.html">i16</a>></code></span><span id="structfield.rep_levels_sink" class="structfield small-section-header">< [...]
\ No newline at end of file
+</div><span id="structfield.def_levels_sink" class="structfield small-section-header"><a href="#structfield.def_levels_sink" class="anchor field">§</a><code>def_levels_sink: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i16.html">i16</a>></code></span><span id="structfield.rep_levels_sink" class="structfield small-section-header">< [...]
+</div><script src="../../../type.impl/parquet/column/writer/struct.GenericColumnWriter.js" data-self-path="parquet::column::writer::ColumnWriterImpl" async></script></section></div></main></body></html>
\ No newline at end of file
diff --git a/parquet/file/metadata/index.html b/parquet/file/metadata/index.html
index 4c982b8393..c8d9247018 100644
--- a/parquet/file/metadata/index.html
+++ b/parquet/file/metadata/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 information about available Parquet metadata."><title>parquet::file::metadata - 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" cr [...]
+<!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 information about available Parquet metadata."><title>parquet::file::metadata - 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" cr [...]
<p>The hierarchy of metadata is as follows:</p>
<p><a href="struct.ParquetMetaData.html"><code>ParquetMetaData</code></a> contains
<a href="struct.FileMetaData.html"><code>FileMetaData</code></a> and zero or more
diff --git a/parquet/file/metadata/struct.ColumnIndexBuilder.html b/parquet/file/metadata/struct.ColumnIndexBuilder.html
index 594c4c394c..b3b2fbbc8d 100644
--- a/parquet/file/metadata/struct.ColumnIndexBuilder.html
+++ b/parquet/file/metadata/struct.ColumnIndexBuilder.html
@@ -1,19 +1,19 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Builder for column index"><title>ColumnIndexBuilder in parquet::file::metadata - 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" crossorigi [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Builder for column index"><title>ColumnIndexBuilder in parquet::file::metadata - 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" crossorigi [...]
null_pages: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>>,
min_values: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</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="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>>>,
max_values: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</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="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>>>,
- boundary_order: <a class="struct" href="../../format/struct.BoundaryOrder.html" title="struct parquet::format::BoundaryOrder">BoundaryOrder</a>,
null_counts: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i64.html">i64</a>>,
+ boundary_order: <a class="struct" href="../../format/struct.BoundaryOrder.html" title="struct parquet::format::BoundaryOrder">BoundaryOrder</a>,
valid: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Builder for column index</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.null_pages" class="structfield small-section-header"><a href="#structfield.null_pages" class="anchor field">§</a><code>null_pages: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>& [...]
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.null_pages" class="structfield small-section-header"><a href="#structfield.null_pages" class="anchor field">§</a><code>null_pages: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>& [...]
&mut self,
null_page: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
min_value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>>,
max_value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>>,
null_count: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i64.html">i64</a>
-)</h4></section><section id="method.to_invalid" class="method"><a class="src rightside" href="../../../src/parquet/file/metadata.rs.html#926-928">source</a><h4 class="code-header">pub fn <a href="#method.to_invalid" class="fn">to_invalid</a>(&mut self)</h4></section><section id="method.valid" class="method"><a class="src rightside" href="../../../src/parquet/file/metadata.rs.html#930-932">source</a><h4 class="code-header">pub fn <a href="#method.valid" class="fn">valid</a>(&self) [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-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-Default-for-ColumnIndexBuilder" class="impl"><a class="src rightside" href="../../../src/parquet/file/metadata.rs.html#895-899">source</a><a href="#impl-Default-for-ColumnIndexBuilder" class="anchor">§< [...]
+)</h4></section><section id="method.set_boundary_order" class="method"><a class="src rightside" href="../../../src/parquet/file/metadata.rs.html#925-927">source</a><h4 class="code-header">pub fn <a href="#method.set_boundary_order" class="fn">set_boundary_order</a>(&mut self, boundary_order: <a class="struct" href="../../format/struct.BoundaryOrder.html" title="struct parquet::format::BoundaryOrder">BoundaryOrder</a>)</h4></section><section id="method.to_invalid" class="method"><a cl [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-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-Default-for-ColumnIndexBuilder" class="impl"><a class="src rightside" href="../../../src/parquet/file/metadata.rs.html#894-898">source</a><a href="#impl-Default-for-ColumnIndexBuilder" class="anchor">§< [...]
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#141">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/parquet/file/metadata/struct.OffsetIndexBuilder.html b/parquet/file/metadata/struct.OffsetIndexBuilder.html
index 7faac2aae1..70336220b6 100644
--- a/parquet/file/metadata/struct.OffsetIndexBuilder.html
+++ b/parquet/file/metadata/struct.OffsetIndexBuilder.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Builder for offset index"><title>OffsetIndexBuilder in parquet::file::metadata - 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" crossorigi [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Builder for offset index"><title>OffsetIndexBuilder in parquet::file::metadata - 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" crossorigi [...]
offset_array: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i64.html">i64</a>>,
compressed_page_size_array: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>>,
first_row_index_array: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i64.html">i64</a>>,
current_first_row_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i64.html">i64</a>,
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Builder for offset index</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.offset_array" class="structfield small-section-header"><a href="#structfield.offset_array" class="anchor field">§</a><code>offset_array: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i64.html">i64< [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-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-Default-for-OffsetIndexBuilder" class="impl"><a class="src rightside" href="../../../src/parquet/file/metadata.rs.html#954-958">source</a><a href="#impl-Default-for-OffsetIndexBuilder" class="anchor">§< [...]
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.offset_array" class="structfield small-section-header"><a href="#structfield.offset_array" class="anchor field">§</a><code>offset_array: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i64.html">i64< [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-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-Default-for-OffsetIndexBuilder" class="impl"><a class="src rightside" href="../../../src/parquet/file/metadata.rs.html#957-961">source</a><a href="#impl-Default-for-OffsetIndexBuilder" class="anchor">§< [...]
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#141">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/search-index.js b/search-index.js
index ce67081687..cbb7d7481e 100644
--- a/search-index.js
+++ b/search-index.js
@@ -24,7 +24,7 @@ var searchIndex = JSON.parse('{\
"flight_test_integration_client":{"doc":"","t":"FPPIPPIGNNNNNNNNNNNNNNNNNNNNNNONNNNHOOONNNNNNNNNNNNN","n":["Args","AuthBasicProto","Err","Error","Middleware","Ok","Result","Scenario","augment_args","augment_args_for_update","borrow","borrow","borrow_mut","borrow_mut","cast","cast","clone","clone_into","command","command_for_update","fmt","fmt","from","from","from_arg_matches","from_arg_matches_mut","from_cast","from_cast","from_ref","group_id","host","into","into","into_request","into_re [...]
"flight_test_integration_server":{"doc":"","t":"FPPIPPIGNNNNNNNNNNNNNNNNNNNNNNNNNNHOONNNNNNNNNNNNN","n":["Args","AuthBasicProto","Err","Error","Middleware","Ok","Result","Scenario","augment_args","augment_args_for_update","borrow","borrow","borrow_mut","borrow_mut","cast","cast","clone","clone_into","command","command_for_update","fmt","fmt","from","from","from_arg_matches","from_arg_matches_mut","from_cast","from_cast","from_ref","group_id","into","into","into_request","into_request","m [...]
"gen":{"doc":"","t":"HH","n":["main","prost_config"],"q":[[0,"gen"],[2,"core::error"],[3,"alloc::boxed"],[4,"core::result"],[5,"prost_build"]],"d":["",""],"i":[0,0],"f":[[[],[[4,[1,[3,[2]]]]]],[[],5]],"c":[],"p":[[1,"tuple"],[10,"Error",2],[5,"Box",3],[6,"Result",4],[5,"Config",5]],"b":[]},\
-"parquet":{"doc":"This crate contains the official Native Rust …","t":"CCCCCCQCCCCCSEEFSEFNCHCCCNNNNCNNNNNNCONNNNNNNNNNOOHHHCNNNNNNNNNKFFFFFIFFFKFFHOOOONNNNNNNNNNNNNNNNNNNNNNNNNMNONMHOOOOCOONNNNNNNNNNNNNNNOONNNNNNNNOONNNNOOOOONNNNNNNNNNMNOOONNOMOOOOOOOOOONNNOOOOCOOOOHOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKFFNNNNNNMNONNNNNNNNOMNONNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNONNONNONNNNNNNNNNFFFFGFFFFPPIONNONNNNNNNNNNNNNNNNNNOOCNNNNNNNNNONNNNNOHOONNNNNNNNNNNNNNNNNNNNNNNNNNHHNHHHNHHHHNONNNNNN [...]
+"parquet":{"doc":"This crate contains the official Native Rust …","t":"CCCCCCQCCCCCSEEFSEFNCHCCCNNNNCNNNNNNCONNNNNNNNNNOOHHHCNNNNNNNNNKFFFFFIFFFKFFHOOOONNNNNNNNNNNNNNNNNNNNNNNNNMNONMHOOOOCOONNNNNNNNNNNNNNNOONNNNNNNNOONNNNOOOOONNNNNNNNNNMNOOONNOMOOOOOOOOOONNNOOOOCOOOOHOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKFFNNNNNNMNONNNNNNNNOMNONNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNONNONNONNNNNNNNNNFFFFGFFFFPPIONNONNNNNNNNNNNNNNNNNNOOCNNNNNNNNNONNNNNOHOONNNNNNNNNNNNNNNNNNNNNNNNNNHHNHHHNHHHHNONNNNNN [...]
"parquet_concat":{"doc":"Binary that concatenates the column data of one or more …","t":"FNNNNNNNNNNNNNONHONNNNNN","n":["Args","augment_args","augment_args_for_update","borrow","borrow_mut","cast","command","command_for_update","fmt","from","from_arg_matches","from_arg_matches_mut","from_cast","group_id","input","into","main","output","run","try_from","try_into","type_id","update_from_arg_matches","update_from_arg_matches_mut"],"q":[[0,"parquet_concat"],[24,"clap_builder::builder::comman [...]
"parquet_derive":{"doc":"","t":"YYCPPPFPPPGGPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNONNNNNNNNNNNONNNNNNONNNN","n":["ParquetRecordReader","ParquetRecordWriter","parquet_field","Array","ChronoNaiveDate","ChronoNaiveDateTime","Field","Option","Reference","Slice","ThirdPartyType","Type","TypePath","Uuid","Vec","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","column_reader","column_writer","converted_type","copied_direct_fields","copied_direct_vals","eq","eq","eq","fmt","fmt","fm [...]
"parquet_derive_test":{"doc":"","t":"FFOOOOONNNNOOOOOOONNOOONOONNNNNOOOONNOOOOOOOOOOOOOONNNNNNOO","n":["ACompleteRecord","APartiallyCompleteRecord","a_bool","a_borrowed_string","a_str","a_string","bool","borrow","borrow","borrow_mut","borrow_mut","borrowed_byte_vec","borrowed_maybe_a_str","borrowed_maybe_a_string","borrowed_maybe_borrowed_byte_vec","borrowed_maybe_byte_vec","byte_vec","byte_vec","cast","cast","date","double","double","eq","float","float","fmt","from","from","from_cast"," [...]
diff --git a/settings.html b/settings.html
index 0ddaf9d70e..d49292e1ac 100644
--- a/settings.html
+++ b/settings.html
@@ -1 +1 @@
-<!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="Settings of Rustdoc"><title>Settings</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" crossorigin href="./static.files/FiraSans-Regular-018c141bf0843ffd [...]
\ No newline at end of file
+<!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="Settings of Rustdoc"><title>Settings</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" crossorigin href="./static.files/FiraSans-Regular-018c141bf0843ffd [...]
\ No newline at end of file
diff --git a/src/parquet/column/writer/mod.rs.html b/src/parquet/column/writer/mod.rs.html
index 3a22f33f9c..b6db8fa023 100644
--- a/src/parquet/column/writer/mod.rs.html
+++ b/src/parquet/column/writer/mod.rs.html
@@ -3264,6 +3264,199 @@
<a href="#3264" id="3264">3264</a>
<a href="#3265" id="3265">3265</a>
<a href="#3266" id="3266">3266</a>
+<a href="#3267" id="3267">3267</a>
+<a href="#3268" id="3268">3268</a>
+<a href="#3269" id="3269">3269</a>
+<a href="#3270" id="3270">3270</a>
+<a href="#3271" id="3271">3271</a>
+<a href="#3272" id="3272">3272</a>
+<a href="#3273" id="3273">3273</a>
+<a href="#3274" id="3274">3274</a>
+<a href="#3275" id="3275">3275</a>
+<a href="#3276" id="3276">3276</a>
+<a href="#3277" id="3277">3277</a>
+<a href="#3278" id="3278">3278</a>
+<a href="#3279" id="3279">3279</a>
+<a href="#3280" id="3280">3280</a>
+<a href="#3281" id="3281">3281</a>
+<a href="#3282" id="3282">3282</a>
+<a href="#3283" id="3283">3283</a>
+<a href="#3284" id="3284">3284</a>
+<a href="#3285" id="3285">3285</a>
+<a href="#3286" id="3286">3286</a>
+<a href="#3287" id="3287">3287</a>
+<a href="#3288" id="3288">3288</a>
+<a href="#3289" id="3289">3289</a>
+<a href="#3290" id="3290">3290</a>
+<a href="#3291" id="3291">3291</a>
+<a href="#3292" id="3292">3292</a>
+<a href="#3293" id="3293">3293</a>
+<a href="#3294" id="3294">3294</a>
+<a href="#3295" id="3295">3295</a>
+<a href="#3296" id="3296">3296</a>
+<a href="#3297" id="3297">3297</a>
+<a href="#3298" id="3298">3298</a>
+<a href="#3299" id="3299">3299</a>
+<a href="#3300" id="3300">3300</a>
+<a href="#3301" id="3301">3301</a>
+<a href="#3302" id="3302">3302</a>
+<a href="#3303" id="3303">3303</a>
+<a href="#3304" id="3304">3304</a>
+<a href="#3305" id="3305">3305</a>
+<a href="#3306" id="3306">3306</a>
+<a href="#3307" id="3307">3307</a>
+<a href="#3308" id="3308">3308</a>
+<a href="#3309" id="3309">3309</a>
+<a href="#3310" id="3310">3310</a>
+<a href="#3311" id="3311">3311</a>
+<a href="#3312" id="3312">3312</a>
+<a href="#3313" id="3313">3313</a>
+<a href="#3314" id="3314">3314</a>
+<a href="#3315" id="3315">3315</a>
+<a href="#3316" id="3316">3316</a>
+<a href="#3317" id="3317">3317</a>
+<a href="#3318" id="3318">3318</a>
+<a href="#3319" id="3319">3319</a>
+<a href="#3320" id="3320">3320</a>
+<a href="#3321" id="3321">3321</a>
+<a href="#3322" id="3322">3322</a>
+<a href="#3323" id="3323">3323</a>
+<a href="#3324" id="3324">3324</a>
+<a href="#3325" id="3325">3325</a>
+<a href="#3326" id="3326">3326</a>
+<a href="#3327" id="3327">3327</a>
+<a href="#3328" id="3328">3328</a>
+<a href="#3329" id="3329">3329</a>
+<a href="#3330" id="3330">3330</a>
+<a href="#3331" id="3331">3331</a>
+<a href="#3332" id="3332">3332</a>
+<a href="#3333" id="3333">3333</a>
+<a href="#3334" id="3334">3334</a>
+<a href="#3335" id="3335">3335</a>
+<a href="#3336" id="3336">3336</a>
+<a href="#3337" id="3337">3337</a>
+<a href="#3338" id="3338">3338</a>
+<a href="#3339" id="3339">3339</a>
+<a href="#3340" id="3340">3340</a>
+<a href="#3341" id="3341">3341</a>
+<a href="#3342" id="3342">3342</a>
+<a href="#3343" id="3343">3343</a>
+<a href="#3344" id="3344">3344</a>
+<a href="#3345" id="3345">3345</a>
+<a href="#3346" id="3346">3346</a>
+<a href="#3347" id="3347">3347</a>
+<a href="#3348" id="3348">3348</a>
+<a href="#3349" id="3349">3349</a>
+<a href="#3350" id="3350">3350</a>
+<a href="#3351" id="3351">3351</a>
+<a href="#3352" id="3352">3352</a>
+<a href="#3353" id="3353">3353</a>
+<a href="#3354" id="3354">3354</a>
+<a href="#3355" id="3355">3355</a>
+<a href="#3356" id="3356">3356</a>
+<a href="#3357" id="3357">3357</a>
+<a href="#3358" id="3358">3358</a>
+<a href="#3359" id="3359">3359</a>
+<a href="#3360" id="3360">3360</a>
+<a href="#3361" id="3361">3361</a>
+<a href="#3362" id="3362">3362</a>
+<a href="#3363" id="3363">3363</a>
+<a href="#3364" id="3364">3364</a>
+<a href="#3365" id="3365">3365</a>
+<a href="#3366" id="3366">3366</a>
+<a href="#3367" id="3367">3367</a>
+<a href="#3368" id="3368">3368</a>
+<a href="#3369" id="3369">3369</a>
+<a href="#3370" id="3370">3370</a>
+<a href="#3371" id="3371">3371</a>
+<a href="#3372" id="3372">3372</a>
+<a href="#3373" id="3373">3373</a>
+<a href="#3374" id="3374">3374</a>
+<a href="#3375" id="3375">3375</a>
+<a href="#3376" id="3376">3376</a>
+<a href="#3377" id="3377">3377</a>
+<a href="#3378" id="3378">3378</a>
+<a href="#3379" id="3379">3379</a>
+<a href="#3380" id="3380">3380</a>
+<a href="#3381" id="3381">3381</a>
+<a href="#3382" id="3382">3382</a>
+<a href="#3383" id="3383">3383</a>
+<a href="#3384" id="3384">3384</a>
+<a href="#3385" id="3385">3385</a>
+<a href="#3386" id="3386">3386</a>
+<a href="#3387" id="3387">3387</a>
+<a href="#3388" id="3388">3388</a>
+<a href="#3389" id="3389">3389</a>
+<a href="#3390" id="3390">3390</a>
+<a href="#3391" id="3391">3391</a>
+<a href="#3392" id="3392">3392</a>
+<a href="#3393" id="3393">3393</a>
+<a href="#3394" id="3394">3394</a>
+<a href="#3395" id="3395">3395</a>
+<a href="#3396" id="3396">3396</a>
+<a href="#3397" id="3397">3397</a>
+<a href="#3398" id="3398">3398</a>
+<a href="#3399" id="3399">3399</a>
+<a href="#3400" id="3400">3400</a>
+<a href="#3401" id="3401">3401</a>
+<a href="#3402" id="3402">3402</a>
+<a href="#3403" id="3403">3403</a>
+<a href="#3404" id="3404">3404</a>
+<a href="#3405" id="3405">3405</a>
+<a href="#3406" id="3406">3406</a>
+<a href="#3407" id="3407">3407</a>
+<a href="#3408" id="3408">3408</a>
+<a href="#3409" id="3409">3409</a>
+<a href="#3410" id="3410">3410</a>
+<a href="#3411" id="3411">3411</a>
+<a href="#3412" id="3412">3412</a>
+<a href="#3413" id="3413">3413</a>
+<a href="#3414" id="3414">3414</a>
+<a href="#3415" id="3415">3415</a>
+<a href="#3416" id="3416">3416</a>
+<a href="#3417" id="3417">3417</a>
+<a href="#3418" id="3418">3418</a>
+<a href="#3419" id="3419">3419</a>
+<a href="#3420" id="3420">3420</a>
+<a href="#3421" id="3421">3421</a>
+<a href="#3422" id="3422">3422</a>
+<a href="#3423" id="3423">3423</a>
+<a href="#3424" id="3424">3424</a>
+<a href="#3425" id="3425">3425</a>
+<a href="#3426" id="3426">3426</a>
+<a href="#3427" id="3427">3427</a>
+<a href="#3428" id="3428">3428</a>
+<a href="#3429" id="3429">3429</a>
+<a href="#3430" id="3430">3430</a>
+<a href="#3431" id="3431">3431</a>
+<a href="#3432" id="3432">3432</a>
+<a href="#3433" id="3433">3433</a>
+<a href="#3434" id="3434">3434</a>
+<a href="#3435" id="3435">3435</a>
+<a href="#3436" id="3436">3436</a>
+<a href="#3437" id="3437">3437</a>
+<a href="#3438" id="3438">3438</a>
+<a href="#3439" id="3439">3439</a>
+<a href="#3440" id="3440">3440</a>
+<a href="#3441" id="3441">3441</a>
+<a href="#3442" id="3442">3442</a>
+<a href="#3443" id="3443">3443</a>
+<a href="#3444" id="3444">3444</a>
+<a href="#3445" id="3445">3445</a>
+<a href="#3446" id="3446">3446</a>
+<a href="#3447" id="3447">3447</a>
+<a href="#3448" id="3448">3448</a>
+<a href="#3449" id="3449">3449</a>
+<a href="#3450" id="3450">3450</a>
+<a href="#3451" id="3451">3451</a>
+<a href="#3452" id="3452">3452</a>
+<a href="#3453" id="3453">3453</a>
+<a href="#3454" id="3454">3454</a>
+<a href="#3455" id="3455">3455</a>
+<a href="#3456" id="3456">3456</a>
+<a href="#3457" id="3457">3457</a>
+<a href="#3458" id="3458">3458</a>
+<a href="#3459" id="3459">3459</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
@@ -3287,7 +3480,7 @@
<span class="kw">use </span>half::f16;
<span class="kw">use </span><span class="kw">crate</span>::bloom_filter::Sbbf;
-<span class="kw">use </span><span class="kw">crate</span>::format::{ColumnIndex, OffsetIndex};
+<span class="kw">use </span><span class="kw">crate</span>::format::{BoundaryOrder, ColumnIndex, OffsetIndex};
<span class="kw">use </span>std::collections::{BTreeSet, VecDeque};
<span class="kw">use </span>std::str;
@@ -3494,6 +3687,13 @@
<span class="comment">// column index and offset index
</span>column_index_builder: ColumnIndexBuilder,
offset_index_builder: OffsetIndexBuilder,
+
+ <span class="comment">// Below fields used to incrementally check boundary order across data pages.
+ // We assume they are ascending/descending until proven wrong.
+ </span>data_page_boundary_ascending: bool,
+ data_page_boundary_descending: bool,
+ <span class="doccomment">/// (min, max)
+ </span>last_non_null_data_page_min_max: <span class="prelude-ty">Option</span><(E::T, E::T)>,
}
<span class="kw">impl</span><<span class="lifetime">'a</span>, E: ColumnValueEncoder> GenericColumnWriter<<span class="lifetime">'a</span>, E> {
@@ -3545,6 +3745,9 @@
column_index_builder: ColumnIndexBuilder::new(),
offset_index_builder: OffsetIndexBuilder::new(),
encodings,
+ data_page_boundary_ascending: <span class="bool-val">true</span>,
+ data_page_boundary_descending: <span class="bool-val">true</span>,
+ last_non_null_data_page_min_max: <span class="prelude-val">None</span>,
}
}
@@ -3733,6 +3936,18 @@
<span class="kw">let </span>metadata = <span class="self">self</span>.write_column_metadata()<span class="question-mark">?</span>;
<span class="self">self</span>.page_writer.close()<span class="question-mark">?</span>;
+ <span class="kw">let </span>boundary_order = <span class="kw">match </span>(
+ <span class="self">self</span>.data_page_boundary_ascending,
+ <span class="self">self</span>.data_page_boundary_descending,
+ ) {
+ <span class="comment">// If the lists are composed of equal elements then will be marked as ascending
+ // (Also the case if all pages are null pages)
+ </span>(<span class="bool-val">true</span>, <span class="kw">_</span>) => BoundaryOrder::ASCENDING,
+ (<span class="bool-val">false</span>, <span class="bool-val">true</span>) => BoundaryOrder::DESCENDING,
+ (<span class="bool-val">false</span>, <span class="bool-val">false</span>) => BoundaryOrder::UNORDERED,
+ };
+ <span class="self">self</span>.column_index_builder.set_boundary_order(boundary_order);
+
<span class="kw">let </span>column_index = <span class="self">self
</span>.column_index_builder
.valid()
@@ -3876,7 +4091,7 @@
}
<span class="doccomment">/// Update the column index and offset index when adding the data page
- </span><span class="kw">fn </span>update_column_offset_index(<span class="kw-2">&mut </span><span class="self">self</span>, page_statistics: <span class="prelude-ty">Option</span><<span class="kw-2">&</span>Statistics>) {
+ </span><span class="kw">fn </span>update_column_offset_index(<span class="kw-2">&mut </span><span class="self">self</span>, page_statistics: <span class="prelude-ty">Option</span><<span class="kw-2">&</span>ValueStatistics<E::T>>) {
<span class="comment">// update the column index
</span><span class="kw">let </span>null_page =
(<span class="self">self</span>.page_metrics.num_buffered_rows <span class="kw">as </span>u64) == <span class="self">self</span>.page_metrics.num_page_nulls;
@@ -3897,6 +4112,30 @@
<span class="self">self</span>.column_index_builder.to_invalid();
}
<span class="prelude-val">Some</span>(stat) => {
+ <span class="comment">// Check if min/max are still ascending/descending across pages
+ </span><span class="kw">let </span>new_min = stat.min();
+ <span class="kw">let </span>new_max = stat.max();
+ <span class="kw">if let </span><span class="prelude-val">Some</span>((last_min, last_max)) = <span class="kw-2">&</span><span class="self">self</span>.last_non_null_data_page_min_max {
+ <span class="kw">if </span><span class="self">self</span>.data_page_boundary_ascending {
+ <span class="comment">// If last min/max are greater than new min/max then not ascending anymore
+ </span><span class="kw">let </span>not_ascending = compare_greater(<span class="kw-2">&</span><span class="self">self</span>.descr, last_min, new_min)
+ || compare_greater(<span class="kw-2">&</span><span class="self">self</span>.descr, last_max, new_max);
+ <span class="kw">if </span>not_ascending {
+ <span class="self">self</span>.data_page_boundary_ascending = <span class="bool-val">false</span>;
+ }
+ }
+
+ <span class="kw">if </span><span class="self">self</span>.data_page_boundary_descending {
+ <span class="comment">// If new min/max are greater than last min/max then not descending anymore
+ </span><span class="kw">let </span>not_descending = compare_greater(<span class="kw-2">&</span><span class="self">self</span>.descr, new_min, last_min)
+ || compare_greater(<span class="kw-2">&</span><span class="self">self</span>.descr, new_max, last_max);
+ <span class="kw">if </span>not_descending {
+ <span class="self">self</span>.data_page_boundary_descending = <span class="bool-val">false</span>;
+ }
+ }
+ }
+ <span class="self">self</span>.last_non_null_data_page_min_max = <span class="prelude-val">Some</span>((new_min.clone(), new_max.clone()));
+
<span class="comment">// We only truncate if the data is represented as binary
</span><span class="kw">match </span><span class="self">self</span>.descr.physical_type() {
Type::BYTE_ARRAY | Type::FIXED_LEN_BYTE_ARRAY => {
@@ -3969,7 +4208,7 @@
(<span class="prelude-val">Some</span>(min), <span class="prelude-val">Some</span>(max)) => {
update_min(<span class="kw-2">&</span><span class="self">self</span>.descr, <span class="kw-2">&</span>min, <span class="kw-2">&mut </span><span class="self">self</span>.column_metrics.min_column_value);
update_max(<span class="kw-2">&</span><span class="self">self</span>.descr, <span class="kw-2">&</span>max, <span class="kw-2">&mut </span><span class="self">self</span>.column_metrics.max_column_value);
- <span class="prelude-val">Some</span>(Statistics::new(
+ <span class="prelude-val">Some</span>(ValueStatistics::new(
<span class="prelude-val">Some</span>(min),
<span class="prelude-val">Some</span>(max),
<span class="prelude-val">None</span>,
@@ -3982,6 +4221,7 @@
<span class="comment">// update column and offset index
</span><span class="self">self</span>.update_column_offset_index(page_statistics.as_ref());
+ <span class="kw">let </span>page_statistics = page_statistics.map(Statistics::from);
<span class="kw">let </span>compressed_page = <span class="kw">match </span><span class="self">self</span>.props.writer_version() {
WriterVersion::PARQUET_1_0 => {
@@ -5835,7 +6075,7 @@
<span class="comment">// column index
</span><span class="macro">assert_eq!</span>(<span class="number">1</span>, column_index.null_pages.len());
<span class="macro">assert_eq!</span>(<span class="number">1</span>, offset_index.page_locations.len());
- <span class="macro">assert_eq!</span>(BoundaryOrder::UNORDERED, column_index.boundary_order);
+ <span class="macro">assert_eq!</span>(BoundaryOrder::ASCENDING, column_index.boundary_order);
<span class="macro">assert!</span>(!column_index.null_pages[<span class="number">0</span>]);
<span class="macro">assert_eq!</span>(<span class="number">0</span>, column_index.null_counts.as_ref().unwrap()[<span class="number">0</span>]);
@@ -5902,7 +6142,7 @@
<span class="comment">// column index
</span><span class="macro">assert_eq!</span>(<span class="number">1</span>, column_index.null_pages.len());
<span class="macro">assert_eq!</span>(<span class="number">1</span>, offset_index.page_locations.len());
- <span class="macro">assert_eq!</span>(BoundaryOrder::UNORDERED, column_index.boundary_order);
+ <span class="macro">assert_eq!</span>(BoundaryOrder::ASCENDING, column_index.boundary_order);
<span class="macro">assert!</span>(!column_index.null_pages[<span class="number">0</span>]);
<span class="macro">assert_eq!</span>(<span class="number">0</span>, column_index.null_counts.as_ref().unwrap()[<span class="number">0</span>]);
@@ -6157,6 +6397,158 @@
<span class="macro">assert!</span>(incremented.is_none())
}
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_boundary_order() -> <span class="prelude-ty">Result</span><()> {
+ <span class="kw">let </span>descr = Arc::new(get_test_column_descr::<Int32Type>(<span class="number">1</span>, <span class="number">0</span>));
+ <span class="comment">// min max both ascending
+ </span><span class="kw">let </span>column_close_result = write_multiple_pages::<Int32Type>(
+ <span class="kw-2">&</span>descr,
+ <span class="kw-2">&</span>[
+ <span class="kw-2">&</span>[<span class="prelude-val">Some</span>(-<span class="number">10</span>), <span class="prelude-val">Some</span>(<span class="number">10</span>)],
+ <span class="kw-2">&</span>[<span class="prelude-val">Some</span>(-<span class="number">5</span>), <span class="prelude-val">Some</span>(<span class="number">11</span>)],
+ <span class="kw-2">&</span>[<span class="prelude-val">None</span>],
+ <span class="kw-2">&</span>[<span class="prelude-val">Some</span>(-<span class="number">5</span>), <span class="prelude-val">Some</span>(<span class="number">11</span>)],
+ ],
+ )<span class="question-mark">?</span>;
+ <span class="kw">let </span>boundary_order = column_close_result.column_index.unwrap().boundary_order;
+ <span class="macro">assert_eq!</span>(boundary_order, BoundaryOrder::ASCENDING);
+
+ <span class="comment">// min max both descending
+ </span><span class="kw">let </span>column_close_result = write_multiple_pages::<Int32Type>(
+ <span class="kw-2">&</span>descr,
+ <span class="kw-2">&</span>[
+ <span class="kw-2">&</span>[<span class="prelude-val">Some</span>(<span class="number">10</span>), <span class="prelude-val">Some</span>(<span class="number">11</span>)],
+ <span class="kw-2">&</span>[<span class="prelude-val">Some</span>(<span class="number">5</span>), <span class="prelude-val">Some</span>(<span class="number">11</span>)],
+ <span class="kw-2">&</span>[<span class="prelude-val">None</span>],
+ <span class="kw-2">&</span>[<span class="prelude-val">Some</span>(-<span class="number">5</span>), <span class="prelude-val">Some</span>(<span class="number">0</span>)],
+ ],
+ )<span class="question-mark">?</span>;
+ <span class="kw">let </span>boundary_order = column_close_result.column_index.unwrap().boundary_order;
+ <span class="macro">assert_eq!</span>(boundary_order, BoundaryOrder::DESCENDING);
+
+ <span class="comment">// min max both equal
+ </span><span class="kw">let </span>column_close_result = write_multiple_pages::<Int32Type>(
+ <span class="kw-2">&</span>descr,
+ <span class="kw-2">&</span>[<span class="kw-2">&</span>[<span class="prelude-val">Some</span>(<span class="number">10</span>), <span class="prelude-val">Some</span>(<span class="number">11</span>)], <span class="kw-2">&</span>[<span class="prelude-val">None</span>], <span class="kw-2">&</span>[<span class="prelude-val">Some</span>(<span class="number">10</span>), <span class="prelude-val">Some</span>(<span class="number">11</span>)]],
+ )<span class="question-mark">?</span>;
+ <span class="kw">let </span>boundary_order = column_close_result.column_index.unwrap().boundary_order;
+ <span class="macro">assert_eq!</span>(boundary_order, BoundaryOrder::ASCENDING);
+
+ <span class="comment">// only nulls
+ </span><span class="kw">let </span>column_close_result =
+ write_multiple_pages::<Int32Type>(<span class="kw-2">&</span>descr, <span class="kw-2">&</span>[<span class="kw-2">&</span>[<span class="prelude-val">None</span>], <span class="kw-2">&</span>[<span class="prelude-val">None</span>], <span class="kw-2">&</span>[<span class="prelude-val">None</span>]])<span class="question-mark">?</span>;
+ <span class="kw">let </span>boundary_order = column_close_result.column_index.unwrap().boundary_order;
+ <span class="macro">assert_eq!</span>(boundary_order, BoundaryOrder::ASCENDING);
+
+ <span class="comment">// one page
+ </span><span class="kw">let </span>column_close_result =
+ write_multiple_pages::<Int32Type>(<span class="kw-2">&</span>descr, <span class="kw-2">&</span>[<span class="kw-2">&</span>[<span class="prelude-val">Some</span>(-<span class="number">10</span>), <span class="prelude-val">Some</span>(<span class="number">10</span>)]])<span class="question-mark">?</span>;
+ <span class="kw">let </span>boundary_order = column_close_result.column_index.unwrap().boundary_order;
+ <span class="macro">assert_eq!</span>(boundary_order, BoundaryOrder::ASCENDING);
+
+ <span class="comment">// one non-null page
+ </span><span class="kw">let </span>column_close_result =
+ write_multiple_pages::<Int32Type>(<span class="kw-2">&</span>descr, <span class="kw-2">&</span>[<span class="kw-2">&</span>[<span class="prelude-val">Some</span>(-<span class="number">10</span>), <span class="prelude-val">Some</span>(<span class="number">10</span>)], <span class="kw-2">&</span>[<span class="prelude-val">None</span>]])<span class="question-mark">?</span>;
+ <span class="kw">let </span>boundary_order = column_close_result.column_index.unwrap().boundary_order;
+ <span class="macro">assert_eq!</span>(boundary_order, BoundaryOrder::ASCENDING);
+
+ <span class="comment">// min max both unordered
+ </span><span class="kw">let </span>column_close_result = write_multiple_pages::<Int32Type>(
+ <span class="kw-2">&</span>descr,
+ <span class="kw-2">&</span>[
+ <span class="kw-2">&</span>[<span class="prelude-val">Some</span>(<span class="number">10</span>), <span class="prelude-val">Some</span>(<span class="number">11</span>)],
+ <span class="kw-2">&</span>[<span class="prelude-val">Some</span>(<span class="number">11</span>), <span class="prelude-val">Some</span>(<span class="number">16</span>)],
+ <span class="kw-2">&</span>[<span class="prelude-val">None</span>],
+ <span class="kw-2">&</span>[<span class="prelude-val">Some</span>(-<span class="number">5</span>), <span class="prelude-val">Some</span>(<span class="number">0</span>)],
+ ],
+ )<span class="question-mark">?</span>;
+ <span class="kw">let </span>boundary_order = column_close_result.column_index.unwrap().boundary_order;
+ <span class="macro">assert_eq!</span>(boundary_order, BoundaryOrder::UNORDERED);
+
+ <span class="comment">// min max both ordered in different orders
+ </span><span class="kw">let </span>column_close_result = write_multiple_pages::<Int32Type>(
+ <span class="kw-2">&</span>descr,
+ <span class="kw-2">&</span>[
+ <span class="kw-2">&</span>[<span class="prelude-val">Some</span>(<span class="number">1</span>), <span class="prelude-val">Some</span>(<span class="number">9</span>)],
+ <span class="kw-2">&</span>[<span class="prelude-val">Some</span>(<span class="number">2</span>), <span class="prelude-val">Some</span>(<span class="number">8</span>)],
+ <span class="kw-2">&</span>[<span class="prelude-val">None</span>],
+ <span class="kw-2">&</span>[<span class="prelude-val">Some</span>(<span class="number">3</span>), <span class="prelude-val">Some</span>(<span class="number">7</span>)],
+ ],
+ )<span class="question-mark">?</span>;
+ <span class="kw">let </span>boundary_order = column_close_result.column_index.unwrap().boundary_order;
+ <span class="macro">assert_eq!</span>(boundary_order, BoundaryOrder::UNORDERED);
+
+ <span class="prelude-val">Ok</span>(())
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_boundary_order_logical_type() -> <span class="prelude-ty">Result</span><()> {
+ <span class="comment">// ensure that logical types account for different sort order than underlying
+ // physical type representation
+ </span><span class="kw">let </span>f16_descr = Arc::new(get_test_float16_column_descr(<span class="number">1</span>, <span class="number">0</span>));
+ <span class="kw">let </span>fba_descr = {
+ <span class="kw">let </span>tpe = SchemaType::primitive_type_builder(
+ <span class="string">"col"</span>,
+ FixedLenByteArrayType::get_physical_type(),
+ )
+ .with_length(<span class="number">2</span>)
+ .build()<span class="question-mark">?</span>;
+ Arc::new(ColumnDescriptor::new(
+ Arc::new(tpe),
+ <span class="number">1</span>,
+ <span class="number">0</span>,
+ ColumnPath::from(<span class="string">"col"</span>),
+ ))
+ };
+
+ <span class="kw">let </span>values: <span class="kw-2">&</span>[<span class="kw-2">&</span>[<span class="prelude-ty">Option</span><FixedLenByteArray>]] = <span class="kw-2">&</span>[
+ <span class="kw-2">&</span>[<span class="prelude-val">Some</span>(FixedLenByteArray::from(ByteArray::from(f16::ONE)))],
+ <span class="kw-2">&</span>[<span class="prelude-val">Some</span>(FixedLenByteArray::from(ByteArray::from(f16::ZERO)))],
+ <span class="kw-2">&</span>[<span class="prelude-val">Some</span>(FixedLenByteArray::from(ByteArray::from(
+ f16::NEG_ZERO,
+ )))],
+ <span class="kw-2">&</span>[<span class="prelude-val">Some</span>(FixedLenByteArray::from(ByteArray::from(f16::NEG_ONE)))],
+ ];
+
+ <span class="comment">// f16 descending
+ </span><span class="kw">let </span>column_close_result =
+ write_multiple_pages::<FixedLenByteArrayType>(<span class="kw-2">&</span>f16_descr, values)<span class="question-mark">?</span>;
+ <span class="kw">let </span>boundary_order = column_close_result.column_index.unwrap().boundary_order;
+ <span class="macro">assert_eq!</span>(boundary_order, BoundaryOrder::DESCENDING);
+
+ <span class="comment">// same bytes, but fba unordered
+ </span><span class="kw">let </span>column_close_result =
+ write_multiple_pages::<FixedLenByteArrayType>(<span class="kw-2">&</span>fba_descr, values)<span class="question-mark">?</span>;
+ <span class="kw">let </span>boundary_order = column_close_result.column_index.unwrap().boundary_order;
+ <span class="macro">assert_eq!</span>(boundary_order, BoundaryOrder::UNORDERED);
+
+ <span class="prelude-val">Ok</span>(())
+ }
+
+ <span class="kw">fn </span>write_multiple_pages<T: DataType>(
+ column_descr: <span class="kw-2">&</span>Arc<ColumnDescriptor>,
+ pages: <span class="kw-2">&</span>[<span class="kw-2">&</span>[<span class="prelude-ty">Option</span><T::T>]],
+ ) -> <span class="prelude-ty">Result</span><ColumnCloseResult> {
+ <span class="kw">let </span>column_writer = get_column_writer(
+ column_descr.clone(),
+ Default::default(),
+ get_test_page_writer(),
+ );
+ <span class="kw">let </span><span class="kw-2">mut </span>writer = get_typed_column_writer::<T>(column_writer);
+
+ <span class="kw">for </span><span class="kw-2">&</span>page <span class="kw">in </span>pages {
+ <span class="kw">let </span>values = page.iter().filter_map(Clone::clone).collect::<Vec<<span class="kw">_</span>>>();
+ <span class="kw">let </span>def_levels = page
+ .iter()
+ .map(|maybe_value| <span class="kw">if </span>maybe_value.is_some() { <span class="number">1 </span>} <span class="kw">else </span>{ <span class="number">0 </span>})
+ .collect::<Vec<<span class="kw">_</span>>>();
+ writer.write_batch(<span class="kw-2">&</span>values, <span class="prelude-val">Some</span>(<span class="kw-2">&</span>def_levels), <span class="prelude-val">None</span>)<span class="question-mark">?</span>;
+ writer.flush_data_pages()<span class="question-mark">?</span>;
+ }
+
+ writer.close()
+ }
+
<span class="doccomment">/// Performs write-read roundtrip with randomly generated values and levels.
/// `max_size` is maximum number of values or levels (if `max_def_level` > 0) to write
/// for a column.
@@ -6463,8 +6855,7 @@
) -> ValueStatistics<FixedLenByteArray> {
<span class="kw">let </span>page_writer = get_test_page_writer();
<span class="kw">let </span>props = Default::default();
- <span class="kw">let </span><span class="kw-2">mut </span>writer =
- get_test_float16_column_writer::<FixedLenByteArrayType>(page_writer, <span class="number">0</span>, <span class="number">0</span>, props);
+ <span class="kw">let </span><span class="kw-2">mut </span>writer = get_test_float16_column_writer(page_writer, <span class="number">0</span>, <span class="number">0</span>, props);
writer.write_batch(values, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>).unwrap();
<span class="kw">let </span>metadata = writer.close().unwrap().metadata;
@@ -6475,30 +6866,25 @@
}
}
- <span class="kw">fn </span>get_test_float16_column_writer<T: DataType>(
+ <span class="kw">fn </span>get_test_float16_column_writer(
page_writer: Box<<span class="kw">dyn </span>PageWriter>,
max_def_level: i16,
max_rep_level: i16,
props: WriterPropertiesPtr,
- ) -> ColumnWriterImpl<<span class="lifetime">'static</span>, T> {
- <span class="kw">let </span>descr = Arc::new(get_test_float16_column_descr::<T>(
- max_def_level,
- max_rep_level,
- ));
+ ) -> ColumnWriterImpl<<span class="lifetime">'static</span>, FixedLenByteArrayType> {
+ <span class="kw">let </span>descr = Arc::new(get_test_float16_column_descr(max_def_level, max_rep_level));
<span class="kw">let </span>column_writer = get_column_writer(descr, props, page_writer);
- get_typed_column_writer::<T>(column_writer)
+ get_typed_column_writer::<FixedLenByteArrayType>(column_writer)
}
- <span class="kw">fn </span>get_test_float16_column_descr<T: DataType>(
- max_def_level: i16,
- max_rep_level: i16,
- ) -> ColumnDescriptor {
+ <span class="kw">fn </span>get_test_float16_column_descr(max_def_level: i16, max_rep_level: i16) -> ColumnDescriptor {
<span class="kw">let </span>path = ColumnPath::from(<span class="string">"col"</span>);
- <span class="kw">let </span>tpe = SchemaType::primitive_type_builder(<span class="string">"col"</span>, T::get_physical_type())
- .with_length(<span class="number">2</span>)
- .with_logical_type(<span class="prelude-val">Some</span>(LogicalType::Float16))
- .build()
- .unwrap();
+ <span class="kw">let </span>tpe =
+ SchemaType::primitive_type_builder(<span class="string">"col"</span>, FixedLenByteArrayType::get_physical_type())
+ .with_length(<span class="number">2</span>)
+ .with_logical_type(<span class="prelude-val">Some</span>(LogicalType::Float16))
+ .build()
+ .unwrap();
ColumnDescriptor::new(Arc::new(tpe), max_def_level, max_rep_level, path)
}
diff --git a/src/parquet/file/metadata.rs.html b/src/parquet/file/metadata.rs.html
index c4eb6fa9e7..c0af5c5620 100644
--- a/src/parquet/file/metadata.rs.html
+++ b/src/parquet/file/metadata.rs.html
@@ -1139,6 +1139,9 @@
<a href="#1139" id="1139">1139</a>
<a href="#1140" id="1140">1140</a>
<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</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
@@ -2026,9 +2029,8 @@
null_pages: Vec<bool>,
min_values: Vec<Vec<u8>>,
max_values: Vec<Vec<u8>>,
- <span class="comment">// TODO: calc the order for all pages in this column
- </span>boundary_order: BoundaryOrder,
null_counts: Vec<i64>,
+ boundary_order: BoundaryOrder,
<span class="comment">// If one page can't get build index, need to ignore all index in this column
</span>valid: bool,
}
@@ -2045,8 +2047,8 @@
null_pages: Vec::new(),
min_values: Vec::new(),
max_values: Vec::new(),
- boundary_order: BoundaryOrder::UNORDERED,
null_counts: Vec::new(),
+ boundary_order: BoundaryOrder::UNORDERED,
valid: <span class="bool-val">true</span>,
}
}
@@ -2064,6 +2066,10 @@
<span class="self">self</span>.null_counts.push(null_count);
}
+ <span class="kw">pub fn </span>set_boundary_order(<span class="kw-2">&mut </span><span class="self">self</span>, boundary_order: BoundaryOrder) {
+ <span class="self">self</span>.boundary_order = boundary_order;
+ }
+
<span class="kw">pub fn </span>to_invalid(<span class="kw-2">&mut </span><span class="self">self</span>) {
<span class="self">self</span>.valid = <span class="bool-val">false</span>;
}
diff --git a/type.impl/parquet/column/writer/struct.GenericColumnWriter.js b/type.impl/parquet/column/writer/struct.GenericColumnWriter.js
index 60a5623a48..8d39dca338 100644
--- a/type.impl/parquet/column/writer/struct.GenericColumnWriter.js
+++ b/type.impl/parquet/column/writer/struct.GenericColumnWriter.js
@@ -1,3 +1,3 @@
(function() {var type_impls = {
-"parquet":[["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-GenericColumnWriter%3C'a,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"src/parquet/column/writer/mod.rs.html#233-1021\">source</a><a href=\"#impl-GenericColumnWriter%3C'a,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl<'a, E: <a class=\"trait\" href=\"parquet/column/writer/encoder/trait.ColumnValueEncoder.html\" title=\"trait parquet::column::writer::encoder::ColumnValue [...]
+"parquet":[["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-GenericColumnWriter%3C'a,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"src/parquet/column/writer/mod.rs.html#240-1068\">source</a><a href=\"#impl-GenericColumnWriter%3C'a,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl<'a, E: <a class=\"trait\" href=\"parquet/column/writer/encoder/trait.ColumnValueEncoder.html\" title=\"trait parquet::column::writer::encoder::ColumnValue [...]
};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})()
\ No newline at end of file