Repository navigation
Commit 6db526b
DDIR: join fragments,
A join fragment is a pipeline source made of atoms joined by `*`.
Each atom names an existing binding and gives a pattern for its key and its value.
Shared variables become join keys, and literals, variants and repeated variables become tests.
The rows are every bound variable once, in order of first appearance, as the key, with a unit value; a following `map` builds the head.
The expansion is fixed by the text, with no planner.
Atoms join in written order, each against its binding's own arrangement.
A later atom's key must be built from bound variables, so a test never forms a new arrangement.
Key variables are read from the join's key slot, and the first atom joins directly when its key is the next key.
Everything after the last join, the tests and the output layout, is one `flatmap` that returns zero or one rows.
A variant's payload is read from its lane with `enlist unweave`, and literal and equality tests keep or drop the row with a list `filter`, so only the rows kept are built.
Dropping dead bindings is left to the projection pass.
Co-Authored-By: GPT-6 Sol (Codex) <noreply@openai.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H6wB4H99TLw4tqu4x48pXLa(x, y) * b(y, z), with one flatmap after the joins (spike)1 parent 8b03a29 commit 6db526b
6 files changed
Lines changed: 727 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
196 | 196 | | |
197 | 197 | | |
198 | 198 | | |
| 199 | + | |
199 | 200 | | |
200 | 201 | | |
201 | 202 | | |
| |||
245 | 246 | | |
246 | 247 | | |
247 | 248 | | |
| 249 | + | |
248 | 250 | | |
249 | 251 | | |
250 | 252 | | |
| |||
303 | 305 | | |
304 | 306 | | |
305 | 307 | | |
| 308 | + | |
306 | 309 | | |
307 | 310 | | |
308 | 311 | | |
| |||
381 | 384 | | |
382 | 385 | | |
383 | 386 | | |
| 387 | + | |
384 | 388 | | |
385 | 389 | | |
386 | 390 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
| 56 | + | |
| 57 | + | |
56 | 58 | | |
57 | 59 | | |
58 | 60 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
65 | 79 | | |
66 | 80 | | |
67 | 81 | | |
| |||
117 | 131 | | |
118 | 132 | | |
119 | 133 | | |
| 134 | + | |
| 135 | + | |
120 | 136 | | |
121 | 137 | | |
122 | 138 | | |
| |||
126 | 142 | | |
127 | 143 | | |
128 | 144 | | |
129 | | - | |
| 145 | + | |
130 | 146 | | |
131 | 147 | | |
132 | 148 | | |
| |||
266 | 282 | | |
267 | 283 | | |
268 | 284 | | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
269 | 288 | | |
270 | 289 | | |
271 | 290 | | |
| |||
546 | 565 | | |
547 | 566 | | |
548 | 567 | | |
549 | | - | |
| 568 | + | |
550 | 569 | | |
551 | 570 | | |
552 | 571 | | |
553 | 572 | | |
554 | | - | |
555 | | - | |
| 573 | + | |
| 574 | + | |
556 | 575 | | |
557 | 576 | | |
558 | 577 | | |
| |||
564 | 583 | | |
565 | 584 | | |
566 | 585 | | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
567 | 591 | | |
568 | 592 | | |
569 | 593 | | |
| |||
0 commit comments