Hi Daniel,
Thanks for your message. From the top of my head, I'm not aware of any backwards incompatible changes in MySQL - although some of them may have slipped by us because MySQL has *a lot* of settings that influence how SQL is parsed (such as e.g. lower_case_table_names), so I'm not 100% certain.
Looking at the code base of the commercial distribution, I can see that there are some newer syntaxes that are being generated e.g. for:
- Derived column lists (when renaming tables and columns in one go, e.g. SELECT a, b FROM t AS t (a, b) (check
https://www.jooq.org/translate/ to see the difference). This can impact a few emulations as derived column lists are often used in jOOQ's internals
- SELECT .. FOR SHARE is generated differently
- VALUES clause support has changed
More improvements are certainly coming, as MySQL is adding better syntax support. For example, we'd like to stop rendering FROM DUAL in MySQL, which our integration tests indicate is never needed in MySQL 8, but occasionally is in MySQL 5.7:
https://github.com/jOOQ/jOOQ/issues/7421
As mentioned in that linked issue, we do recommend using the jOOQ Professional Edition with older RDBMS versions as we will continue to guarantee and integration test jOOQ on that database version. There may be more subtle changes in the future where we want to be able to profit from improved syntax and features in the generic SQLDialect.MYSQL, continuing to render the old syntax only in versioned dialects of the jOOQ Professional Edition.
I hope this helps,
Lukas