THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
This KIP won't change any public interfaces. However, It will change the behavior of the following operators:
- left KStream-Ktable/GlobalTablejoin Kstream-Kstream
- outer joinleft/outer Kstream-Kstream
- left-foreign-key join Ktable-Ktable - allow foreign key to be null.
- left join KStream-Ktable/GlobalTable
Proposed Changes
- left join Kstream-Kstream: no longer drop left records with null-key and call ValueJoiner with 'null' for right value.
- outer join Kstream-Kstream: no longer drop left/right records with null-key and call ValueJoiner with 'null' for right/left value.
- left-foreign-key join Ktable-Ktable: no longer drop left records with null-foreign-key returned by the ForeignKeyExtractor and call ValueJoiner with 'null' for right value.
- left join KStream-Ktable/GlobalTable: no longer drop left records with null-key and call ValueJoiner with 'null' for right value.
...
Users who want to keep the current behavior can prepend a .filter() operator to the aforementioned operators and filter accordingly.
E.g.
//
...
new if old behavior is needed
leftStream.filter((key, value) -> key != null)
...
.leftJoin(rightStream, (lv, rv) -> join(lv, rv), windows);
Why not make this change opt in?
...