Determine the given objects's monotonicity. This recursively traverses the expressions of all views depended on by the given object. If this becomes a performance problem, we could add the monotonicity information of views into the catalog instead. Note that materialized views are never monotonic, no matter their definition, because the self-correcting persist_sink may insert retractions to corr
(&self, id: GlobalId, features: &OptimizerFeatures)
| 478 | /// self-correcting persist_sink may insert retractions to correct the contents of its output |
| 479 | /// collection. |
| 480 | fn monotonic_object(&self, id: GlobalId, features: &OptimizerFeatures) -> bool { |
| 481 | self.monotonic_object_inner(id, &mut BTreeMap::new(), features) |
| 482 | .unwrap_or_else(|e| { |
| 483 | warn!(%id, "error inspecting object for monotonicity: {e}"); |
| 484 | false |
| 485 | }) |
| 486 | } |
| 487 | |
| 488 | fn monotonic_object_inner( |
| 489 | &self, |
no test coverage detected