We say that a function is "pushdownable" for a particular argument if `ColumnSpecs` can determine the spec of the function's output given the input spec for that argument. (In practice, this is true when either the function is monotone in that argument or it's been special-cased in the interpreter.)
(self, pushdownable: bool)
| 1156 | /// that argument. (In practice, this is true when either the function is monotone in that argument |
| 1157 | /// or it's been special-cased in the interpreter.) |
| 1158 | fn apply_fn(self, pushdownable: bool) -> Self { |
| 1159 | match self { |
| 1160 | TraceSummary::Constant => TraceSummary::Constant, |
| 1161 | TraceSummary::Dynamic => match pushdownable { |
| 1162 | true => TraceSummary::Dynamic, |
| 1163 | false => TraceSummary::Unknown, |
| 1164 | }, |
| 1165 | TraceSummary::Unknown => TraceSummary::Unknown, |
| 1166 | } |
| 1167 | } |
| 1168 | |
| 1169 | /// We say that an expression is "pushdownable" if it's either constant or dynamic. |
| 1170 | pub fn pushdownable(self) -> bool { |