Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/crates/polars-mem-engine/src/executors/unique.rs
6940 views
1
use super::*;
2
3
pub(crate) struct UniqueExec {
4
pub(crate) input: Box<dyn Executor>,
5
pub(crate) options: DistinctOptionsIR,
6
}
7
8
impl Executor for UniqueExec {
9
fn execute(&mut self, state: &mut ExecutionState) -> PolarsResult<DataFrame> {
10
state.should_stop()?;
11
#[cfg(debug_assertions)]
12
{
13
if state.verbose() {
14
eprintln!("run UniqueExec")
15
}
16
}
17
let df = self.input.execute(state)?;
18
let subset = self
19
.options
20
.subset
21
.as_ref()
22
.map(|v| v.iter().cloned().collect::<Vec<_>>());
23
let keep = self.options.keep_strategy;
24
25
state.record(
26
|| {
27
if df.is_empty() {
28
return Ok(df);
29
}
30
31
df.unique_impl(
32
self.options.maintain_order,
33
subset,
34
keep,
35
self.options.slice,
36
)
37
},
38
Cow::Borrowed("unique()"),
39
)
40
}
41
}
42
43