Crate mz_repr

source ·
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 a Datum horizontally, and has features for efficiently doing so.
  • RelationDesc describes what it takes to extend a Row vertically, and corresponds most closely to what is returned from querying our dataflows






  • Whether to encode rows with variable-length integers and timestamps. This is thought to incur a slight (a few percent) regression in CPU efficiency, in exchange for improved memory usage.



  • Generate an arbitrary PropDatum.
  • 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.
  • Number of bytes required by the datum. This is used to optimistically pre-allocate buffers for packing rows.
  • Number of bytes required by the datum, given the value of VARIABLE_LENGTH_ENCODING.
  • Number of bytes required by a sequence of datums.
  • Number of bytes required by a sequence of datums.
  • This returns true if we don’t care to keep stats for this column type (for now). We’ll have to remove this if/when we start actually using the schema’d part encoding.
  • Return the number of bytes these Datums would use if packed as a Row.

Type Definitions

  • System-wide record count difference type.