Expand description
Core expression language.
Modules§
- Utility functions to transform parts of a single
MirRelationExpr
into canonical form. EXPLAIN
support for structures defined in this crate.- id 🔒
- linear 🔒
- relation 🔒
- scalar 🔒
- 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.
Structs§
- 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’seval
method 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.) - A
MirRelationExpr
that claims to have been optimized, e.g., by antransform::Optimizer
. - 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
ColumnSpecs
is able to reason about. - Describe a window frame, e.g.
RANGE UNBOUNDED PRECEDING
orROWS BETWEEN 5 PRECEDING AND CURRENT ROW
.
Enums§
- 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
MirRelationExpr::Get
. - 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.
- Describe how frame bounds are interpreted
Constants§
- A recursion limit to be used for stack-safe traversals of
MirRelationExpr
trees.
Traits§
- 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.)
Functions§
- Compare
left
andright
usingorder
. If that doesn’t produce a strict ordering, calltiebreaker
. - Given the permutations (see
permutation_for_arrangement
and (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 inmemoized_parts
. - Augment non-nullability of columns, by observing either
- Assuming datums is a List, sort them by the 2nd through Nth elements corresponding to order_by, then return the 1st element.
- Return the map associating columns in the logical, unthinned representation of a collection to columns in the thinned representation of the arrangement corresponding to
key
.