MCPcopy Create free account
hub / github.com/apache/datafusion / get_reverse_expr

Method get_reverse_expr

datafusion/physical-expr/src/window/aggregate.rs:184–213  ·  view source on GitHub ↗
(&self)

Source from the content-addressed store, hash-verified

182 }
183
184 fn get_reverse_expr(&self) -> Option<Arc<dyn WindowExpr>> {
185 self.aggregate.reverse_expr().map(|reverse_expr| {
186 let reverse_window_frame = self.window_frame.reverse();
187 if reverse_window_frame.is_ever_expanding() {
188 Arc::new(PlainAggregateWindowExpr::new(
189 Arc::new(reverse_expr),
190 &self.partition_by.clone(),
191 &self
192 .order_by
193 .iter()
194 .map(|e| e.reverse())
195 .collect::<Vec<_>>(),
196 Arc::new(self.window_frame.reverse()),
197 self.filter.clone(),
198 )) as _
199 } else {
200 Arc::new(SlidingAggregateWindowExpr::new(
201 Arc::new(reverse_expr),
202 &self.partition_by.clone(),
203 &self
204 .order_by
205 .iter()
206 .map(|e| e.reverse())
207 .collect::<Vec<_>>(),
208 Arc::new(self.window_frame.reverse()),
209 self.filter.clone(),
210 )) as _
211 }
212 })
213 }
214
215 fn uses_bounded_memory(&self) -> bool {
216 !self.window_frame.end_bound.is_unbounded()

Callers

nothing calls this directly

Calls 7

newFunction · 0.85
is_ever_expandingMethod · 0.80
mapMethod · 0.45
reverse_exprMethod · 0.45
reverseMethod · 0.45
cloneMethod · 0.45
iterMethod · 0.45

Tested by

no test coverage detected