Path: blob/main/crates/polars-plan/src/dsl/file_scan/default_values.rs
6940 views
use std::sync::Arc;12use polars_core::prelude::{Column, PlIndexMap};34/// Default field values when they are missing from the data file.5#[derive(Debug, Clone, Eq, Hash, PartialEq)]6#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]7#[cfg_attr(feature = "dsl-schema", derive(schemars::JsonSchema))]8pub enum DefaultFieldValues {9/// This is to follow the spec for missing columns:10/// * Return the value from partition metadata if an Identity Transform exists for the field11///12/// Note: This is not the Iceberg V3 `initial-default`.13Iceberg(Arc<IcebergIdentityTransformedPartitionFields>),14}1516#[derive(Debug, Clone, PartialEq)]17#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]18#[cfg_attr(feature = "dsl-schema", derive(schemars::JsonSchema))]19pub struct IcebergIdentityTransformedPartitionFields(pub PlIndexMap<u32, Result<Column, String>>);2021impl Eq for IcebergIdentityTransformedPartitionFields {}2223impl std::hash::Hash for IcebergIdentityTransformedPartitionFields {24fn hash<H: std::hash::Hasher>(&self, state: &mut H) {25for key in self.keys() {26key.hash(state);27}28}29}3031impl std::ops::Deref for IcebergIdentityTransformedPartitionFields {32type Target = PlIndexMap<u32, Result<Column, String>>;3334fn deref(&self) -> &Self::Target {35&self.036}37}3839impl std::ops::DerefMut for IcebergIdentityTransformedPartitionFields {40fn deref_mut(&mut self) -> &mut Self::Target {41&mut self.042}43}444546