(&self)
| 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() |
nothing calls this directly
no test coverage detected