Joins with different typed join keys turn out to be pretty broken right now and I'm not sure what the best approach is to fix it.
The main issue is that if your left_on and right_on values are different types, that will cause problems with various things in the join, such as hash bucketing.
My initial solution was to put a cast on all of the expressions if they needed one, but that causes issues with our logic around determining common join keys, since a col(a) may be turned into a col(a).cast(int64), which is no longer considered a possible common join key. An alternative I've considered is to insert projects before the join to do the casting, but that seems a bit messy.
Wondering if anyone had any other ideas about how to approach this