Expand description
Fundamental data representation.
This module contains the types for representing data in Materialize that all layers of the stack can understand. Think of it as the lingua franca: individual layers may use different representations internally, but they all agree to use this representation at their boundaries.
- The core value type is the
Datum
enum, which represents a literal value. Row
extends aDatum
horizontally, and has features for efficiently doing so.RelationDesc
describes what it takes to extend aRow
vertically, and corresponds most closely to what is returned from querying our dataflows
Re-exports§
pub use crate::catalog_item_id::CatalogItemId;
pub use crate::global_id::GlobalId;
pub use crate::timestamp::Timestamp;
pub use crate::timestamp::TimestampManipulation;
Modules§
- adt
- Abstract data types.
- antichain
- bytes
- catalog_
item_ id - datum_
vec 🔒 - A re-useable vector of
Datum
with varying lifetimes. - diff 🔒
- explain
- A set of traits for modeling things that can be explained by a
SQL
EXPLAIN
statement. - fixed_
length - Provides abstractions for types that can be converted into
Datum
iterators.Row
is the most obvious implementor, but other trace types that may use more advanced representations only need to commit to implementing these traits. - global_
id - namespaces
- Namespace constants to share between high- and low-levels of the system.
- network_
policy_ id - optimize
- Facilities for defining optimizer feature flags.
- refresh_
schedule - relation 🔒
- relation_
and_ 🔒scalar - role_id
- row 🔒
- scalar 🔒
- stats
- Persist Stats for non-primitive types.
- strconv
- Routines for converting datum values to and from their string representation.
- timestamp
- url
- Custom Protobuf types for the
url
crate. - user
Structs§
- Array
Rust Type - A new type that wraps a
Vec
that is used to differentiate the targetDatum
between Arrays and Lists. The target of this type is Array. - Column
Index - Stable index of a column in a
RelationDesc
. - Column
Name - The name of a column in a
RelationDesc
. - Column
Type - The type of a
Datum
. - Datum
List - A sequence of Datums
- Datum
Map - A mapping from string keys to Datums
- Datum
Vec - A re-useable vector of
Datum
with no particular lifetime. - Datum
VecBorrow - A borrowed allocation of
Datum
with a specific lifetime. - NotNull
Violation - Expression violated not-null constraint on named column
- Prop
Array - Prop
Dict - Prop
List - Proto
Column Name - Proto
Column Type - Proto
Numeric - See [dec::to_packed_bcd] and http://speleotrove.com/decimal/dnpack.html for more information on this format.
- Proto
Relation Desc - Proto
Relation Type - Proto
Row - Proto
Scalar Type - Relation
Desc - A description of the shape of a relation.
- Relation
Desc Builder - A builder for a
RelationDesc
. - Relation
Type - The type of a relation.
- Relation
Version - The version a given column was added at.
- Row
- A packed representation for
Datum
s. - RowArena
RowArena
is used to hold on to temporaryRow
s for functions likeeval
that need to create complexDatum
s but don’t have aRow
to put them in yet.- RowColumnar
Decoder - A
ColumnDecoder
for aRow
. - RowColumnar
Encoder - A
ColumnEncoder
for aRow
. - RowPacker
- Packs datums into a
Row
. - RowRef
- A contiguous slice of bytes that are row data.
- Shared
Row - A thread-local row, which can be borrowed and returned.
- Versioned
Relation Desc - A wrapper around
RelationDesc
that provides an interface for adding columns and generating new versions.
Enums§
- Datum
- A single value.
- Prop
Datum - A mirror type for
Datum
that can be proptest-generated. - Prop
Relation Desc Diff - Diffs that can be generated proptest and applied to a
RelationDesc
to exercise schema migrations. - Relation
Version Selector - Describes a
RelationDesc
at a specific version of aVersionedRelationDesc
. - Scalar
Base Type - Scalar
Type - The type of a
Datum
.
Traits§
- AsColumn
Type - Types that implement this trait can be stored in an SQL column with the specified ColumnType
- Datum
Type - A bridge between native Rust types and SQL runtime types represented in Datums
- Into
RowIterator - Convert a type into a
RowIterator
. - RowIterator
- An iterator that can borrow from
self
and yieldRowRef
s.
Functions§
- arb_
datum - Generate an arbitrary
PropDatum
. - arb_
datum_ for_ column - Generates an arbitrary
PropDatum
for the providedColumnType
. - arb_
datum_ for_ scalar - Generates an arbitrary
PropDatum
for the providedScalarType
. - arb_
range_ type - arb_
relation_ desc_ diff - Generates a set of
PropRelationDescDiff
s based on some sourceRelationDesc
. - arb_
relation_ desc_ projection - Returns a
Strategy
that generates a projection of the providedRelationDesc
. - arb_
row_ for_ relation - Returns a
Strategy
that yields arbitraryRow
s for the providedRelationDesc
. - datum_
list_ size - Number of bytes required by a list of datums. This computes the size that would be required if the given datums were packed into a list.
- datum_
size - Number of bytes required by the datum. This is used to optimistically pre-allocate buffers for packing rows.
- datums_
size - Number of bytes required by a sequence of datums.
- preserves_
order - Returns true iff the ordering of the “raw” and Persist-encoded versions of this columm would match:
ie.
sort(encode(column)) == encode(sort(column))
. This encoding has been designed so that this is true for many types. - read_
datum ⚠ - Read a datum starting at byte
offset
. - row_
size - Return the number of bytes these Datums would use if packed as a Row.
Type Aliases§
- Diff
- System-wide record count difference type.