cool, I got it... sorry was thinking that the transformer's 'setColumns' could have been called at runtime (post-init, while determining what to put in the map payload for the transformed message), but that is not the case... if defining a stream where you want to use the jdbc sink for actual columns you would specify --columnNames=name,age,occupation so any that are not provided by a Message are null.

We may still want to consider the ideas expressed here at some point. Then even the same stream could handle heterogenous data and in fact we could have 'tablename' resolve via expression that is based upon each Message as well.