Versions Compared

Key

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

...

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?

...