Path: blob/main/crates/polars-stream/src/nodes/io_sinks/components/partition_state.rs
8450 views
use std::sync::Arc;12use polars_core::frame::DataFrame;34use crate::nodes::io_sinks::components::file_sink::FileSinkTaskData;5use crate::nodes::io_sinks::components::size::RowCountAndSize;67#[derive(Default)]8pub struct PartitionState {9pub buffered_rows: DataFrame,10pub total_size: RowCountAndSize,11/// Must always be <= `total_size`.12pub sinked_size: RowCountAndSize,13pub num_sink_opens: usize,14pub keys_df: Arc<DataFrame>,15pub file_sink_task_data: Option<FileSinkTaskData>,16}1718impl PartitionState {19pub fn buffered_size(&self) -> RowCountAndSize {20let num_rows = self21.total_size22.num_rows23.checked_sub(self.sinked_size.num_rows)24.unwrap();2526if num_rows == 0 {27return RowCountAndSize::default();28}2930assert_eq!(31usize::try_from(num_rows).unwrap(),32self.buffered_rows.height()33);3435RowCountAndSize {36num_rows,37num_bytes: self38.total_size39.num_bytes40.saturating_sub(self.sinked_size.num_bytes),41}42}43}444546