Some comments: I like the idea to have annotations which tell you what you can use and what you can't. As an additional layer of safety, it would be great if I could install a dialect "monitor" which throws exceptions when I call these functions (the error messages will probably be better than the SYNTAX ERROR that you will get from the database - especially in the case of Oracle which frowns upon helpful error messages).
Something like this: 1. Get connection 2. Wrap connection with a "jOOQ dialect driver" 3. The driver is used and has lots of functions like isRollupSupported() that throw an exception: "ROLLUP is not supported for ..." (Note: I had no time to look at the source code of jOOQ, but I think you get the idea). I think marking the methods deprecated works but I don't like to "abuse" an existing annotation for a new case. Unfortunately, adding project specific annotations to the Java compiler isn't as easy as it might be. Maybe consider to have a look at Project Lombok for some ideas what is possible and how "abusive" it is. As for generating the code with a Maven plugin: Instead of processing the jOOQ source code itself, wouldn't it be better to annotate/modify the generated table/model code? So that I can only see the methods which are available for the databases that I want to support?
