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
6940 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<'a>(
28
e: Node,
29
expr_arena: &'a Arena<AExpr>,
30
_schema: &Schema,
31
_depth: usize,
32
) -> Option<&'a PlSmallStr> {
33
match expr_arena.get(e) {
34
AExpr::Column(c) => Some(c),
35
_ => None,
36
}
37
}
38
39