Crate mz_expr

Source
Expand description

Core expression language.

Modules§

canonicalize
Utility functions to transform parts of a single MirRelationExpr into canonical form.
explain
EXPLAIN support for structures defined in this crate.
func
id 🔒
interpret 🔒
like_pattern
linear 🔒
relation 🔒
row
scalar 🔒
virtual_syntax
A set of virtual nodes that are used to recover some high-level concepts that are desugared to non-trival terms in some IRs.
visit
Visitor support for recursive data types.

Structs§

AggregateExpr
Describes an aggregation expression.
AnalyzedRegex
AnalyzedRegexOpts
CaptureGroupDesc
ColumnOrder
Specification for an ordering by a column.
ColumnSpec
ColumnSpecs
An interpreter that:
FilterCharacteristics
Filter characteristics that are used for ordering join inputs. This can be created for a Vec<MirScalarExpr>, which represents an AND of predicates.
JoinInputMapper
Any column in a join expression exists in two contexts:
LetRecLimit
Maximum iterations for a LetRec.
LocalId
The identifier for a local component of a dataflow.
MapFilterProject
A compound operator that can be applied row-by-row.
MfpPlan
Predicates partitioned into temporal and non-temporal.
NaiveOneByOneAggr
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 eval 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.)
OptimizedMirRelationExpr
A MirRelationExpr that claims to have been optimized, e.g., by an transform::Optimizer.
ProtoAggregateExpr
ProtoAggregateFunc
ProtoColumnOrder
ProtoDomainLimit
ProtoEvalError
ProtoId
ProtoLocalId
ProtoMapFilterProject
ProtoMfpPlan
ProtoMirScalarExpr
ProtoRowSetFinishing
ProtoSafeMfpPlan
ProtoTableFunc
ResultSpec
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!)
RowSetFinishing
Instructions for finishing the result of a query.
SafeMfpPlan
A wrapper type which indicates it is safe to simply evaluate all expressions.
SourceInstanceId
Unique identifier for an instantiation of a source.
Trace
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.
WindowFrame
Describe a window frame, e.g. RANGE UNBOUNDED PRECEDING or ROWS BETWEEN 5 PRECEDING AND CURRENT ROW.

Enums§

AccessStrategy
For a global Get, this indicates whether we are going to read from Persist or from an index. (See comment in MirRelationExpr::Get.)
AggregateFunc
BinaryFunc
EvalError
Id
An opaque identifier for a dataflow component. In other words, identifies the target of a MirRelationExpr::Get.
JoinImplementation
Describe a join implementation in dataflow.
JoinInputCharacteristics
Characteristics of a join order candidate collection.
LagLeadType
Identify whether the given aggregate function is Lag or Lead, since they share implementations.
MirRelationExpr
An abstract syntax tree which defines a collection.
MirScalarExpr
TableFunc
TraceSummary
A summary type for the Trace interpreter.
UnaryFunc
UnmaterializableFunc
VariadicFunc
WindowFrameBound
Specifies WindowFrame’s start_bound and end_bound
WindowFrameUnits
Describe how frame bounds are interpreted

Constants§

RECURSION_LIMIT
A recursion limit to be used for stack-safe traversals of MirRelationExpr trees.

Traits§

CollectionPlan
A trait for types that describe how to build a collection.
Interpreter
Abstract interpretation for MirScalarExpr.
OneByOneAggr
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_columns
Compare left and right using order. If that doesn’t produce a strict ordering, call tiebreaker.
join_permutations
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.
memoize_expr
Recursively memoize parts of expr, storing those parts in memoized_parts.
non_nullable_columns
Augment non-nullability of columns, by observing either
order_aggregate_datums_exported_for_benchmarking
Assuming datums is a List, sort them by the 2nd through Nth elements corresponding to order_by, then return the 1st element.
permutation_for_arrangement
Derive supporting logic to support transforming rows to (key, val) pairs, and back again.