I was caught by surprise to notice the the toEmpty($RDAP Server$) still returns missing / null and not an empty cell. Call me a liar but I believe to recall, since I had to use that many times to ensure handling missing doesn’t interrupt the workflow execution, that it worked before.
Back testing things by manually enforcing empty using the Rule Engine we see the following
It had me puzzled too @mwiegand but I tried on 4.7.8 and the behaviour is the same.
But I think you get the result you are wanting if you tick the box on the bottom right. In my view it has a slightly misleading name “Insert missing as Null” which perhaps would be better worded as “treat missing as Null” because without it checked, a function acting on Missing returns Missing regardless. With it selected, toEmpty() correctly returns an empty string when acting on a Missing value.
It’s an interesting distinction since elsewhere in KNIME Missing and Null are treated synonymously, and there doesn’t seem to be a way of representing Null in a table other than as Missing. If I output a null from a java snippet for example, what appears is Missing.
I wonder if an earlier version of String Manipulation didn’t have that option, and behaved differently, perhaps as you remember…
so it would appear that the intention is that with it unchecked, Missing IN => Missing OUT no matter what function/expression you use, but that doesn’t seem right either, because if I have a column containing Missing values, and I tell KNIME to replace it with string("x")
it gets populated with x even though the input data is Missing, so it clearly IS evaluating the expression!