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?

Reply via email to