removeKeyMatches Merge Node returns nothing if the comparison node is empty

Describe the issue/error/question

In theory, you’d expect that if there is no comparison input (aka input 2) then the data in input 1 would simply pass through, but this is not the case

What is the error message (if any)?

No error message, remove key matches is seemingly working as it was designed, so this is really about a design decision

Please share the workflow

simply plug in an input that returns no data (for example a keepKeyMatches Merge Node with no matches) and then an input that has data into a removeKeyMatches Merge Node

Share the output returned by the last node

Nothing!

Information on your n8n setup

  • n8n version:0.148.0
  • Database you’re using: SQLite
  • Running n8n with the execution process Interval
  • Running n8n via n8n.cloud

This is something I also have a hard time with.
It’s a consistent behavior of the Merge node. Both inputs must have data in order for the node to work at all.

For me this requirement really limits my workflows as if any of the merge inputs is conditional I can’t be sure the workflow will work correctly and I am yet to find a convenient workaround.

Also reading this old post from @jan it may not have always been like this:

Yes agree, both behaviors could be valid and correct depending on the use case. So there is no right or wrong. n8n behaves currently the “wrong” way for you. Sadly is supporting also the other “way” not simple as that is in the core of n8n and would so probably be a big change (and also one that could potentially cause some problems if implemented not perfectly).

You can create a Feature Request for that but honestly do not expect that to be able to be implemented anytime soon.

Thank you @jan

I have an idea and I’m brainstorming here but how about an option to pass through the data of a single Merge node input at the condition that there are no other nodes running.
I believe there there is already such a functionality when I execute other workflows - it returns data only when the final node finished executing.
For example if an append Merge node has data from a single input instead of stopping the node will pass the data forward.