Path: blob/main/crates/polars-mem-engine/src/executors/projection_simple.rs
6940 views
use super::*;12pub struct ProjectionSimple {3pub(crate) input: Box<dyn Executor>,4pub(crate) columns: SchemaRef,5}67impl ProjectionSimple {8fn execute_impl(&mut self, df: DataFrame, columns: &[PlSmallStr]) -> PolarsResult<DataFrame> {9// No duplicate check as that an invariant of this node.10df._select_impl_unchecked(columns.as_ref())11}12}1314impl Executor for ProjectionSimple {15fn execute(&mut self, state: &mut ExecutionState) -> PolarsResult<DataFrame> {16state.should_stop()?;17let columns = self.columns.iter_names_cloned().collect::<Vec<_>>();1819let profile_name = if state.has_node_timer() {20let name = comma_delimited("simple-projection".to_string(), columns.as_slice());21Cow::Owned(name)22} else {23Cow::Borrowed("")24};25let df = self.input.execute(state)?;2627if state.has_node_timer() {28state.record(|| self.execute_impl(df, columns.as_slice()), profile_name)29} else {30self.execute_impl(df, columns.as_slice())31}32}33}343536