diff --git a/crates/polars-plan/src/dsl/meta.rs b/crates/polars-plan/src/dsl/meta.rs index 940a0689c6f6..19ae650f1e52 100644 --- a/crates/polars-plan/src/dsl/meta.rs +++ b/crates/polars-plan/src/dsl/meta.rs @@ -3,7 +3,7 @@ use std::ops::BitAnd; use super::*; use crate::logical_plan::alp::tree_format::TreeFmtVisitor; -use crate::logical_plan::expr_expansion::is_regex_projection; +use crate::logical_plan::conversion::is_regex_projection; use crate::logical_plan::visitor::{AexprNode, TreeWalker}; /// Specialized expressions for Categorical dtypes. diff --git a/crates/polars-plan/src/dsl/struct_.rs b/crates/polars-plan/src/dsl/struct_.rs index 9f41c74f8c96..33bfe4288a54 100644 --- a/crates/polars-plan/src/dsl/struct_.rs +++ b/crates/polars-plan/src/dsl/struct_.rs @@ -1,5 +1,5 @@ use super::*; -use crate::logical_plan::expr_expansion::is_regex_projection; +use crate::logical_plan::conversion::is_regex_projection; /// Specialized expressions for Struct dtypes. pub struct StructNameSpace(pub(crate) Expr); diff --git a/crates/polars-plan/src/logical_plan/builder_dsl.rs b/crates/polars-plan/src/logical_plan/builder_dsl.rs index 8087db6765b6..a64356285839 100644 --- a/crates/polars-plan/src/logical_plan/builder_dsl.rs +++ b/crates/polars-plan/src/logical_plan/builder_dsl.rs @@ -12,20 +12,10 @@ use polars_io::HiveOptions; use polars_io::RowIndex; use crate::constants::UNLIMITED_CACHE; -use crate::logical_plan::expr_expansion::rewrite_projections; #[cfg(feature = "python")] use crate::prelude::python_udf::PythonFunction; use crate::prelude::*; -pub(crate) fn prepare_projection( - exprs: Vec, - schema: &Schema, -) -> PolarsResult<(Vec, Schema)> { - let exprs = rewrite_projections(exprs, schema, &[])?; - let schema = expressions_to_schema(&exprs, schema, Context::Default)?; - Ok((exprs, schema)) -} - pub struct DslBuilder(pub DslPlan); impl From for DslBuilder { diff --git a/crates/polars-plan/src/logical_plan/conversion/dsl_to_ir.rs b/crates/polars-plan/src/logical_plan/conversion/dsl_to_ir.rs index 72ce0d2b0f56..86754f11d02a 100644 --- a/crates/polars-plan/src/logical_plan/conversion/dsl_to_ir.rs +++ b/crates/polars-plan/src/logical_plan/conversion/dsl_to_ir.rs @@ -1,6 +1,7 @@ +use expr_expansion::{is_regex_projection, rewrite_projections}; + use super::stack_opt::ConversionOpt; use super::*; -use crate::logical_plan::expr_expansion::{is_regex_projection, rewrite_projections}; use crate::logical_plan::projection_expr::ProjectionExprs; fn expand_expressions( diff --git a/crates/polars-plan/src/logical_plan/expr_expansion.rs b/crates/polars-plan/src/logical_plan/conversion/expr_expansion.rs similarity index 98% rename from crates/polars-plan/src/logical_plan/expr_expansion.rs rename to crates/polars-plan/src/logical_plan/conversion/expr_expansion.rs index 61cc9f1b5317..19894130c605 100644 --- a/crates/polars-plan/src/logical_plan/expr_expansion.rs +++ b/crates/polars-plan/src/logical_plan/conversion/expr_expansion.rs @@ -1,6 +1,15 @@ //! this contains code used for rewriting projections, expanding wildcards, regex selection etc. use super::*; +pub(crate) fn prepare_projection( + exprs: Vec, + schema: &Schema, +) -> PolarsResult<(Vec, Schema)> { + let exprs = rewrite_projections(exprs, schema, &[])?; + let schema = expressions_to_schema(&exprs, schema, Context::Default)?; + Ok((exprs, schema)) +} + /// This replaces the wildcard Expr with a Column Expr. It also removes the Exclude Expr from the /// expression chain. pub(super) fn replace_wildcard_with_column(expr: Expr, column_name: Arc) -> Expr { diff --git a/crates/polars-plan/src/logical_plan/conversion/mod.rs b/crates/polars-plan/src/logical_plan/conversion/mod.rs index 36a2021b5f37..ce4ac9e55a4a 100644 --- a/crates/polars-plan/src/logical_plan/conversion/mod.rs +++ b/crates/polars-plan/src/logical_plan/conversion/mod.rs @@ -1,5 +1,6 @@ mod convert_utils; mod dsl_to_ir; +mod expr_expansion; mod expr_to_ir; mod ir_to_dsl; #[cfg(any(feature = "ipc", feature = "parquet", feature = "csv"))] @@ -16,6 +17,8 @@ use polars_utils::vec::ConvertVec; use recursive::recursive; pub(crate) mod type_coercion; +pub(crate) use expr_expansion::{is_regex_projection, prepare_projection, rewrite_projections}; + use crate::constants::get_len_name; use crate::prelude::*; diff --git a/crates/polars-plan/src/logical_plan/functions/dsl.rs b/crates/polars-plan/src/logical_plan/functions/dsl.rs index 849555d28003..50e2a8c649f5 100644 --- a/crates/polars-plan/src/logical_plan/functions/dsl.rs +++ b/crates/polars-plan/src/logical_plan/functions/dsl.rs @@ -1,5 +1,5 @@ use super::*; -use crate::logical_plan::expr_expansion::rewrite_projections; +use crate::logical_plan::conversion::rewrite_projections; // Except for Opaque functions, this only has the DSL name of the function. #[derive(Clone)] diff --git a/crates/polars-plan/src/logical_plan/mod.rs b/crates/polars-plan/src/logical_plan/mod.rs index 6d83c1bf139d..a52115fcd01d 100644 --- a/crates/polars-plan/src/logical_plan/mod.rs +++ b/crates/polars-plan/src/logical_plan/mod.rs @@ -6,9 +6,7 @@ use std::sync::Arc; use polars_core::prelude::*; use recursive::recursive; -use crate::logical_plan::DslPlan::DataFrameScan; use crate::prelude::*; -use crate::utils::{expr_to_leaf_column_names, get_single_leaf}; pub(crate) mod aexpr; pub(crate) mod alp; @@ -20,7 +18,6 @@ mod builder_ir; pub(crate) mod conversion; #[cfg(feature = "debugging")] pub(crate) mod debug; -pub(crate) mod expr_expansion; pub mod expr_ir; mod file_scan; mod format; @@ -206,7 +203,7 @@ impl Default for DslPlan { fn default() -> Self { let df = DataFrame::new::(vec![]).unwrap(); let schema = df.schema(); - DataFrameScan { + DslPlan::DataFrameScan { df: Arc::new(df), schema: Arc::new(schema), output_schema: None,