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/predicates/mod.rs
7889 views
1
mod column_expr;
2
mod skip_batches;
3
4
use std::borrow::Cow;
5
6
pub use column_expr::*;
7
use polars_core::schema::Schema;
8
use polars_utils::arena::{Arena, Node};
9
use polars_utils::pl_str::PlSmallStr;
10
pub use skip_batches::*;
11
12
use super::evaluate::{constant_evaluate, into_column};
13
use super::{AExpr, LiteralValue};
14
15
#[allow(clippy::type_complexity)]
16
fn get_binary_expr_col_and_lv<'a>(
17
left: Node,
18
right: Node,
19
expr_arena: &'a Arena<AExpr>,
20
schema: &Schema,
21
) -> Option<(
22
(&'a PlSmallStr, Node),
23
(Option<Cow<'a, LiteralValue>>, Node),
24
)> {
25
match (
26
into_column(left, expr_arena),
27
into_column(right, expr_arena),
28
constant_evaluate(left, expr_arena, schema, 0),
29
constant_evaluate(right, expr_arena, schema, 0),
30
) {
31
(Some(col), _, _, Some(lv)) => Some(((col, left), (lv, right))),
32
(_, Some(col), Some(lv), _) => Some(((col, right), (lv, left))),
33
_ => None,
34
}
35
}
36
37