I was wondering what is being done for case-insensitive comparisons. Also wanted to propose an implementation option, which would be to allow indexes to be created on UPPER or LOWER. As long as I had an index on UPPER or LOWER, I could do this efficiently:
WHERE UPPER(T1.lastname) = UPPER(T2.lastname)
Is that a totally crazy suggestion, to allow indexes to be created on UPPER and LOWER? Maybe this is easy to implement.