Core expression language.
- Utility functions to transform parts of a single
MirRelationExprinto canonical form.
EXPLAINsupport for structures defined in this crate.
- A set of virtual nodes that are used to recover some high-level concepts that are desugared to non-trival terms in some IRs.
- Visitor support for recursive data types.
- Describes an aggregation expression.
- Specification for an ordering by a column.
- An interpreter that:
- Filter characteristics that are used for ordering join inputs. This can be created for a
Vec<MirScalarExpr>, which represents an AND of predicates.
- Characteristics of a join order candidate collection.
- Any column in a join expression exists in two contexts:
- Maximum iterations for a LetRec.
- The identifier for a local component of a dataflow.
- A compound operator that can be applied row-by-row.
- Predicates partitioned into temporal and non-temporal.
- Naive implementation of OneByOneAggr, suitable for stuff like const folding, but too slow for rendering. This relies only on infrastructure available in
mz-expr. It simply saves all the given input, and calls the given AggregateFunc’s
evalmethod when asked about the current aggregate. (For Accumulable and Hierarchical aggregations, the rendering has more efficient implementations, but for Basic aggregations even the rendering uses this naive implementation.)
MirRelationExprthat claims to have been optimized, e.g., by an
- An approximation of the set of values an expression might have, including whether or not it might be null or an error value. This is generally an overapproximation, in the sense that ResultSpec::may_contain may return true even if the argument is not included in the set. (However, it should never return false when the value is included!)
- Instructions for finishing the result of a query.
- A wrapper type which indicates it is safe to simply evaluate all expressions.
- Unique identifier for an instantiation of a source.
- An interpreter that returns whether or not a particular expression is “pushdownable”. Broadly speaking, an expression is pushdownable if the result of evaluating the expression depends on the range of possible column values in a way that
ColumnSpecsis able to reason about.
- Describe a window frame, e.g.
RANGE UNBOUNDED PRECEDINGor
ROWS BETWEEN 5 PRECEDING AND CURRENT ROW.
- For a global Get, this indicates whether we are going to read from Persist or from an index. (See comment in MirRelationExpr::Get.)
- An opaque identifier for a dataflow component. In other words, identifies the target of a
- Describe a join implementation in dataflow.
- Identify whether the given aggregate function is Lag or Lead, since they share implementations.
- An abstract syntax tree which defines a collection.
- A summary type for the Trace interpreter.
- Specifies WindowFrame’s
- Describe how frame bounds are interpreted
- A recursion limit to be used for stack-safe traversals of
- A trait for types that describe how to build a collection.
- An implementation of an aggregation where we can send in the input elements one-by-one, and can also ask the current aggregate at any moment. (This just delegates to other aggregation evaluation approaches.)
order. If that doesn’t produce a strict ordering, call
- Given the permutations (see
dataflow::plan::AvailableCollections) corresponding to two collections with the same key arity, computes the permutation for the result of joining them.
- Recursively memoize parts of
expr, storing those parts in
- Augment non-nullability of columns, by observing either
- Return the map associating columns in the logical, unthinned representation of a collection to columns in the thinned representation of the arrangement corresponding to