Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/crates/polars-plan/src/plans/aexpr/evaluate.rs
8422 views
1
use std::borrow::Cow;
2
3
use polars_core::schema::Schema;
4
use polars_utils::arena::{Arena, Node};
5
use polars_utils::pl_str::PlSmallStr;
6
7
use super::{AExpr, LiteralValue, aexpr_to_leaf_names_iter};
8
9
pub fn constant_evaluate<'a>(
10
e: Node,
11
expr_arena: &'a Arena<AExpr>,
12
_schema: &Schema,
13
_depth: usize,
14
) -> Option<Option<Cow<'a, LiteralValue>>> {
15
match expr_arena.get(e) {
16
AExpr::Literal(lv) => Some(Some(Cow::Borrowed(lv))),
17
_ => {
18
if aexpr_to_leaf_names_iter(e, expr_arena).next().is_none() {
19
Some(None)
20
} else {
21
None
22
}
23
},
24
}
25
}
26
27
pub fn into_column(e: Node, expr_arena: &Arena<AExpr>) -> Option<&PlSmallStr> {
28
match expr_arena.get(e) {
29
AExpr::Column(c) => Some(c),
30
_ => None,
31
}
32
}
33
34