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