Expand description
A fork of DD’s JoinCore::join_core
.
Currently, compute rendering knows three implementations for linear joins:
- Differential’s
JoinCore::join_core
- A Materialize fork thereof, called
mz_join_core
- Another Materialize fork thereof, called
mz_join_core_v2
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 yielding issue but compromises by being quadratic over the number
of distinct times in the input. mz_join_core_v2
is an attempt to replace the quadratic
behavior by using a linear scan through times, copied from the DD implementation.
For the moment, we keep all three implementations around, selectable through feature flags.
Eventually, we hope that mz_join_core_v2
proves itself sufficiently to become the only join
implementation.
Structs§
- Edit
List 🔒 - An accumulation of (value, time, diff) updates.
- Joiner 🔒
- Type that knows how to perform the core join logic.
- Value
History 🔒 - 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.