jvm.chisel.db.pipeline
Composed datapath for a placed logical plan: one Chisel module that chains the jvm.chisel.db operator fragments over the plan’s node DAG.
This is the physical half of the scheduler split (jvm.chisel.db.schedule is the logical/placement half). Plans are normalized by schedule/plan->nodes: a linear :stages plan is a node chain; a :nodes plan may fork (e.g. a join-build branch and a join-probe branch reading different sources).
values ──▶ scan/bloom (mask) ──▶ join-build (table) ─┐ values2 ─▶ scan (mask) ──▶ join-probe (mask) ◀────────┘ ──▶ reduce (scalar)
The composition idiom matches chisel.examples.db-primitives/scan-count-module: one module, fragments threaded in a let, no module-instance nesting.
IO (assembled from the nodes present): inputs : per source i: values/validMask for i = 0 (legacy names), else values2/validMask2, values3/validMask3, …; one constant c0..cK per scan predicate (global across scan nodes), bits (UInt M) when a bloom node is present. outputs: matchMask (UInt lanes) always, bucketslanes(UInt logB) when a :hash node is present, result (UInt ow) when a :reduce node is present.
pipeline-module
(pipeline-module {:keys [width lanes name], :as plan, :or {name "DbPipeline"}})Build the composed module. opts = the plan map (see jvm.chisel.db.schedule for the node grammar) plus :name.
pipeline-ref
(pipeline-ref plan input)Reference for the composed pipeline: delegates to schedule/run-plan.