Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/crates/polars-parquet/src/parquet/write/indexes/write.rs
6940 views
1
use std::io::Write;
2
3
#[cfg(feature = "async")]
4
use futures::AsyncWrite;
5
use polars_parquet_format::thrift::protocol::TCompactOutputProtocol;
6
#[cfg(feature = "async")]
7
use polars_parquet_format::thrift::protocol::TCompactOutputStreamProtocol;
8
9
use super::serialize::{serialize_column_index, serialize_offset_index};
10
use crate::parquet::error::ParquetResult;
11
use crate::parquet::write::page::PageWriteSpec;
12
13
pub fn write_column_index<W: Write>(writer: &mut W, pages: &[PageWriteSpec]) -> ParquetResult<u64> {
14
let index = serialize_column_index(pages)?;
15
let mut protocol = TCompactOutputProtocol::new(writer);
16
Ok(index.write_to_out_protocol(&mut protocol)? as u64)
17
}
18
19
#[cfg(feature = "async")]
20
#[cfg_attr(docsrs, doc(cfg(feature = "async")))]
21
pub async fn write_column_index_async<W: AsyncWrite + Unpin + Send>(
22
writer: &mut W,
23
pages: &[PageWriteSpec],
24
) -> ParquetResult<u64> {
25
let index = serialize_column_index(pages)?;
26
let mut protocol = TCompactOutputStreamProtocol::new(writer);
27
Ok(index.write_to_out_stream_protocol(&mut protocol).await? as u64)
28
}
29
30
pub fn write_offset_index<W: Write>(writer: &mut W, pages: &[PageWriteSpec]) -> ParquetResult<u64> {
31
let index = serialize_offset_index(pages)?;
32
let mut protocol = TCompactOutputProtocol::new(&mut *writer);
33
Ok(index.write_to_out_protocol(&mut protocol)? as u64)
34
}
35
36
#[cfg(feature = "async")]
37
#[cfg_attr(docsrs, doc(cfg(feature = "async")))]
38
pub async fn write_offset_index_async<W: AsyncWrite + Unpin + Send>(
39
writer: &mut W,
40
pages: &[PageWriteSpec],
41
) -> ParquetResult<u64> {
42
let index = serialize_offset_index(pages)?;
43
let mut protocol = TCompactOutputStreamProtocol::new(&mut *writer);
44
Ok(index.write_to_out_stream_protocol(&mut protocol).await? as u64)
45
}
46
47