Path: blob/main/crates/polars-parquet/src/arrow/write/binview/nested.rs
6940 views
use arrow::array::{Array, BinaryViewArray};1use polars_error::PolarsResult;23use super::super::{WriteOptions, nested, utils};4use super::basic::{build_statistics, encode_plain};5use crate::arrow::write::Nested;6use crate::parquet::encoding::Encoding;7use crate::parquet::page::DataPage;8use crate::parquet::schema::types::PrimitiveType;9use crate::read::schema::is_nullable;10use crate::write::EncodeNullability;1112pub fn array_to_page(13array: &BinaryViewArray,14options: WriteOptions,15type_: PrimitiveType,16nested: &[Nested],17) -> PolarsResult<DataPage> {18let is_optional = is_nullable(&type_.field_info);19let encode_options = EncodeNullability::new(is_optional);2021let mut buffer = vec![];22let (repetition_levels_byte_length, definition_levels_byte_length) =23nested::write_rep_and_def(options.version, nested, &mut buffer)?;2425encode_plain(array, encode_options, &mut buffer);2627let statistics = if options.has_statistics() {28Some(build_statistics(array, type_.clone(), &options.statistics))29} else {30None31};3233utils::build_plain_page(34buffer,35nested::num_values(nested),36nested[0].len(),37array.null_count(),38repetition_levels_byte_length,39definition_levels_byte_length,40statistics,41type_,42options,43Encoding::Plain,44)45}464748