...
The workflow of LHS-generated changes to outputs is shown below. Each step is cumulative with the previous step. Only LEFT and INNER joins are supported, and their outputs are shown below.
ts |
| LHS-Stream (K, extracted-FK) | RHS-Stream State (FK,V) | Inner Join Output | Left Join Output | Execute Join Logic? |
---|
Notes | new event to LHS | (k,1) | (1,foo) | (k,1,foo) | (k,1,foo) | Inner/Left |
Normal fk-join induced by LHS event | 2 | Publish update to eventby changing 1) → (k,2) | (1,foo) | (k,null) | (k,2,null) | LEFT
|
Must indicate a delete because there is currently no (fk,value) in RHS with key=2, and (k,3 | Change LHS fk | (k,3) | (1,foo) |
is no longer valid output.3Publish update to event by changing fk | 2) → (k,3)(1,foo) | (k,Ideally would not publish a delete with Inner Join, but we do not maintain sufficient state to know that the (k,2) update resulted in a null output and we don't need to do it again. | a value to -0entity | - | (1,foo) (3,bar) | (k,3,bar) | (k,3,bar) | Inner/ |
LeftPerforms prefix scan join3) → (k,null) | (1,foo) (3,bar) | (k,null) | (k,null,null) | LEFT |
Propagate null/delete through the sub-topology |
6 | Publish original event again | (k, |
null) → (k,1) | (1,foo) (3,bar) | (k,1,foo) | (k,1,foo) | Inner/Left |
Normal fk-join induced by LHS event | 7 | Publish event to LHS | (q,10) | (1,foo) (3,bar) |
NothingSignificant difference between Inner and Outer | a value to -1entity | - | (1,foo) (3,bar) (q,baz) | (q,10,baz) | (q,10,baz) | Inner/Left |
Normal fk-join induced by LHS event
Anchor |
---|
| oldJoinSemantics |
---|
| oldJoinSemantics |
---|
|
...