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.
- 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.Column
is trivially pushdownable;Literal
andCallUnmaterializable
are not, since their results don’t depend on the range of possible values in any column. - 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.
- Unique identifier for each part of a whole source. Kafka -> partition None -> sources that have no notion of partitioning (e.g file sources)
- 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.
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
- 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
.