Path: blob/main/crates/polars-plan/src/plans/conversion/dsl_to_ir/utils.rs
7889 views
use super::scans::SourcesToFileInfo;1use super::*;23pub(super) struct DslConversionContext<'a> {4pub(super) expr_arena: &'a mut Arena<AExpr>,5pub(super) lp_arena: &'a mut Arena<IR>,6pub(super) conversion_optimizer: ConversionOptimizer,7pub(super) opt_flags: &'a mut OptFlags,8pub(super) nodes_scratch: &'a mut UnitVec<Node>,9pub(super) cache_file_info: SourcesToFileInfo,10pub(super) pushdown_maintain_errors: bool,11pub(super) verbose: bool,12pub(super) seen_caches: PlHashMap<UniqueId, Node>,13}1415pub(super) fn expand_expressions(16input: Node,17exprs: Vec<Expr>,18lp_arena: &Arena<IR>,19expr_arena: &mut Arena<AExpr>,20opt_flags: &mut OptFlags,21) -> PolarsResult<Vec<ExprIR>> {22let schema = lp_arena.get(input).schema(lp_arena);23let exprs = rewrite_projections(exprs, &Default::default(), &schema, opt_flags)?;24to_expr_irs(25exprs,26&mut ExprToIRContext::new_with_opt_eager(expr_arena, &schema, opt_flags),27)28}2930pub(super) fn empty_df() -> IR {31IR::DataFrameScan {32df: Arc::new(Default::default()),33schema: Arc::new(Default::default()),34output_schema: None,35}36}3738pub(super) fn validate_expression(39node: Node,40expr_arena: &Arena<AExpr>,41input_schema: &Schema,42operation_name: &str,43) -> PolarsResult<()> {44let iter = aexpr_to_leaf_names_iter(node, expr_arena);45validate_columns_in_input(iter, input_schema, operation_name)46}4748pub(super) fn validate_expressions<N: Into<Node>, I: IntoIterator<Item = N>>(49nodes: I,50expr_arena: &Arena<AExpr>,51input_schema: &Schema,52operation_name: &str,53) -> PolarsResult<()> {54let nodes = nodes.into_iter();5556for node in nodes {57validate_expression(node.into(), expr_arena, input_schema, operation_name)?58}59Ok(())60}616263