I would actually expect an OR predicate to perform worse, no matter what the DBMS, actually:
An optimised JOIN operation would - at least normally - rely on a physical design (indexes in other databases, projection design in Vertica) that could support this join - at least partly.
But this goes out the window as soon as you apply any expression on either of the join functions before comparing - and that includes CASTs, functions, math operations, and, for that matter, logical operations like OR.
I have not found, so far, any situation with operations on join operands before applying the comparison, where the risk of confusing the optimiser into choosing an even worse plan is not far too high.
Hence, I would expect the optimiser to take a less than optimal plan....
@Hanmyo - can you find a way to run an explain on the query you intend - once with, once without the OR in the predicate, so we can get the differences illustrated?
Cheers - Marco