Module mz_join_core

Source
Expand description

A fork of DD’s JoinCore::join_core.

Currently, compute rendering knows two implementations for linear joins:

  • Differential’s JoinCore::join_core
  • A Materialize fork thereof, called mz_join_core

mz_join_core exists to solve a responsiveness problem with the DD implementation. DD’s join is only able to yield between keys. When computing a large cross-join or a highly skewed join, this can result in loss of interactivity when the join operator refuses to yield control for multiple seconds or longer, which in turn causes degraded user experience. mz_join_core resolves the loss-of-interactivity issue by also yielding within keys.

For the moment, we keep both implementations around, selectable through feature flags. Eventually, we hope that mz_join_core proves itself sufficiently to become the only join implementation.

Structs§

EditList 🔒
An accumulation of (value, time, diff) updates.
Joiner 🔒
Type that knows how to perform the core join logic.
ValueHistory 🔒
A history for replaying updates in time order.
Work 🔒
Work collected by the join operator.

Functions§

mz_join_core 🔒
Joins two arranged collections with the same key type.