Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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 OutputLeft Join OutputExecute
Join Logic?
Notes
1Publish
new
event to LHS(k,1)(1,foo)(k,1,foo)(k,1,foo)Inner/Left
Normal fk-join induced by LHS event2
2Change LHS
Publish update to event
by changing
fk(k,
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,
3Change LHS fk(k,3)(1,foo)
is no longer valid output.3

Publish update to event
by changing fk

(k,
2) → (k,3)(1,foo)(k,
null)(k,3,null)LEFT
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.
4Publish
a value to
RHS
-0
entity-

(1,foo)
(3,bar)

(k,3,bar)(k,3,bar)Inner/
LeftPerforms prefix scan join
Left
5Delete k(k,
3) → (k,
null)

(1,foo)
(3,bar)

(k,null)(k,null,null)LEFT
Propagate null/delete through the sub-topology
6Publish 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
7Publish event to LHS(q,10)

(1,foo)
(3,bar)

Nothing
-(q,null,10)LEFT
Significant difference between Inner and Outer
8Publish
a value to
RHS
-1
entity-

(1,foo)
(3,bar)
(q,baz)

(q,10,baz)(q,10,baz)Inner/Left
Normal fk-join induced by LHS event


Anchor
oldJoinSemantics
oldJoinSemantics

...