From a conversation with Andrus, the following problem was identified: users using non-default collations *_bin or *_cs will have their behaviour changed by this change
As it seems that any solution here is going to be a compromise, I guess it has to be implemented as a flag in MySQLAdapter that defines one or the other strategy. AutoAdapter can set this flag based on the database default collation:
==> show variables like "collation_database";
If a user needs different behavior, they will have to set it manually per adapter.
Alternatively, Cayenne modeler will need to be taught about collations so they can be stored against the dbcolumn. I don't think this is a MySQL specific problem, since collation affects the behaviour of other databases. It is just that MySQL doesn't give us a workaround with being able to create a functional index on UPPER(name).
For what it is worth, we have this identical problem in WebObjects and need to find a similar fix there.