[ 
https://issues.apache.org/jira/browse/KAFKA-14748?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17694229#comment-17694229
 ] 

Matthias J. Sax commented on KAFKA-14748:
-----------------------------------------

{quote}Hence, adding a `filter` operator after the `join` operator alone for 
`<K, join(V, null)>` cannot preserve the old behavior if a developer really 
wants that..
{quote}
Well, user could have a filter before the join, that leverages the 
key-extractor and drop the record if the key-extractor returns `null`?

About the question, "do we need to distinguish both cases": I think in the 
past, we wanted to distinguish both because we had the "eager emit" 
implementation for stream-stream joins, which could lead to "spurious 
duplicates" that one might want to filter downstream. Given, the new 
implementation of "emit-on-window-close", this issue goes away, and thus, I 
don't think we need to be able to distinguish both any longer?

I actually also believe, that "left join because key-extractor returns null" 
and "left join because no right hand side value found" is actually the same 
anyway?

> Relax non-null FK left-join requirement
> ---------------------------------------
>
>                 Key: KAFKA-14748
>                 URL: https://issues.apache.org/jira/browse/KAFKA-14748
>             Project: Kafka
>          Issue Type: Improvement
>          Components: streams
>            Reporter: Matthias J. Sax
>            Priority: Major
>
> Kafka Streams enforces a strict non-null-key policy in the DSL across all 
> key-dependent operations (like aggregations and joins).
> This also applies to FK-joins, in particular to the ForeignKeyExtractor. If 
> it returns `null`, it's treated as invalid. For left-joins, it might make 
> sense to still accept a `null`, and add the left-hand record with an empty 
> right-hand-side to the result.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to