Module mz_transform::non_null_requirements
source · Expand description
Push non-null requirements toward sources.
This analysis derives NonNull requirements on the arguments to predicates. These requirements exist because most functions with Null arguments are themselves Null, and a predicate that evaluates to Null will not pass.
These requirements are not here introduced as constraints, but rather flow to sources of data and restrict any constant collections to those rows that satisfy the constraint. The main consequence is when Null values are added in support of outer-joins and subqueries, we can occasionally remove that branch when we observe that Null values would be subjected to predicates.
This analysis relies on a careful understanding of ScalarExpr
and the
semantics of various functions, some of which may be non-Null even with
Null arguments.
Structs§
- Push non-null requirements toward sources.