I don't really like this function name as it only implies INNER > LOUTER (calling promoting throughout the patch).

Maybe something like `update|sync_join_types`?