bug(StreamHashJoin): redundant/unexpected output ops for update #14835
Labels
component/streaming
Stream processing related issue.
no-issue-activity
type/bug
Something isn't working
Describe the bug
Refer to repro steps and expected behavior.
Error message/log
No response
To Reproduce
Add
tracing::warn!("proj-input: {}", chunk.to_pretty_with_schema(&sch));
in phase 1Message::Chunk
.Also
let sch = input.schema().clone();
beforeinner.execute()
.(Are there simpler ways to inspect on input/output chunks of a specific executor?)
risingwave/src/stream/src/executor/project.rs
Lines 182 to 189 in 7e937c2
The input chunk of project executor, which is the output chunk of join executor, appears as following in the added log:
Note the above uses a left outer join. If it was inner join, the chunks logged would be:
Expected behavior
By intuition, the ideal output of join executor in this case is (regardless of left outer or inner):
Semantically, they look equivalent and we may think it has little impact on downstream processing. However, when sinking with upsert behavior, it results in unnecessary deletion where a single insert in sufficient.
How did you deploy RisingWave?
./risedev playground
The version of RisingWave
main (f16a623)
Additional context
Derived from a customer reported issue about upsert sink containing unexpected tombstones (i.e. deletions), even when derived upstream key matches with specified downstream key. cc @tabVersion @st1page
The text was updated successfully, but these errors were encountered: