Hi Lukas
Thanks for investigating further.
For what it's worth, it actually seems like the
IGNORECASE setting makes no difference here; it's
only
MODE=MySQL that causes the case to be different.
Running the query for constraints with case-sensitivity on (H2 default) produces the following results:
URL:
jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;MODE=MySQLOutputs:
public,consultant,CONSULTANTID,constraint_1URL:
jdbc:h2:mem:test;DB_CLOSE_DELAY=-1Outputs:
PUBLIC,CONSULTANT,CONSULTANTID,CONSTRAINT_1According do the H2 documentation about MySQL Compatibility Mode, The fact that
"Meta data calls return identifiers in lower case" is by design:
http://h2database.com/html/features.html#compatibilityTherefore, it seems to me that jOOQ cannot assume the case of meta data when using H2 because, as far as I can see, there's no way of jOOQ's code generator knowing whether or not the underlying database is in compatibility mode. In fact, even if you could determine compatibility mode, it's probably not wise to dabble in such a thing. If the column list does disappear and a better way to join indexes and constraints is established then this might solve the problem but, if not, would it still not be reasonable to use case-insensitivity for code generation against H2?
Cheers,