Plans the fix: each column both inputs have, in any case, but the join doesn't take as the same key on both sides becomes c_1 on the Left and c_2 on the Right, each side's own name renamed (ID_1, id_2, PLAN §11.14), or c_1_2, c_1_3… when a name is taken, in any case, in either input or already given by this fix (all Left names first); a key both sides give as one column keeps its name. A name is cut to 128 code points. The key lists are rewritten through the same renames, so a shared column that is a key at another position, or crossed keys, still join. Gives undefined when nothing is shared, or a name would not be a valid column name.