package granary

  1. Overview
  2. Docs
Pure-OCaml SQL engine

Install

dune-project
 Dependency

Authors

Maintainers

Sources

0.0.3.tar.gz
sha256=8b18780ea373be48301d9f333925860a2f9110fc0ac28684295118d72b65a67e
sha512=25ca3c9c5e2b528704a542502e0f37dc33ba003f65622d969b8c2b800778585f8ef0cf89b36e6679832e3993e8303aecddfc662742baf7044d6afe4a796b8f11

doc/granary.ivm/Granary_ivm/Join/index.html

Module Granary_ivm.JoinSource

Incremental equi-join over Z-sets (#417 Phase 2).

Join is bilinear, so its delta is Δ(L ⋈ R) = ΔL ⋈ R + L ⋈ ΔR + ΔL ⋈ ΔR. An operator value maintains the integrated inputs L and R (indexed by join key) and, given a delta on either side, returns the matching output delta and folds it into a materialized output — so the join is kept current in time proportional to the change, not the size of L and R.

Output carries bag multiplicity: a matched pair contributes the product of its input weights. Set / SELECT DISTINCT semantics, if wanted, are a Zset.S.distinct applied to the output, not built in here.

Sourcemodule type SPEC = sig ... end

What to join: the two input and one output Z-set domains, the join key, and how to extract keys / combine a matched pair into an output element.

Sourcemodule Make (S : SPEC) : sig ... end

Make (S) builds an incremental equi-join operator for spec S.